MiniAgda-0.2022.3.11: test/succeed/sizeFunctions.golden
MiniAgda by Andreas Abel and Karl Mehltretter
--- opening "sizeFunctions.ma" ---
--- scope checking ---
--- type checking ---
type Bool : Set
term Bool.true : < Bool.true : Bool >
term Bool.false : < Bool.false : Bool >
type N : Set
term N.zz : < N.zz : N >
term N.ss : ^(y0 : N) -> < N.ss y0 : N >
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 >
size infty : Size
size infty = #
size ssuc : Size -> Size
size ssuc = \ i -> $i
size maybeSuc : (b : Bool) -> Size -> Size
{ maybeSuc Bool.true i = $i
; maybeSuc Bool.false i = i
}
size addSize : N -> Size -> Size
{ addSize N.zz i = i
; addSize (N.ss n) i = $(addSize n i)
}
term addSNat : (n : N) -> .[i : Size] -> Nat i -> Nat (addSize n i)
{ addSNat N.zz [i] m = m
; addSNat (N.ss n) [i] m = Nat.succ [addSize n i] (addSNat n [i] m)
}
--- evaluating ---
--- closing "sizeFunctions.ma" ---