«own (head xs) xs» проверяет, находится ли голова xs в пределах xs, что всегда будет истинным.
(За исключением случаев, когда xs пуст, в этом случае ваша программа аварийно завершится! "Head"частичная функция, вылетает с пустыми списками)
Это исправит это (как указано @ talex , но я также предлагаю сделать его более общим, нет необходимости специализировать его наЦелое число):
repeated :: Eq a => [a] -> Bool
repeated [] = False
repeated (x:xs) | belongs x xs = True
| otherwise = repeated xs