IO — это обязательный элемент того, что мы называем ЯП, в Coq он добавляется библиотекой и, вообще говоря, в формальных языках IO тоже должен рассматриваться формально
Многопоточность — значит, язык, который это поддерживает, а значит, система доказательств, которая позволяет это делать