Pair : Type -> Type -> Type Pair A B = { p1 : A; p2 : B } pair : (A:Type) -> (B:Type) -> A -> B -> Pair A B pair _ _ x y = { p1 = x; p2 = y } fst : (A:Type) -> (B:Type) -> Pair A B -> A fst _ _ p = case p of Pair _ _ x _ -> x snd : (A:Type) -> (B:Type) -> Pair A B -> B snd _ _ p = case p of Pair _ _ x _ -> x