-
Notifications
You must be signed in to change notification settings - Fork 260
Description
Having turned my focus to making certain relational arguments irrelevant in eg. Data.Fin.Base (#2783 #2790 cf. #2787 ), I observe a frequently-occurring pattern of reasoning, usually at the base case, where an 'irreflexive' argument of type 0 ≢ 0 ends up being eliminated via contradiction refl.
In order to make such arguments valid when such arguments are marked as irrelevant then requires such proofs to be modified, in-place, to use the new contradiction-irr introduced in #2785 .
This is all a bit annoying, esp. from a DRY point of view, when it seems as though we could add once and for all,
-
¬[x≢x] : ∀ {w} {Whatever : Set w} →.(x ≢ x) → WhateverinRelation.Binary.PropositionalEquality.Core, encapsulating the use ofcontradiction-irrin a single place - (optional)
¬[x≉x] : ∀ {w} {Whatever : Set w} → .(x ≉ x) → WhateverinRelation.Binary.Properties.Setoidby delegation to the above, viareflexive
and hence replace all the existing contradiction refl-like arguments with appeals to ¬[x≢x] instead.
Cons:
- bikeshedding/Fairbairn threshold, trading off against DRY
- seems to go against the spirit, at least, of Prefer
contradictionover⊥-elimwhen it makes sense? #2653, by re-introducing an implicit appeal to⊥-elim, esp. wrt theWhateverboilerplate... - what else?
Pros:
- subtle/slight streamlining of the dependency graph wrt
importofRelation.Nullary.Negation.Core - slight/subtle improvement in the abstraction wrt proofs, esp. being agnostic wrt relevance/irrelevance
- what else?
Suggestions as to names might also be welcome ;-)