MiniAgda by Andreas Abel and Karl Mehltretter --- opening "PredDepType.ma" --- --- scope checking --- --- type checking --- type Nat : + Size -> Set term Nat.zero : .[s!ze : Size] -> .[i < s!ze] -> Nat s!ze term Nat.zero : .[i : Size] -> < Nat.zero i : Nat $i > term Nat.succ : .[s!ze : Size] -> .[i < s!ze] -> ^ Nat i -> Nat s!ze term Nat.succ : .[i : Size] -> ^(y1 : Nat i) -> < Nat.succ i y1 : Nat $i > type Pred : (i : Size) -> (x : Nat $i) -> Set { Pred i (Nat.succ [.i] n) = Nat i ; Pred i (Nat.zero [.i]) = Nat $i } term pred : .[i : Size] -> (x : Nat $i) -> Pred i x { pred [i] (Nat.succ [.i] n) = n ; pred [i] (Nat.zero [.i]) = Nat.zero [i] } --- evaluating --- --- closing "PredDepType.ma" ---