The evolution of formal methods allowed us to overcome many obstacles in verification of procedural programs. However, wide spreading of object-oriented languages has brought new challenges, even in the case of sequential programs. These problems were thoroughly exam-ined by ESC/Java and Spec#, though in many cases they just state the presence of the challenge. This paper presents an overview of some problematic issues and a three-level approach to their solution in the C#-light project.
Развитие формальных методов позволило решить многие вопросы верификации процедурных программ. Однако, широкое распространение объектно-ориентированных языков выявило новые проблемы даже для последовательных программ. Эти проблемы были детально исследованы в проектах ESC/Java и Spec#, но решение предлагалось в редких случаях. В этой статье рассмотрены некоторые из проблем и их решение с помощью трехуровневого подхода в проекте C#-light.