Тестирую богомерзкiй ИИ
Aug. 28th, 2025 01:12 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Прiятель далъ мне попробовать платный ChatGPT-5, и я задалъ богомерзкому ИИ задачку, не очень простую, но вродѣ и не слишкомъ сложную.
Нужно доказать, что въ System F типъ T = ∀X. ((X → X) → P) → Q эквивалентенъ типу P → Q. Здѣсь P, Q какiе-то произвольные, но фиксированные типы.
Интуицiя въ томъ, что функцiю типа Т можно написать только однимъ способомъ:
Мы не можемъ подставить въ функцiю k что-либо, кромѣ identity function, потому что мы не можемъ написать кодъ никакой другой функцiи типа x -> x для совершенно неизвѣстнаго типа "x".
Но это лишь нестрогая интуицiя. Для строгости, нужно построить изоморфизмъ, скажемъ такъ:
и доказать, что "fromT" и "toT" являются обратными другъ другу функцiями.
Какъ обычно бываетъ въ такихъ ситуацiяхъ, доказательство очень простое въ одну сторону: fromT(toT(h)) = h. Но въ другую сторону, toT(fromT(t)) = t, доказательство возможно лишь въ предположенiи, что функцiя t :: Т удовлетворяетъ своему закону параметрической естественности. (Каковой законъ вообще-то довольно длинный и запутанный, пользоваться имъ сложно.)
Я потратилъ въ совокупности нѣсколько часовъ на эту задачу, но такъ и не нашелъ строгаго доказательства. Поэтому я рѣшилъ спросить у ИИ.
( Read more... )
Нужно доказать, что въ System F типъ T = ∀X. ((X → X) → P) → Q эквивалентенъ типу P → Q. Здѣсь P, Q какiе-то произвольные, но фиксированные типы.
∀X. ((X → X) → P) → Q ≅ P → Q
Интуицiя въ томъ, что функцiю типа Т можно написать только однимъ способомъ:
f :: ((x -> x) -> P) -> Q f k = h (k id) -- гдѣ h : P -> Q это какая-то заданная функцiя.
Мы не можемъ подставить въ функцiю k что-либо, кромѣ identity function, потому что мы не можемъ написать кодъ никакой другой функцiи типа x -> x для совершенно неизвѣстнаго типа "x".
Но это лишь нестрогая интуицiя. Для строгости, нужно построить изоморфизмъ, скажемъ такъ:
fromT :: (forall x. ((x -> x) -> P) -> Q) -> P -> Q fromT t = ... toT :: (P -> Q) -> ((x -> x) -> P) -> Q toT h = \k -> h (k id)
и доказать, что "fromT" и "toT" являются обратными другъ другу функцiями.
Какъ обычно бываетъ въ такихъ ситуацiяхъ, доказательство очень простое въ одну сторону: fromT(toT(h)) = h. Но въ другую сторону, toT(fromT(t)) = t, доказательство возможно лишь въ предположенiи, что функцiя t :: Т удовлетворяетъ своему закону параметрической естественности. (Каковой законъ вообще-то довольно длинный и запутанный, пользоваться имъ сложно.)
Я потратилъ въ совокупности нѣсколько часовъ на эту задачу, но такъ и не нашелъ строгаго доказательства. Поэтому я рѣшилъ спросить у ИИ.
( Read more... )