@Anindya

From [#46](https://forum.azimuthproject.org/discussion/comment/18027/#Comment_18027):

> point taken re "let's not fool anyone into thinking every monoidal preorder needs to have \\(\otimes\\) be the join or meet" – one of the difficulties I have with monoidal categories is in grasping how we only care about the formal combinatory properties of the monoidal product, and not what it "actually is". So I tend to "reach" for familiar products, eg meet or cartesian or tensor, which can be misleading.

I don't know if you are a Haskell programmer, but [`Data.Monoid`](https://hackage.haskell.org/package/base-4.11.1.0/docs/Data-Monoid.html) has a lot of canonical monoids. It has instances for `[a]`, endomorphisms, `First a` and `Last a`. `First a` obeys \\(\forall x. x \neq I \implies x \otimes y = x\\), like you sketch above (but it doesn't have the order you prescribe).

There are also some truly awesome machine learning examples in Izbicki's [*Algebraic classifiers* (2013)](http://proceedings.mlr.press/v28/izbicki13.pdf). Not only does Izbicki demonstrate how to model various popular machine learning algorithms as monoids, but he shows how to leverage monoidal (and group) structure for speeding up \\(k\\)-fold cross-validation from \\(\mathcal{O}(kn)\\) to \\(\mathcal{O}(k + n)\\) (given sufficient cloud computing resources).

From [#43](https://forum.azimuthproject.org/discussion/comment/18023/#Comment_18023):

> @Jonathan – I think isomorphisms are enough – if \\(Q\\) is a preorder isomorphic to \\(P\\), then we can transplant the monoidal structure on \\(P\\) onto \\(Q\\) using the same trick (convert the \\(Q\\)-elements into \\(P\\)-elements, multiply them in \\(P\\), convert back again). The automorphism version (with \\(Q = P\\)) is just a special case of this.

I agree.

This is enough to prove an early hunch of mine in this thread which I later doubted.

*Every dense unbounded linear order can be equipped with a monoidal poset.*

(This is a sort of model theoretic answer to **Puzzle 63**.)

**Proof**.

In the case of \\(\aleph_0\\) this is easy enough to see, since it's order-isomorphic by Cantor's theorem to \\(\mathbb{Q}\\) so we can transfer the monoidal pre-order \\(\langle \mathbb{Q}, \leq, +, 0\rangle\\) to it.

But by upward Löwenheim-Skolem, for any cardinality \\(\kappa\\) there is a dense unbounded linear monoidal poset \\(\langle D, \leq, +_D, 0\rangle\\) which is an [elementary extension](https://en.wikipedia.org/wiki/Elementary_equivalence#Elementary_substructures_and_elementary_extensions) of \\(\langle \mathbb{Q}, \leq, +, 0\rangle\\) where \\(|D| = \kappa\\).

Since the theory of dense linear orders is complete, then that means for any other dense linear poset with \\(\kappa\\) many elements it must be order isomorphic to \\(\langle D, \leq, +_D, 0\rangle\\) by some isomorphism \\(\phi\\). Then we can use Jonathan's idea in [#41](https://forum.azimuthproject.org/discussion/comment/17997/#Comment_17997) along with \\(\phi\\) to embed \\(+_D\\).

\\(\Box\\)

From [#46](https://forum.azimuthproject.org/discussion/comment/18027/#Comment_18027):

> point taken re "let's not fool anyone into thinking every monoidal preorder needs to have \\(\otimes\\) be the join or meet" – one of the difficulties I have with monoidal categories is in grasping how we only care about the formal combinatory properties of the monoidal product, and not what it "actually is". So I tend to "reach" for familiar products, eg meet or cartesian or tensor, which can be misleading.

I don't know if you are a Haskell programmer, but [`Data.Monoid`](https://hackage.haskell.org/package/base-4.11.1.0/docs/Data-Monoid.html) has a lot of canonical monoids. It has instances for `[a]`, endomorphisms, `First a` and `Last a`. `First a` obeys \\(\forall x. x \neq I \implies x \otimes y = x\\), like you sketch above (but it doesn't have the order you prescribe).

There are also some truly awesome machine learning examples in Izbicki's [*Algebraic classifiers* (2013)](http://proceedings.mlr.press/v28/izbicki13.pdf). Not only does Izbicki demonstrate how to model various popular machine learning algorithms as monoids, but he shows how to leverage monoidal (and group) structure for speeding up \\(k\\)-fold cross-validation from \\(\mathcal{O}(kn)\\) to \\(\mathcal{O}(k + n)\\) (given sufficient cloud computing resources).

From [#43](https://forum.azimuthproject.org/discussion/comment/18023/#Comment_18023):

> @Jonathan – I think isomorphisms are enough – if \\(Q\\) is a preorder isomorphic to \\(P\\), then we can transplant the monoidal structure on \\(P\\) onto \\(Q\\) using the same trick (convert the \\(Q\\)-elements into \\(P\\)-elements, multiply them in \\(P\\), convert back again). The automorphism version (with \\(Q = P\\)) is just a special case of this.

I agree.

This is enough to prove an early hunch of mine in this thread which I later doubted.

*Every dense unbounded linear order can be equipped with a monoidal poset.*

(This is a sort of model theoretic answer to **Puzzle 63**.)

**Proof**.

In the case of \\(\aleph_0\\) this is easy enough to see, since it's order-isomorphic by Cantor's theorem to \\(\mathbb{Q}\\) so we can transfer the monoidal pre-order \\(\langle \mathbb{Q}, \leq, +, 0\rangle\\) to it.

But by upward Löwenheim-Skolem, for any cardinality \\(\kappa\\) there is a dense unbounded linear monoidal poset \\(\langle D, \leq, +_D, 0\rangle\\) which is an [elementary extension](https://en.wikipedia.org/wiki/Elementary_equivalence#Elementary_substructures_and_elementary_extensions) of \\(\langle \mathbb{Q}, \leq, +, 0\rangle\\) where \\(|D| = \kappa\\).

Since the theory of dense linear orders is complete, then that means for any other dense linear poset with \\(\kappa\\) many elements it must be order isomorphic to \\(\langle D, \leq, +_D, 0\rangle\\) by some isomorphism \\(\phi\\). Then we can use Jonathan's idea in [#41](https://forum.azimuthproject.org/discussion/comment/17997/#Comment_17997) along with \\(\phi\\) to embed \\(+_D\\).

\\(\Box\\)