-- returns if a list only contains odd elements
oddslist :: [Nat] -> Bool
oddslist []  = True
oddslist [Z] = False
oddslist [S Z] = True
oddslist [S(S Z)] = False
oddslist [S(S(S Z))] = True
oddslist [Z, Z] = False
oddslist [Z, S Z] = False
oddslist [Z, S(S Z)] = False
oddslist [Z, S(S(S Z))] = False
oddslist [S Z, Z] = False
oddslist [S Z, S Z] = True
oddslist [S Z, S(S Z)] = False
oddslist [S Z, S(S(S Z))] = True
oddslist [S(S Z), Z] = False
oddslist [S(S Z), S Z] = False
oddslist [S(S Z), S(S Z)] = False
oddslist [S(S Z), S(S(S Z))] = False
oddslist [S(S(S Z)), Z] = False
oddslist [S(S(S Z)), S Z] = True
oddslist [S(S(S Z)), S(S Z)] = False
oddslist [S(S(S Z)), S(S(S Z))] = True

