-
Notifications
You must be signed in to change notification settings - Fork 264
Equivalence (or otherwise) of all the various definitions of proof-irrelevance; streamlining them #2198
Copy link
Copy link
Closed
Labels
Description
Consider:
Relation.Binary.PropositionalEquality:
isPropositional : Set a → Set a
isPropositional A = (a b : A) → a ≡ bRelation.Nullary:
Irrelevant : ∀ {p} → Set p → Set p
Irrelevant P = ∀ (p₁ p₂ : P) → p₁ ≡ p₂Relation.Unary:
Irrelevant : Pred A ℓ → Set _
Irrelevant P = ∀ {x} (a : P x) (b : P x) → a ≡ bRelation.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:
Data.IrrelevantData.Empty.Irrelevant, which is built on top of it, likewiseData.Refinement- the definition and use of
recomputefunctions 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#2199
Issue: how to reconcile all these various things in a straightforward and intelligible way?
And suitably redefine/deprecate the redundant ones...
Reactions are currently unavailable