-
Couldn't load subscription status.
- Fork 259
Description
This is another instance of the issues arising when adding 'derived forms' to a(n algebraic) structure/bundle, namely where should they be added:
- to the
RawXbundle? this is currently the case for_≉_, but AFAICT, never used, except to hereditarily be re-exported to richer structures; - to the
IsXstructure? this is not currently the case for_≉_via anIsEquivalencefield, but is forIsGroup._-_cf. Add new operations (cf.RawQuasigroup) toIsGroup#2251 ; - to the
Xbundle? this is also the case for_≉_via thesetoidmanifest field ([fixes #1214] Add negated ordering relation symbols systematically toRelation.Binary.*#2095 , Added remaining flipped and negated relations to binary relation bundles #2162 ), when that is in fact a 'derived form' defined in theIsXstructure... and by the opening of the underlyingRawXbundle.
The first and third cases seem to me to represent a clear DRY violation, and probably arise from the accumulation of 'legacy' design decisions. But what, if any, should be our refactoring policy towards a revised design?
Context: I'm working on a branch/PR addressing #2273 and find myself wondering whether (Raw)SuccessorSet needs explicitly to declare a negated equality symbol, when it should be (available to be) brought into scope via the Setoid instance of IsSuccessorSet...
UPDATED I've tried to regularise my vocabulary to avoid speaking of 'instance's of record types in favour of referring to their (often also record-typed`) fields, also often manifest, ie. defined rather than declared.