Commit 2022-01-16 13:30 02a4775a
View on Github →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
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.