MiniAgda-0.2014.1.9: test/fail/UlfsCounterexample2.err
MiniAgda by Andreas Abel and Karl Mehltretter
--- opening "UlfsCounterexample2.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
term T.nat : ^(y0 : Nat) -> < T.nat y0 : T Bool.true >
term T.bool : ^(y0 : Bool) -> < T.bool y0 : T Bool.false >
term bad : .[F : Nat -> Set] -> ^(f : .[x : Bool] -> T x -> Nat) -> (g : (n : Nat) -> F (f [Bool.true] (T.nat n))) -> (h : F (f [Bool.false] (T.bool 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] (T.bool Bool.false) {g = (v2 Up ((n : Nat::Tm) -> F (f [Bool.true] (T.nat 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] (T.nat 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] (T.nat Nat.zero)) > <=+ F (f x [Bool.false] (T.bool Bool.false))
/// leqVal' (subtyping) F (f x [Bool.true] (T.nat Nat.zero)) <=+ F (f x [Bool.false] (T.bool Bool.false))
/// leqVal' f Bool.true (T.nat Nat.zero) <=* f Bool.false (T.bool Bool.false) : Nat
/// leqVal' T.nat Nat.zero : T Bool.true <=* T.bool Bool.false : T Bool.false
/// leqVal': head mismatch T.nat{y0 = Nat.zero{}} != T.bool{y0 = Bool.false{}}