{-# OPTIONS --injective-type-constructors #-}open importCommon.Preludeopen importCommon.Equalityabstractf : Bool → Bool
f x = true
same : f true ≡ f false
same = refl
not-same : f true ≡ f false → ⊥
not-same ()
absurd : ⊥
absurd = not-same same
The text was updated successfully, but these errors were encountered:
While working on #3959, I have found a way to revive this proof of false
using the INJECTIVE pragma:
{-# OPTIONS --safe #-}open importAgda.Builtin.Boolopen importAgda.Builtin.Equalitydata⊥:Setwhereabstractf : Bool → Bool
f x = true
{-# INJECTIVE f #-}same : f true ≡ f false
same = refl
not-same : f true ≡ f false → ⊥
not-same ()
absurd : ⊥
absurd = not-same same
I don't get it -- you chose to lie to Agda, in ways that are outside the logic (with a pragma), and tried to hide your track (with abstract), and you're somehow surprised that this gets you into trouble? Is the point that this shouldn't have happened under --safe?
The text was updated successfully, but these errors were encountered: