-
Notifications
You must be signed in to change notification settings - Fork 259
Open
Description
* the PR itself draws attention to the fact that `Symmetric _#_` is in fact a redundant part of the definition of `IsHeytingCommutativeRing`, so it *might* be worth having an `Algebra.Apartness.Structures.Biased` smart constructor which puts the pieces together, but this could be developed downstream;
* the whole definition of HCR now seems a bit odd (compared to HCF?): why should a `Ring` admit inverses of elements apart from `0`? As opposed to simply being a `CommutativeRing` with a `Tight` apartness relation?
Excepted from original post by @jamesmckinna in #2576 (comment)
There are several things to (re-)consider here:
- the definition of
Relation.Binary.Definitions.Tightmakes the conventional, but non-stdlib-conventional, design decision, to universally quantify a pair of properties, rather than consider the conjunction of two universally quantified properties (cf. [ refactor ] ReconcileRelation.Binary.Definitions.AdjointandFunction.Definitions.Inverse*#2581 ) - making the
stdlibconventional choice exposes one of the conjuncts simply as∀ x y → (x ≈ y → ¬ x # y), i.eIrreflexive _≈_ _#_, so there's a DRY issue, in that aTightinstance ofRelation.Binary.Structures.IsApartnessRelationreduplicates thisirreflproperty; (eg. inAlgebra.Apartness.Structures.IsHeytingField) - the
Heytingstructures and bundles should be reorganised:- there's no reason for a
HeytingCommutativeRingto admit inverses; but the apartness probably should be declared to beTight(so... aTightapartness should probably only have the one conjunct, as an 'extension' of the existingirreflproperty...) - a
HeytingFieldshould probably be aHeytingCommutativeRingadmitting inverses, ie. thetightfield moves toHCR, while invertibility moves fromHCRtoHF
- there's no reason for a
These would all be breaking changes, so v3.0, but well worth doing IMNSVHO. See #2588