Vocabulary (IsX, RawX, structures, bundles, etc) #3052
Replies: 10 comments 6 replies
-
|
Re My own position, untested against any Sorry, just realised I should post this on #3053 |
Beta Was this translation helpful? Give feedback.
-
|
Re:
I feel the moral, as well as scientific/technical, obligation, to draw the distinction between
as further (meta-level) vocabulary for talking about such things. SML avoids transport hell by... magic, and not having dependent types, so definitional equality between (shared) NB SML-style is capable of supporting Pebble-style, by lifting each |
Beta Was this translation helpful? Give feedback.
-
|
I'm delighted that there are alternative frameworks in which it may be possible to Do The Right Thing, but this is a library for Agda we're talking about, so unless we can argue strongly to the developers for upstream changes, then these discussions aren't really going to go anywhere? (I know that at the moment, we are perhaps only re-codifying positions that have recurred in discussion on individual issues/PRs, so it's good to get them written down, but I'm also a bit frustrated by the gap between what might be achievable later, and what's achievable now. The old me would have held out for the revolutionary future. The new me, older now than the old me, wants what's achievable, moreover observably (?) better, today. How ironic! |
Beta Was this translation helpful? Give feedback.
-
|
A sidebar on meta-level vs. object-level vocabulary, as it (now; going forward;
I've come to the conclusion that we should let our module/namespace hierarchy manage this for us: (to be clarified, I think what's here still isn't quite right yet)
That is,
I would love this to work in a friction-free way, but can't help dreading some horrible viscosity issues downstream. But as usual: FYC. |
Beta Was this translation helpful? Give feedback.
-
|
Apologies for |
Beta Was this translation helpful? Give feedback.
-
|
[Moved to #3053] |
Beta Was this translation helpful? Give feedback.
-
|
Regarding the suggested reading, many thanks again for reposting. These things have come up before on specific issues, so it's good to repost, and perhaps, in addition to As to the reading itself, yes, but effectively/in practice, no. When I read it was too long ago, and my mind too different, for that experience really to be accessible. Back to the bookshelves! |
Beta Was this translation helpful? Give feedback.
-
|
Re: Tom Hales link. It simply points back to this Discussion item! |
Beta Was this translation helpful? Give feedback.
-
|
A bit of history: seems that the |
Beta Was this translation helpful? Give feedback.
-
|
As part of |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
[I chose 'General' because this is meta, about the vocabulary we use and the concepts behind it.]
Let me thus link some of the stdlib-specific terminology with broader concepts. Below X is always used as a meta-variable that stands for things like
Monoid,RingorSquag.RawX: most others would simply call this a 'signature'. It is represented in Agda as a record. Under that reading,RawMonoidmakes little sense, as without its laws, aMonoidis aPointedMagma. But a signature (i.e. something that defines carriers and function symbols, with relation symbols sometimes also being allowed) is an incredibly useful item, as it defines a local vocabulary that one can then use to define further concepts.IsX: this is basically a predicate. Represented as a parametrized record, it is used to encapsulate a set of axioms (i.e. what upgrades a signature to a theory presentation). Its reading is basically "given the data of all the parameters, used as vocabulary, that data forms an X if one can witness all of the contents of this record". This is how the record acts as a predicate: it is contingent on being inhabited.IsMonoiddoes make sense on the exploded data of aPointedMagma.structure: this is a name forIsXpredicates.bundle: this is a name for a record that has exactly the data that corresponds to anIsXpredicate as fields, and then a single additional field for thatIsX. Basically this is a "bundled up" version of a theory presentation, in the same way thatIsXis maximally unbundled.Formally, something like
IsMonoidandMonoidare actually equivalent, in the sense that they have the same models. However, inside type theory, they are 'different'IsMonoid, but awkward usingMonoid. The information flow is extremely different (it is foreknowledge inIsMonoidand post-facto forMonoid, and mixing things in the latter style ends up in transport hell.)Much ink has been spilled about (un)bundling. Agda's choices are to support maximal unbundling (
IsX) and maximal bundling (X). This is unsatisfactory, because carrier sets and operations are another gradation of signatures, and so that too wants degrees of bunding. For example, one will seeMonoidOnin the wild, which is the bundle of everything except the carrier. In stdlib's case,MonoidOnmight well want to have the carrierSetoidbe what is exposed. Or both.Beta Was this translation helpful? Give feedback.
All reactions