bnovikov, ну Вы прямо меня смущаете, честное слово. Я даже готов заменить кошек на что-нибудь более топологичное

Не заменяйте. Я в топологии не разбираюсь.
На самом деле в том, что Вы делаете, есть один небольшой недостаток - неестественность. Вы имеете отображение

и хотите расширить его до операции

. Но тогда появляется отображение

, т.е. Вам нужно определять расстояние от кошки до 1, что, согласитесь, выглядит неэстетично.
Более серьезный аналог - умножение кольца на модуль,

. Попробуйте продолжить его до

!