мелкошаговый совсем автоматный, а крупношаговый ближе к денотационной семантике, он более абстрактный, т.е. оставляет технические вещи за кадром отчасти
И на деле оба этих подхода вполне могут использоваться в рамках одного описания, если хочется чтобы получилась компактная запись, без чрезмерного количества правил :)
На этот раз я более строго сформулирую. Проверка типов относится к статической семантике языка. Статической — потому что проверка осуществляется во время компиляции.
И для статической, и для динамической семантики может использоваться один и тот же формализм на основе правил переписывания. К тому же в некоторых ЯП граница между статическим и динамическим бывает довольно зыбкой. Но обычно под операционной семантикой подразумевают семантику динамическую.
это в общем ключевой момент, то для чего ОС и вводится: про систему неплохо бы доказать что она строго нормализующая, т.е. перепись 1) терминирует 2) на нормальной форме