Mathlib v3 is deprecated. Go to Mathlib v4

Commit 2022-07-21 13:52 8983bec7

View on Github →

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