同値類上の関数としてのかけ算の順序問題

概要

順序のない集合に対してかけ算を定義すれば、かけ算の順序問題はなくなる

本文

kyasmt.hatenablog.com

前回の記事を書いたとき、「かけ算」を2引数関数だと考えていました。
Haskellのような記法を使うと、
{\it multiply}: {\it Num} \to {\it Num} \to {\it Num}

あるいは、直積型、組型(tuple) を使って

{\it multiply}: ({\it Num}, {\it Num}) \to {\it Num}

しかしかけ算を直積上の関数と考えても、(2,3)(3,2)は違う値ですから、2\times 33 \times 2は異なる式ということになります。

では、(2,3)(3,2)を同じものとみなす空間(たとえば、{\it NumNoOrderPair}とする)を考えたらどうでしょうか。

{\it multiply}: {\it NumNoOrderPair} \to {\it Num}

対の順序が逆なものを同値とみなす、すなわち

(a,b) \equiv (c,d) \Leftrightarrow (a=c \wedge b=d) \vee (a=d \wedge b=c)

という同値関係を考えると、 (2,3)\equiv(3,2)ですから、(2,3)という代表元に対して、\{(2,3),(3,2)\}という同値類が考えられます。

交換法則a\times b = b \times aが成り立つので、かけ算はこの同値類に対して定義することができます。

{\it multiply}\ (\{(2,3),(3,2)\}) = 6

2\times 3を、「(2,3)を代表元とする同値類に対して{\it multiply}を適用する」の略記と考えれば、2\times 33\times 2は同じ式ということになります。

この考え方は、3つ以上の数のかけ算に拡張できます。

かけ算には、交換法則に加えて結合法則が成立するので、どんな順番でかけ算をしても同じ結果になります。

かけ算は同じ数をかけることもあるので、たとえば2 \times 3 \times 4 \times 3は(2が1個、3が2個、4が1個)というものに対して積をとると考えます。(ここでも、2,3,4の順序が違っても同じものとみなします。)

2\times 33\times 2が同じ式だという主張をする人には、かけ算を、このような数の集まりに対する関数だととらえているのかもしれません。