[Agda] list member error
Andreas Abel
andreas.abel at ifi.lmu.de
Sun Dec 30 15:05:11 CET 2012
On 28.12.12 7:47 PM, Serge D. Mechveliani wrote:
> data Elem {c l : Level} {A : Setoid c l} :
> Setoid.Carrier A -> List (Setoid.Carrier A) -> Set (suc (max c l))
>
> -- "x is in the list xs by _~~_"
> where
> inHead : let open Setoid {{...}} in
> (x y : Carrier) -> x ~~ y -> (xs : List Carrier) ->
> Elem x (y :: xs)
> inTail : let C = Setoid.Carrier A
> in (x y : C) -> (xs : List C) -> Elem x xs -> Elem x (y :: xs)
Agda cannot guess parameter {A} of the recursive call to Elem. It works
if you add {A = A}.
--
Andreas Abel <>< Du bist der geliebte Mensch.
Theoretical Computer Science, University of Munich
Oettingenstr. 67, D-80538 Munich, GERMANY
andreas.abel at ifi.lmu.de
http://www2.tcs.ifi.lmu.de/~abel/
-------------- next part --------------
module ListMem where
open import Foreign.Haskell
open import IO.Primitive
open import Data.String as String using (toCostring)
open import Level using (Level; suc; _?_)
open import Relation.Binary using (Setoid; module Setoid)
open import Data.List using (List; []; _?_)
data Elem {c l : Level} {A : Setoid c l} :
Setoid.Carrier A -> List (Setoid.Carrier A) -> Set (suc (_?_ c l))
-- "x is in the list xs by _~~_"
where
inHead : let open Setoid {{...}} in
(x y : Carrier) -> x ? y -> (xs : List Carrier) ->
Elem x (y ? xs)
inTail : let C = Setoid.Carrier A
in (x y : C) -> (xs : List C) -> Elem {A = A} x xs -> Elem x (y ? xs)
main : IO Unit
main = putStrLn (toCostring "done")
More information about the Agda
mailing list