Есть функция 

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

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

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

 такую*, что 

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

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

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

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

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

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

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

 её кода 

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

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

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

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

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

 — это 

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

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

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

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

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

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

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

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

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

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

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

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

 по условию всем известен.) Или можно что-то попроще? Я вообще в криптографии не разбираюсь, знаю только некоторые идеи и что у неё можно типично просить.
-- Вс фев 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 --(Существование 

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

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

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

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