Есть функция

, проделывающая некоторое вычисление, использующее функцию

и некий дополнительный аргумент

. Можно ли иметь функцию

такую*, что

и такую, что просто проверить, что

— это действительно скорее всего результат применения

к некоторым известным нам аргументам (а не результат применения какой-то подкрученной злоумышленником

) — проще, чем посчитать

.
* И чтобы, разумеется, она вообще была практически реализуема на тьюринг-ограниченной архитектуре, если реализуема
.Дополнительно, у нас может не быть возможности самим посчитать

, потому что вместо конкретной

нам дан некоторый хеш

её кода

(будем считать, что у

только одна реализация

и потому ей соответствует только один хеш), где

известная функция — но нам всё равно хотелось бы иметь какие-то гарантии, что (при известных всем

) переданное нам

— это

.
Это описывает такую ситуацию:

симулирует какую-то систему, полностью задаваемую параметрами

, и оценивает управление

для неё. Хочется довести

до какой-то затем публично известной

, которую каждый проверяющий свою

мог бы запустить у себя сам и надеяться, что результаты запуска (вместе с параметрами) позволят другим считать, что он действительно воспользовался

и ничего не менял в её коде, не пользовался никакими уязвимостями в процессе выполнения и т. п., и притом было бы хорошо, если бы ему не надо было показывать сам код своей функции, вместо того дав что-то безобидное типа

.
Как я понимаю, задача почти исключительно требует очень жёстко впутать вычисление

в каждый шаг симуляции в

, значимый для получения результатов? (Это выглядит ужасно нереализуемым; но если это не предполагать, то мы вроде очень легко сможем написать

, делающую что нам захочется, так как код

по условию всем известен.) Или можно что-то попроще? Я вообще в криптографии не разбираюсь, знаю только некоторые идеи и что у неё можно типично просить.
-- Вс фев 28, 2021 18:15:02 --Если больше разных результатов выполнения

дают большую гарантию, предполагается, что можно варьировать параметр

как душе угодно (и это вынужденно скажется на

из результата).
-- Вс фев 28, 2021 18:33:44 --Было бы вообще прекрасно, если бы существовала

, такая что
![$g'([\![ \mathtt f ]\!], j(x, c, y, h(\mathtt f)), x) = (c, y)$ $g'([\![ \mathtt f ]\!], j(x, c, y, h(\mathtt f)), x) = (c, y)$](https://dxdy-04.korotkov.co.uk/f/f/5/8/f58584ec37efd803bcaaf5cb8e8da8c482.png)
для всех

(и когда определены подвыражения
![$[\![ \mathtt f ]\!], j(\ldots)$ $[\![ \mathtt f ]\!], j(\ldots)$](https://dxdy-01.korotkov.co.uk/f/4/2/d/42d0f079d3ec791de5954d47229d8b7982.png)
— не любой код задаёт подходящую

и не всегда

), вычислимая проще

. Но я думаю, это невозможно или искать подходящую

, когда

достаточно хитра, просто нецелесообразно.
Выше

— тип значений

,
![$[\![ \mathtt f_0 ]\!] = f_0$ $[\![ \mathtt f_0 ]\!] = f_0$](https://dxdy-03.korotkov.co.uk/f/2/6/c/26ca68be49191a8fb68f3fe1bd074d0082.png)
— получение функции по её коду.
-- Вс фев 28, 2021 18:38:00 --(Существование

, разумеется, требует, чтобы в

входил в какой-то мере протокол работы

. Уже потому это сомнительная затея, если ожидать, что

на каждом шаге не делает ничего особо сложного, что мне стоило наверно добавить к описанию наверху.)