New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Merged by Bors] - refactor(algebra/hom/group): generalize a few lemmas to monoid_hom_class
#13447
Conversation
monoid_hom.injective_iff
to monoid_hom_class
monoid_hom_class
test/import_order_timeout.lean
Outdated
add_monoid_hom.injective_iff f.to_add_monoid_hom | ||
injective_iff_map_eq_zero f.to_add_monoid_hom |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I changed this line of test/import_order_timeout
because it came up with grep. Let me know if that was bad.
|
||
include mM mN | ||
|
||
@[to_additive] | ||
lemma map_mul_eq_one (f : M →* N) {a b : M} (h : a * b = 1) : f a * f b = 1 := |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI: this already had a generalized version, and this namespaced one wasn't used anywhere besides the two lemmas below, so I removed it.
@@ -307,6 +307,11 @@ lemma map_div [group G] [group H] [monoid_hom_class F G H] | |||
(f : F) (x y : G) : f (x / y) = f x / f y := | |||
by rw [div_eq_mul_inv, div_eq_mul_inv, map_mul_inv] | |||
|
|||
@[to_additive] | |||
theorem map_div' [div_inv_monoid G] [div_inv_monoid H] [monoid_hom_class F G H] (f : F) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
moved/generalized from the namespaced version below.
@Vierkantor I'm pinging you because I thought you might appreciate an example of removal of code duplication made possible by the fruits of your labors. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
Can you please merge master to see if it still works? Thanks!
@riccardobrasca: done, it works. |
Thanks! bors merge |
…lass` (#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`.
Pull request successfully merged into master. Build succeeded: |
monoid_hom_class
monoid_hom_class
* origin/master: (394 commits) feat(data/set/[basic|prod]): make `×ˢ` bind more strongly, and define `mem.out` (#13422) feat(order/basic): Simple shortcut lemmas (#13421) chore(number_theory/dioph): Cleanup (#13403) feat(analysis/normed_space/exponential): ring homomorphisms are preserved by the exponential (#13402) feat(algebraic_geometry/projective_spectrum): degree zero part of a localized ring (#13398) feat(set_theory/cardinal): A set of cardinals is small iff it's bounded (#13373) feat(data/polynomial/{derivative, iterated_deriv}): reduce assumptions (#13368) feat(algebra/monoid_algebra/grading): Use the new graded_algebra API (#13360) feat(algebra/group/to_additive): let @[to_additive] mimic alias’s docstrings (#13330) feat(set_theory/cofinality): Basic fundamental sequences (#13326) feat(special_functions/pow): continuity of real to complex power (#13244) feat(group_theory/torsion): extension closedness, and torsion scalars in modules (#13172) feat(category_theory/path_category): canonical quotient of a path category (#13159) refactor(number_theory/padics/padic_norm): Switch nat and rat definitions (#12454) feat(analysis/normed): more lemmas about the sup norm on pi types and matrices (#13536) fix(category_theory/monoidal): improve hygiene in coherence tactic (#13507) feat(src/number_theory/cyclotomic/discriminant): add discr_prime_pow_ne_two (#13465) chore(algebra/group/type_tags): missing simp lemmas (#13553) feat(measure_theory): allow measurability to prove ae_strongly_measurable (#13427) refactor(algebra/hom/group): generalize a few lemmas to `monoid_hom_class` (#13447) chore(data/list/cycle): Add basic `simp` lemmas + minor golfing (#13533) feat(algebra/hom/non_unital_alg): introduce notation for non-unital algebra homomorphisms (#13470) chore(algebra/group/defs): Declare `field_simps` attribute earlier (#13543) feat(analysis/normed/normed_field): add `one_le_(nn)norm_one` for nontrivial normed rings (#13556) refactor(analysis/calculus/cont_diff): reorder the file (#13468) move(set_theory/*): Organize in folders (#13530) chore(number_theory/zsqrtd/basic): simplify le_total proof (#13555) feat(group_theory/perm/basic): Iterating a permutation is the same as taking a power (#13554) feat(data/real/sqrt): `sqrt x < y ↔ x < y^2` (#13546) feat(algebra/hom/group and *): introduce `mul_hom M N` notation `M →ₙ* N` (#13526) feat(group_theory/schreier): Schreier's lemma in terms of `group.fg` and `group.rank` (#13361) feat(linear_algebra/trace): dual_tensor_hom is an equivalence + basis-free characterization of the trace (#10372) feat(order/filter/basic): allow functions between different types in lemmas about [co]map by a constant function (#13542) feat(data/finset/basic): simp `to_finset_eq_empty` (#13531) feat(topology/algebra/algebra): ℚ-scalar multiplication is continuous (#13458) chore(model_theory/encoding): Improve the encoding of terms (#13532) feat(topology/separation): Finite sets in T2 spaces (#12845) feat(analysis/inner_product_space/gram_schmidt_ortho): Gram-Schmidt Orthogonalization and Orthonormalization (#12857) chore(algebra/big_operators/fin): golf finset.prod_range (#13535) chore(analysis/normed_space/star): make an argument explicit (#13523) feat(*): `op_op_op_comm` lemmas (#13528) chore(data/real/nnreal): add commuted version of `nnreal.mul_finset_sup` (#13512) chore(*/matrix): order `m` and `n` alphabetically (#13510) feat(analysis/calculus/specific_functions): trivial extra lemmas (#13516) feat(analysis): lemmas about nnnorm and nndist (#13498) feat(data/int/basic): add lemma `int.abs_le_one_iff` (#13513) feat(category_theory/limits): add characteristic predicate for zero objects (#13511) feat(order/filter/n_ary): Add lemma equating map₂ to map on the product (#13490) fix(analysis/locally_convex/balanced_hull_core): minimize import (#13450) feat(order/cover): define `wcovby` (#13424) ...
This generalizes a few lemmas to
monoid_hom_class
frommonoid_hom
. In particular,monoid_hom.injective_iff
has been generalized and renamed toinjective_iff_map_eq_one
.This also deletes
add_monoid_hom.injective_iff
,ring_hom.injective_iff
andalg_hom.injective_iff
. All of these are superseded by the generically applicableinjective_iff_map_eq_zero
.