MiniAgda-0.2014.1.9: test/fail/vec_eta.err
MiniAgda by Andreas Abel and Karl Mehltretter
--- opening "vec_eta.ma" ---
--- scope checking ---
--- type checking ---
type Nat : Set
term Nat.zero : < Nat.zero : Nat >
term Nat.succ : ^(pred : Nat) -> < Nat.succ pred : Nat >
term add : Nat -> Nat -> Nat
{ add Nat.zero y = y
; add (Nat.succ x) y = Nat.succ (add x y)
}
type Vec : ++(A : Set) -> ^ Nat -> Set
term Vec.vnil : .[A : Set] -> < Vec.vnil : Vec A Nat.zero >
term Vec.vcons : .[A : Set] -> ^(head : A) -> .[n : Nat] -> ^(tail : Vec A n) -> < Vec.vcons head n tail : Vec A (Nat.succ n) >
term head : .[A : Set] -> .[n : Nat] -> (vcons : Vec A (Nat.succ n)) -> A
{ head [A] [n] (Vec.vcons #head [.n] #tail) = #head
}
term tail : .[A : Set] -> .[n : Nat] -> (vcons : Vec A (Nat.succ n)) -> Vec A n
{ tail [A] [n] (Vec.vcons #head [.n] #tail) = #tail
}
type Id : ^(A : Set) -> ^(a : A) -> ^ A -> Set
term Id.refl : .[A : Set] -> .[a : A] -> < Id.refl : Id A a a >
error during typechecking:
vec0vnil
/// checkExpr 0 |- \ A -> \ n -> \ v -> \ v' -> refl : .[A : Set] -> (n : Nat) -> (v : Vec A n) -> (v' : Vec A n) -> Id (Vec A n) v v'
/// checkForced fromList [] |- \ A -> \ n -> \ v -> \ v' -> refl : .[A : Set] -> (n : Nat) -> (v : Vec A n) -> (v' : Vec A n) -> Id (Vec A n) v v'
/// new A : Set
/// checkExpr 1 |- \ n -> \ v -> \ v' -> refl : (n : Nat) -> (v : Vec A n) -> (v' : Vec A n) -> Id (Vec A n) v v'
/// checkForced fromList [(A,0)] |- \ n -> \ v -> \ v' -> refl : (n : Nat) -> (v : Vec A n) -> (v' : Vec A n) -> Id (Vec A n) v v'
/// new n : Nat
/// checkExpr 2 |- \ v -> \ v' -> refl : (v : Vec A n) -> (v' : Vec A n) -> Id (Vec A n) v v'
/// checkForced fromList [(n,1),(A,0)] |- \ v -> \ v' -> refl : (v : Vec A n) -> (v' : Vec A n) -> Id (Vec A n) v v'
/// new v : (Vec v0 v1)
/// checkExpr 3 |- \ v' -> refl : (v' : Vec A n) -> Id (Vec A n) v v'
/// checkForced fromList [(n,1),(A,0),(v,2)] |- \ v' -> refl : (v' : Vec A n) -> Id (Vec A n) v v'
/// new v' : (Vec v0 v1)
/// checkExpr 4 |- refl : Id (Vec A n) v v'
/// checkForced fromList [(n,1),(A,0),(v,2),(v',3)] |- refl : Id (Vec A n) v v'
/// leqVal' (subtyping) < Id.refl : Id (Vec A n) v v > <=+ Id (Vec A n) v v'
/// leqVal' (subtyping) Id (Vec A n) v v <=+ Id (Vec A n) v v'
/// leqVal' v <=^ v' : Vec A n
/// leqApp: head mismatch v != v'