packages feed

MiniAgda-0.2014.1.9: test/fail/UlfsCounterexample.err

MiniAgda by Andreas Abel and Karl Mehltretter
--- opening "UlfsCounterexample.ma" ---
--- scope checking ---
--- type checking ---
type  Bool : Set
term  Bool.true : < Bool.true : Bool >
term  Bool.false : < Bool.false : Bool >
type  Nat : Set
term  Nat.zero : < Nat.zero : Nat >
term  Nat.succ : ^(y0 : Nat) -> < Nat.succ y0 : Nat >
type  T : Bool -> Set
{ T Bool.true = Nat
; T Bool.false = Bool
}
term  bad : .[F : Nat -> Set] -> .[f : .[x : Bool] -> T x -> Nat] -> (g : (n : Nat) -> F (f [Bool.true] n)) -> (h : F (f [Bool.false] Bool.false) -> Bool) -> Bool
error during typechecking:
bad
/// clause 1
/// right hand side
/// checkExpr 4 |- h (g zero) : Bool
/// inferExpr' h (g zero)
/// checkApp ((v0 {f [Bool.false] Bool.false {g = (v2 Up ((n : Nat::Tm) -> F (f [Bool.true] n){f = (v1 Up (.[x : Bool::Tm] -> T x -> Nat{F = (v0 Up (Nat::Tm -> Set))})), F = (v0 Up (Nat::Tm -> Set))})), f = (v1 Up (.[x : Bool::Tm] -> T x -> Nat{F = (v0 Up (Nat::Tm -> Set))})), F = (v0 Up (Nat::Tm -> Set))}})::Tm -> {Bool {g = (v2 Up ((n : Nat::Tm) -> F (f [Bool.true] n){f = (v1 Up (.[x : Bool::Tm] -> T x -> Nat{F = (v0 Up (Nat::Tm -> Set))})), F = (v0 Up (Nat::Tm -> Set))})), f = (v1 Up (.[x : Bool::Tm] -> T x -> Nat{F = (v0 Up (Nat::Tm -> Set))})), F = (v0 Up (Nat::Tm -> Set))}}) eliminated by g zero
/// leqVal' (subtyping)  < g n Nat.zero : F (f x  [Bool.true] Nat.zero) >  <=+  F (f x  [Bool.false] Bool.false)
/// leqVal' (subtyping)  F (f x  [Bool.true] Nat.zero)  <=+  F (f x  [Bool.false] Bool.false)
/// leqVal'  f Bool.true Nat.zero  <=*  f Bool.false Bool.false : Nat
/// leqVal'  Nat.zero : Nat  <=*  Bool.false : Bool
/// type Nat has different shape than Bool