Consider:
Relation.Binary.PropositionalEquality:
isPropositional : Set a → Set a
isPropositional A = (a b : A) → a ≡ b
Irrelevant : ∀ {p} → Set p → Set p
Irrelevant P = ∀ (p₁ p₂ : P) → p₁ ≡ p₂
Irrelevant : Pred A ℓ → Set _
Irrelevant P = ∀ {x} (a : P x) (b : P x) → a ≡ b
Relation.Binary.Definitions:
Irrelevant : REL A B ℓ → Set _
Irrelevant _∼_ = ∀ {x y} (a b : x ∼ y) → a ≡ b
(these all fall under #2091 with the exception of the top one, which is defined but never used anywhere; nevertheless they are all 'propositional' accounts of irrelevance; UPDATED see #2259 )
and the type-theoretic/definitional account of irrelevance given by using .(_) as a syntactic marker on types:
Issue: how to reconcile all these various things in a straightforward and intelligible way?
And suitably redefine/deprecate the redundant ones...
Consider:
Relation.Binary.PropositionalEquality:Relation.Nullary:Relation.Unary:Relation.Binary.Definitions:(these all fall under #2091 with the exception of the top one, which is defined but never used anywhere; nevertheless they are all 'propositional' accounts of irrelevance; UPDATED see #2259 )
and the type-theoretic/definitional account of irrelevance given by using
.(_)as a syntactic marker on types:Data.IrrelevantData.Empty.Irrelevant, which is built on top of it, likewiseData.Refinementrecomputefunctions inRelation.Nullary.Decidable(cf. Inconsistencies betweenRelation.Binary.DefinitionsandRelation.UnaryandRelation.Nullary#2091 again), which Enhancement toRelation.Nullary.Reflectsetc. #2149 would seek to push down toRelation.Nullary.Reflects, along with a definition ofRecomputableas a property of types. See also⊥isRecomputable#2199Issue: how to reconcile all these various things in a straightforward and intelligible way?
And suitably redefine/deprecate the redundant ones...