IntString : Bool -> Type IntString False = Int IntString True = String mkString : (str : Bool) -> IntString str -> String mkString False x = ?mkString_rhs_1 mkString True x = ?mkString_rhs_2 mkThing : (str : Bool) -> IntString str mkThing False = ?mkThing_rhs_1 mkThing True = ?mkThing_rhs_2 mkString2 : (str : Bool) -> IntString str -> String mkString2 str x = ?mkString2_rhs mkString3 : (str : Bool) -> ?what -> String mkString3 False x = ?mkString3_rhs_1 mkString3 True x = ?mkString3_rhs_2 data Vect : Nat -> Type -> Type where Nil : Vect Z a (::) : a -> Vect k a -> Vect (S k) a append : Vect n a -> Vect m a -> Vect (n + m) a append [] ys = ?append_rhs_1 append (x :: xs) ys = ?append_rhs_2