Closed
Description
@tomjack has this definition of ⊥
. It comes with a big advantage: because all
the proofs of a given Prop
are definitionally equal, we get for free that all
proofs of a negative statement are equal (cf. unique
).
{-# OPTIONS --prop #-}
open import Agda.Builtin.Equality
record Truth (P : Prop) : Set where
constructor [_]
field
truth : P
open Truth public
data ⊥' : Prop where
⊥ = Truth ⊥'
¬ : Set → Set
¬ A = A → ⊥
unique : {A : Set} (x y : ¬ A) → x ≡ y
unique x y = refl
This would in particular allow us to change ≢-≟-identity
's type from the
cumbersome ∀ {b} → a ≢ b → ∃ λ ¬eq → a ≟ b ≡ no ¬eq
to the nicer
∀ {b} (¬eq : a ≢ b) → a ≟ b ≡ no ¬eq