В идеале так и должно быть. Пока что так умеет только ATS, и он жутко неудобен
Это элементарно реализуется. Опять же студентом за пару дней. Тебе всё что нужно - это refinement, где x уточняется до n. У тебя уже есть запрет вывода чего угодно за скоуп. Вот просто даелаешь, что под if(x < n) x < n