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.Tight
makes 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.Adjoint
andFunction.Definitions.Inverse*
#2581 ) - making the
stdlib
conventional choice exposes one of the conjuncts simply as∀ x y → (x ≈ y → ¬ x # y)
, i.eIrreflexive _≈_ _#_
, so there's a DRY issue, in that aTight
instance ofRelation.Binary.Structures.IsApartnessRelation
reduplicates thisirrefl
property; (eg. inAlgebra.Apartness.Structures.IsHeytingField
) - the
Heyting
structures and bundles should be reorganised:- there's no reason for a
HeytingCommutativeRing
to admit inverses; but the apartness probably should be declared to beTight
(so... aTight
apartness should probably only have the one conjunct, as an 'extension' of the existingirrefl
property...) - a
HeytingField
should probably be aHeytingCommutativeRing
admitting inverses, ie. thetight
field moves toHCR
, while invertibility moves fromHCR
toHF
- there's no reason for a
These would all be breaking
changes, so v3.0, but well worth doing IMNSVHO. See #2588