Agda-2.3.2.2: test/bugs/fixed/LostConstraint.agda
-- The bug appeared since I forgot to keep the constraint when trying to unify
-- a blocked term (I just didn't instantiate).
module LostConstraint where
infixr 10 _==>_ _=>_
data Setoid : Set1 where
setoid : Set -> Setoid
El : Setoid -> Set
El (setoid A) = A
eq : (A : Setoid) -> El A -> El A -> Set
eq (setoid A) = e
where
postulate e : (x, y : A) -> Set
data _=>_ (A,B : Setoid) : Set where
lam : (f : El A -> El B)
-> ((x : El A) -> eq A x x
-> eq B (f x) (f x)
)
-> A => B
app : {A,B : Setoid} -> (A => B) -> El A -> El B
app (lam f _) = f
postulate EqFun : {A,B : Setoid}(f, g : A => B) -> Set
lam2 : {A,B,C : Setoid} ->
(f : El A -> El B -> El C) ->
(x : El A) -> B => C
lam2 {A}{B}{C} f x = lam (f x) (lem _)
where
postulate
lem : (x : El A)(y : El B) -> eq B y y -> eq C (f x y) (f x y)