[Agda] A Demonstration of Agda by Alan Jeffrey

mukesh tiwari mukeshtiwari.iiitm at gmail.com
Sat Mar 23 22:42:37 CET 2013


Hello all
I am watching this agda tutorial [1] and tried to code the concatenation of
finite list but I am getting this error "Can not refine".

module AgdaDemo where

data Bool : Set where
  true : Bool
  false : Bool


¬ : Bool → Bool
¬ true = false
¬ false = true

_^_ : Bool → Bool → Bool
true ^ y = y
false ^ y = false

data ℕ : Set where
  zero : ℕ
  suc : ℕ → ℕ

{-# BUILTIN NATURAL ℕ #-}
{-# BUILTIN ZERO zero #-}
{-# BUILTIN SUC suc #-}


_⊹_ : ℕ → ℕ → ℕ
zero ⊹ y = y
suc x ⊹ y = suc (x ⊹ y)

_==_ : ℕ → ℕ → Bool
zero == zero = true
zero == suc y = false
suc x == zero = false
suc x == suc y = x == y

infixr 5 _::_

data List ( A : Set ) : Set where
  [] : List A
  _::_ : A → List A → List A

_++_ : ∀ { A } → List A → List A → List A
[] ++ ys = ys
(x :: xs) ++ ys = x :: xs ++ ys

infixr 5 _:::_

data List# ( A : Set ) : ℕ → Set where
  [] : List# A 0
  _:::_ : ∀ { n } → A → List# A n → List# A (n ⊹ 1)


_+++_ : ∀ { A m n } → List# A m → List# A n → List# A ( m ⊹ n )
[] +++ ys = ys
(x ::: xs) +++ ys = {!x ::: ( xs +++ ys )!} -- C-c C-r gives "Can not
refine"


Could some one please tell me how to solve this problem.

Regards
Mukesh Tiwari

[1] https://www.youtube.com/watch?v=8WFMK0hv8bE
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.chalmers.se/pipermail/agda/attachments/20130324/12a26533/attachment.html


More information about the Agda mailing list