Commit 2021-05-25 11:18 4abbe10d
View on Github →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_smulunits.smul_inv_smul→smul_inv_smulunits.smul_perm_hom,mul_action.to_perm→mul_action.to_perm_homunits.smul_perm→mul_action.to_permunits.smul_left_cancel→smul_left_cancelunits.smul_eq_iff_eq_inv_smul→smul_eq_iff_eq_inv_smulunits.smul_eq_zero→smul_eq_zero_iff_eq(to avoid clashing withsmul_eq_zero)units.smul_ne_zero→smul_ne_zero_iff_nehomeomorph.smul_of_unit→homeomorph.smul(the latter already existed, and the former was a special case)units.measurable_const_smul_iff→measurable_const_smul_iffunits.ae_measurable_const_smul_iff→ae_measurable_const_smul_iffThe new lemmas are:smul_eq_zero_iff_eq', agroup_with_zeroversion ofsmul_eq_zero_iff_eqsmul_ne_zero_iff_ne', agroup_with_zeroversion ofsmul_ne_zero_iff_neunits.neg_smul, a version ofneg_smulfor units. We don't currently have typeclasses aboutnegon objects without+. We also end up needing some new typeclass instances downstreamunits.measurable_spaceunits.has_measurable_smulunits.has_continuous_smulThis goes on to remove lots of coercions fromalternating_map,matrix.det, and some lie algebra stuff. This makes the theorem statement cleaner, but occasionally requires rewriting throughunits.smul_defto add or remove the coercion.