Предположим, вам нужно написать какое-то программное обеспечение, которое удовлетворяет условию: "во время выполнения ни одна функция не должна в конечном итоге вызывать себя прямо или косвенно".
Это условие будет неразрешимым, но может быть более ограничительное условиеdecidable, например что-то вроде: «указатели на функции не должны использоваться, и никакая функция не должна содержать вызовов к себе прямо или косвенно».
Это подчеркивает, что иногда можно обменять гибкость на разрешимость, так чтонекоторые обязательные свойства системы могут стать обязательными для исполнения.
Если язык программирования является разрешимым, то всегда можно будет решить, является ли программа действительной программой для этого языка.
Но даже если программа является допустимой программой для этого языка, остается нерешенным, может ли эта программа вызвать переполнение буфера или тупик.