@@ -36,51 +36,52 @@ private
3636record Subgroup c′ ℓ′ : Set (c ⊔ ℓ ⊔ suc (c′ ⊔ ℓ′)) where
3737 field
3838
39- -- as above, this name is essentially arbitrary,
40- -- exisitng solely to be mentioned in the third field below
39+ -- As above, the following name is essentially arbitrary, existing
40+ -- solely to be mentioned in the third field `ι-monomorphism` below.
4141
4242 domain : RawGroup c′ ℓ′
4343
44- -- this function (obviously) needs a source and target:
45- -- * the target, for the sake of the third field, needs to be
46- -- `Carrier` subfield of the top-level `X` module parameter
44+ -- The next field, a function, (obviously) needs a source and target:
45+ -- * the target, again for the sake of the third field, needs to be
46+ -- `Carrier` subfield of the top-level `X` module parameter;
4747-- * the source, however, really exists solely to give a type to `ι`
48- -- and indeed, the typechecker can infer (from the third field)
49- -- that this type *must* be the `Carrier` of the `RawX` `domain`
48+ -- and indeed, the typechecker can infer (again from the third field)
49+ -- that this type *must* be the `Carrier` of the `RawX` `domain`.
5050
5151-- Taneb's design introduces a `private` module
5252-- `private module H = RawGroup domain`
5353-- for the sake of affording easy/easier named access to its
5454-- `Carrier` field, and as preferable to the hideous explicit form
55- -- `RawGroup.Carrier domain` which is the definiens of `H.Carrier`
55+ -- `RawGroup.Carrier domain` which is the definiens of `H.Carrier`.
5656
57- -- Neither is necessary, but can be, and is, reconstructed by the
58- -- typechecker by offering instead a placeholder, in exactly the same way
57+ -- Neither is necessary, but instead can be, and is here , reconstructed by
58+ -- the typechecker by offering instead a placeholder, in exactly the same way
5959-- that `domain` exists as a named field solely to express the dependency
6060-- in the type of `ι-monomorphism`. In that sense, it is an ephemeral form
61- -- derived from `domain`, which moreover will never play a role in client
62- -- uses of this module, except as a typing constraint on any application
63- -- of `ι`, a constraint which is already inherited (by definitional equality!)
64- -- from the type of the `⟦_⟧` parameter to `IsXHomomorphism`...
61+ -- derived from `domain`, which moreover will *never* play a role in client
62+ -- uses of this module (eg exemplarily in `Algebra.Construct.Sub.Group.Normal),
63+ -- except as a typing constraint on any application of `ι`, a constraint
64+ -- which is already inherited (by definitional equality!) from the type of
65+ -- the `⟦_⟧` parameter to `IsXHomomorphism`...
6566
6667 ι : _ → G.Carrier -- where _ = RawGroup.Carrier domain
6768
68- -- now all the pieces are in place, we can define what we *really* want
69+ -- Now all the pieces are in place, we can define what we *really* want:
6970
7071 ι-monomorphism : IsGroupMonomorphism domain G.rawGroup ι
7172
72- -- this is 'admin': any client module of `Subgroup` will likely want to
73- -- refer to primitive *and* manifest subfields of `IsXMonmorphism`, so
74- -- this is automatically made available to clients, but not `open`ed ,
75- -- so that such affordance is client-definable, as usual.
73+ -- The next manifest field is an 'admin' decision : any client module of
74+ -- `Subgroup` will likely want to refer to primitive *and* manifest subfields
75+ -- of `IsXMonomorphism`, so this is automatically made available to clients,
76+ -- but not `open`ed, so that such affordance is client-definable, as usual.
7677
7778 module ι = IsGroupMonomorphism ι-monomorphism
7879
7980-- Similarly, but mathematically motivated: any client module of `Subgroup`
8081-- will want access to *the `X` defined as the domain of the `IsXMonomorphism`*.
8182-- But here, it is both automatically made available to clients, as above,
8283-- *and* also `open`ed, so that its affordances are offered to any client
83- -- via the 'canonical' names associated with the `X`/`IsX` bundle/structure
84+ -- via the 'canonical' names associated with the `X`/`IsX` bundle/structure.
8485
8586-- Taneb's design does this in two steps:
8687-- * first, create the `IsX` structure, with name `isX`
0 commit comments