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] - chore(*): review some lemmas about injectivity of coercions #4711
Conversation
Should we define a (Aside, this could also enable goofy notation, like: infixr ` =. `:40 := bundled_hom.congr_fun
infixl ` .= `:40 := bundled_hom.congr_arg
example (x y z : M) (f g : M →* N) : true :=
begin
have Hfg : f = g := sorry,
have Hxy : x = y := sorry,
have foo := f .= Hxy,
have bar := Hfg =. x,
-- from the goal state:
-- foo: ⇑f x = ⇑f y
-- bar: ⇑f x = ⇑g x
end ) |
I don't think that Lean 3 is so good with substructures. |
If |
|
Category theory bundled hom won't work for maps between types in different universes |
And I don't know how to write a |
Hmm, good point. Stupid universes 🙃 😀 |
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.
Thanks 🎉
bors merge
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`.
Pull request successfully merged into master. Build succeeded: |
API changes:
linear_map.coe_fn_congr
toprotected linear_map.congr_arg
;linear_map.lcongr_fun
toprotected linear_map.congr_fun
;enorm.coe_fn_injective
toenorm.injective_coe_fn
, addenorm.coe_inj
;equiv.coe_fn_injective
toequiv.injective_coe_fn
,reformulate in terms of
function.injective
;equiv.coe_inj
;affine_map.injective_coe_fn
,protected affine_map.congr_arg
,and
protected affine_map.congr_fun
;linear_equiv.to_equiv_injective
tolinear_equiv.injective_to_equiv
, addlinear_equiv.to_equiv_inj
;linear_equiv.eq_of_linear_map_eq
tolinear_equiv.injective_to_linear_map
, formulate asinjective coe
;linear_equiv.to_linear_map_inj
;outer_measure.coe_fn_injective
toouter_measure.injective_coe_fn
;rel_iso.to_equiv_injective
torel_iso.injective_to_equiv
;rel_iso.coe_fn_injective
torel_iso.injective_coe_fn
;continuous_linear_map.coe_fn_injective
toinjective_coe_fn
.