Я понимаю, что это означает, что можно потенциально написать программу, чтобы формально доказать, что программа, написанная на статически типизированном языке, будет свободна от определенного (малого) подмножества дефектов.
Моя проблема заключается в следующем:
Предположим, что у нас есть два завершающих полных языка, A и B. Предполагается, что он "безопасен по типу", а "B", как предполагается, не должен быть. Предположим, что мне дана программа L, чтобы проверить правильность любой программы, написанной на A. Что должно помешать мне переводить любую программу, написанную в B в A, используя L. Если P переводит из A в B, то почему это не PL a действительный тип проверки для любой программы, написанной на B?
Я обучаюсь в Алгебре, и я только начинаю изучать CS, поэтому может быть какая-то очевидная причина, что это не работает, но я бы очень хотел узнать. Вся эта "техника безопасности" имеет какое-то вредное для меня время.