-
Notifications
You must be signed in to change notification settings - Fork 256
Closed
Description
I find that there is a duplication between *.Consequences
and *.Properties
for structured sets, mainly including algebraic and order theories. I find the line between the consequences from functional properties and ones from structured sets is very blurred.
Consider, for example, https://github.com/agda/agda-stdlib/blame/master/src/Algebra/FunctionProperties/Consequences.agda#L103
assoc+id+invʳ⇒invˡ-unique : ∀ {_•_ _⁻¹ ε} →
Congruent₂ _•_ → Associative _•_ →
Identity ε _•_ → RightInverse ε _⁻¹ _•_ →
∀ x y → (x • y) ≈ ε → x ≈ (y ⁻¹)
This law effectively unpacks monoid into a bunch of antecedents, plus a right inverse. Shouldn't it be something like
monoid+invʳ⇒invˡ-unique : ∀ {_•_ _⁻¹ ε} → IsMonoid _•_ ε → RightInverse ε _⁻¹ _•_ →
∀ x y → (x • y) ≈ ε → x ≈ (y ⁻¹)
?
Then it's very clear by reading it as what if a monoid possesses some other things, what happens. I sometimes find claiming laws like this in *.Consequences
is an overkill. Any thoughts on drawing a line?
gallais and JacquesCarette