Bu sorunun etrafındaki tartışmada Gilles, dizileri kullanan bir algoritmanın herhangi bir doğruluk kanıtının, sınır ötesi dizi erişiminin olmadığını kanıtlamak zorunda olduğunu; çalışma zamanı modeline bağlı olarak, bu bir çalışma zamanı hatasına veya dizi olmayan öğelere erişime neden olur.
Bu tür doğruluk kanıtlarını gerçekleştirmek için yaygın bir teknik (en azından lisans çalışmalarında ve muhtemelen otomatik doğrulamada) Hoare mantığını kullanmaktır . Standart kurallar dizisinin dizilerle ilgili herhangi bir şey içerdiğinin farkında değilim; monadik değişkenlerle sınırlı görünmektedirler.
Formun aksiyomlarını eklediğimizi hayal edebiliyorum
Ancak, sağ taraftaki dizi erişimiyle nasıl başa çıkacağınız net değil, yani bazı ifadelerde x : = E ifadesinde karmaşık bir ifadenin parçasıysa .
Dizilerin erişimi Hoare mantığında nasıl modellenebilir, böylece geçersiz erişimin olmaması programın doğruluğu için kanıtlanabilir ve kanıtlanabilir mi?
Yanıtlar, dizi öğelerinin dışındaki ifadelerde veya x : = E içindeki bazı parçası olarak kullanılmasına izin vermediğimizi varsayabilir; çünkü bu, ifadeyi kısıtlamaz; her zaman istenen değeri geçici bir değişkene atayabiliriz, yani şunu yazın : t : = A [ i ] ; i f ( t > 0 ) ... yerine i f ( A [ i ] > 0 ) ....
length
varA
?