-
Notifications
You must be signed in to change notification settings - Fork 239
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
Functional vector module #1945
base: master
Are you sure you want to change the base?
Functional vector module #1945
Conversation
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.
I like this addition. There's a lot of algebraic structures that you could define but don't, especially:
IsCommutativeMagma
IsCommutativeSemigroup
IsGroup
IsAbelianGroup
IsPrerightSemimodule
IsRightSemimodule
IsBisemimodule
IsRightModule
IsBimodule
IsModule
And with element-wise multiplication:
IsNearSemiring
IsSemiringWithoutOne
IsCommutativeSemiringWithoutOne
IsSemiringWithoutAnnihilatingZero
IsSemiring
IsCommutativeSemiring
IsRingWithoutOne
IsRing
IsCommutativeRing
Plus the corresponding bundles.
I added all of them. |
@@ -3027,3 +3027,113 @@ This is a full list of proofs that have changed form to use irrelevant instance | |||
```agda | |||
<-weakInduction-startingFrom : P i → (∀ j → P (inject₁ j) → P (suc j)) → ∀ {j} → j ≥ i → P j | |||
``` | |||
|
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.
In these cases we typically only mention we have added entirely new modules rather than listing their content.
Cf. https://github.com/agda/agda-stdlib/blob/master/CHANGELOG.md#new-modules
import Algebra.Structures as AS | ||
|
||
module Data.Vec.Functional.Algebra.Base | ||
{c ℓ} (cring : CommutativeRing c ℓ) where |
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.
I'm not happy about this whole module being parameterized on CommutativeRing
, as many of the definitions work with smaller algebraic structures, but I'm not sure what to do about it. Maybe other people have some ideas?
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.
I haven't (yet) looked at this too closely, but it seems as though we might more generally want d isX
implies (Vector n d) isX
and then if d
is suitable as X
scalars for the right notion of IsYModule over X
then (Vector n d) isYModule over d
...?
I have changed most of my code and it is not done yet. It is still with a lot of comments. I tried to make the code work with more cases, but I don't know if it is helpful in that way. |
I can remove the code that is commented on if they are not necessary. I also would like some suggestions if something is not in the right way. |
Sorry not to have had time for a thorough review of this draft PR yet! |
Added structures and bundles about functional vectors and modules.