-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sums and products over arbitrary finite types #1367
base: master
Are you sure you want to change the base?
Conversation
Some patterns we've used elsewhere to differentiate are the following:
Depending on the generality of the relevant binary operation (i.e., is it associative, does it distribute over the underlying binary operation?), you might want to go with simply "binary operations on monoids", or something other than "product". |
I think "cartesian product" may be appropriate in this setting, to disambiguate from the "free product of monoids" which, perhaps counterintuitively, is the coproduct in the category of monoids. |
FWIW, I discovered that a very early attempt at the precise operation we want already existed in |
src/group-theory/products-of-tuples-of-elements-commutative-monoids.lagda.md
Outdated
Show resolved
Hide resolved
src/group-theory/products-of-tuples-of-elements-commutative-monoids.lagda.md
Outdated
Show resolved
Hide resolved
Hmm, I suppose actually our |
I suppose, in computer science, the term "vector" is used for a list of a specified finite length, but this conflicts with the mathematical concept of a vector as an element of a vector space. Anyways, these are just random thoughts. |
snoc-functional-vec-Monoid = snoc-functional-vec | ||
``` | ||
|
||
### Zero vector on a ring |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Neither terminology "zero" nor "unit" vector works here, since you've adopted the multiplicative terminology for this file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually -- perhaps we should name this the one vector? That isn't nearly so overloaded.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's also a possibility
Co-authored-by: Fredrik Bakke <[email protected]>
…ermute-sums-commutative
In preparation for polynomials and formal power series, most notably multiplication of formal power series (#1357), this starts digging into sums over arbitrary finite types, and generalizes from sums on e.g. semirings to products on monoids -- mostly commutative monoids, since they're the ones where arbitrary finite sums make sense.
There is some tension with naming over whether
group-theory.products-monoids
should indicate the monoid on the Cartesian product of two other monoids, or products of elements in a monoid. Since monoids (and groups in general) use multiplicative terminology, we can't get away with what rings have done by differentiating sums and products. (And we don't have any support for products of elements of rings, either, though the generalization to commutative monoids is intended to make that possible down the road.)This is marked a draft because there's one last thing I want to prove, which is that you can split sums over coproducts of arbitrary finite types.