Я думаю, что первое утверждение технически неверно, хотя на практике верно.
Статическая типизация по сути аналогична проверке свойств программ, и с помощью достаточно мощной логики вы можете доказать, что все интересные программы верны.
Проблема в том, что для мощной логики вывод типа больше не работает, и вы должны предоставить доказательства как часть программы, чтобы средство проверки типов могло выполнять свою работу. Конкретным примером являются пруверы более высокого порядка, такие как Coq. Coq использует чрезвычайно мощную логику, но также очень утомительно делать что-либо в Coq, потому что вы должны предоставить доказательства в мельчайших деталях.
Среди интересных программ, которые доставят вам больше всего хлопот, будут переводчики, поскольку их поведение полностью зависит от входных данных. По сути, вам нужно будет рефлексивно доказать правильность проверки типа для этого ввода.
Что касается второго утверждения, он может ссылаться на теорему Гёделса о неполноте. В нем говорится, что для любой данной системы доказательств существуют истинные утверждения арифметики (логика сложения и умножения натуральных чисел), которые не могут быть доказаны в системе доказательств. В переводе на статические системы типов у вас будет программа, которая не делает ничего плохого, но статическая система типов не может этого доказать.
Эти контрпримеры строятся путем обращения к определению системы доказательств, говоря, по сути, «я не могу быть доказан» в переводе на арифметику, что не очень интересно. ИМХО программа, построенная аналогично, тоже не будет интересна.