Доказательство у Вас нехорошее. :)
Брррр. Вы меня сами запутали.

Смотрите: вы приписываете константы во вход, говоря, что это так, потому что можно переписать алгоритм

в виде

и вводить значения переменных.
Но ведь это уже другой алгоритм. То, что он получен из первого по определённому правилу, не делает число входных данных в нём и в первом одинаковым!
Совсем запутали. Мы транслятор конструируем или что? :)
Мы сейчас алгоритмы представляем на каком-то абстрактном языке. И при желании на любом языке можно сделать выбор операции по значению какой-нибудь переменной. И вводить её значение, как вы предлагаете.