packages feed

MiniAgda-0.2022.3.11: test/succeed/Mu.golden

MiniAgda by Andreas Abel and Karl Mehltretter
--- opening "Mu.ma" ---
--- scope checking ---
--- type checking ---
type  Empty : Set
type  Unit : Set
term  Unit.unit : < Unit.unit : Unit >
type  Sum : ++(A : Set) -> ++(B : Set) -> Set
term  Sum.inl : .[A : Set] -> .[B : Set] -> ^(y0 : A) -> < Sum.inl y0 : Sum A B >
term  Sum.inr : .[A : Set] -> .[B : Set] -> ^(y0 : B) -> < Sum.inr y0 : Sum A B >
type  Prod : ++(A : Set) -> ++(B : Set) -> Set
term  Prod.pair : .[A : Set] -> .[B : Set] -> ^(fst : A) -> ^(snd : B) -> < Prod.pair fst snd : Prod A B >
term  fst : .[A : Set] -> .[B : Set] -> (pair : Prod A B) -> A
{ fst [A] [B] (Prod.pair #fst #snd) = #fst
}
term  snd : .[A : Set] -> .[B : Set] -> (pair : Prod A B) -> B
{ snd [A] [B] (Prod.pair #fst #snd) = #snd
}
type  Mu : ++(F : ++ Set -> Set) -> + Size -> Set
term  Mu.inn : .[F : ++ Set -> Set] -> .[s!ze : Size] -> .[i < s!ze] -> ^(out : F (Mu F i)) -> Mu F s!ze
term  Mu.inn : .[F : ++ Set -> Set] -> .[i : Size] -> ^(out : F (Mu F i)) -> < Mu.inn i out : Mu F $i >
term  out : .[F : ++ Set -> Set] -> .[i : Size] -> (inn : Mu F $i) -> F (Mu F i)
{ out [F] [i] (Mu.inn [.i] #out) = #out
}
term  myout : .[F : ++ Set -> Set] -> .[i : Size] -> Mu F $i -> F (Mu F i)
{ myout [F] [i] (Mu.inn [.i] t) = t
}
term  iter : .[F : ++ Set -> Set] -> (mapF : .[A : Set] -> .[B : Set] -> (A -> B) -> F A -> F B) -> .[G : Set] -> (step : F G -> G) -> .[i : Size] -> Mu F i -> G
{ iter [F] mapF [G] step [i] (Mu.inn [j < i] t) = step (mapF [Mu F j] [G] (iter [F] mapF [G] step [j]) t)
}
type  NatF : ++ Set -> Set
type  NatF = \ X -> Sum Unit X
type  Nat : + Size -> Set
type  Nat = Mu NatF
term  zero : .[i : Size] -> Nat $i
term  zero = [\ i ->] Mu.inn [i] (Sum.inl Unit.unit)
term  succ : .[i : Size] -> Nat i -> Nat $i
term  succ = [\ i ->] \ n -> Mu.inn [i] (Sum.inr n)
type  ListF : ++ Set -> ++ Set -> Set
type  ListF = \ A -> \ X -> Sum Unit (Prod A X)
type  List : ++ Set -> + Size -> Set
type  List = \ A -> Mu (ListF A)
--- evaluating ---
--- closing "Mu.ma" ---