MiniAgda-0.2022.3.11: test/succeed/HVec.golden
MiniAgda by Andreas Abel and Karl Mehltretter
--- opening "HVec.ma" ---
--- scope checking ---
--- type checking ---
type Unit : Set
term Unit.unit : < Unit.unit : Unit >
ty-u Prod : .[i : Size] -> ^(A : Set i) -> ^(B : Set i) -> Set i
term Prod.pair : .[i : Size] -> .[A : Set i] -> .[B : Set i] -> ^(fst : A) -> ^(snd : B) -> < Prod.pair fst snd : Prod [i] A B >
mixk fst : .[i : Size] -> .[A : Set i] -> .[B : Set i] -> (pair : Prod [i] A B) -> A
{ fst [i] [A] [B] (Prod.pair #fst #snd) = #fst
}
mixk snd : .[i : Size] -> .[A : Set i] -> .[B : Set i] -> (pair : Prod [i] A B) -> B
{ snd [i] [A] [B] (Prod.pair #fst #snd) = #snd
}
mixk fst' : .[i : Size] -> .[A : Set i] -> .[B : Set i] -> Prod [i] A B -> A
{ fst' [i] [A] [B] (Prod.pair a b) = a
}
ty-u List : .[i : Size] -> ^(A : Set i) -> Set i
term List.nil : .[i : Size] -> .[A : Set i] -> < List.nil : List [i] A >
term List.cons : .[i : Size] -> .[A : Set i] -> ^(y0 : A) -> ^(y1 : List [i] A) -> < List.cons y0 y1 : List [i] A >
type HVecR : List [1] Set -> Set
{ HVecR List.nil = Unit
; HVecR (List.cons A As) = Prod [0] A (HVecR As)
}
ty-u HVec : ^ List [1] Set -> Set 1
term HVec.vnil : < HVec.vnil : HVec List.nil >
term HVec.vcons : .[A : Set] -> .[As : List [1] Set] -> ^(y2 : A) -> ^(y3 : HVec As) -> < HVec.vcons A As y2 y3 : HVec (List.cons A As) >
--- evaluating ---
--- closing "HVec.ma" ---