2
을 증명하기위한 :루프 불변 나는 우리가이 프로그램이 부분적으로 올바른 증명할 수 있도록 루프 불변을 찾기 위해 노력하고있어 일부 정확성
{ n >= 1 } pre-condition
i = 1;
z = 1;
while (i != n) {
i = i + 1;
z = z + i*i;
}
{ z = n*(n+1)*(2*n + 1)/6 } post-condition
정말 붙어입니다. 지금까지 시도한 불변의 일부는 다음과 같습니다
z <= n*(n+1)*(2*n + 1)/6^i <= n
및
z = i*(i+1)*(2*i + 1)/6^i <= n
난 정말 몇 가지 조언을 부탁드립니다.
사후 조건에 오타가있을 수 있습니까? '... = 6'은 이상하게 보입니다 ('z'는 항상 고정 숫자'6'과 같습니다). – chris
Btw : 게시물에서 "^"기호가 "지수"(내 답변에서와 같이)를 나타내 었는가, 논리적 기호 "and"("&&'또는"/\'). 나는'z = ... && i <= n'이 대안 해석보다 더 이해하기 때문에 묻고 있습니다. – chris