내가 FRAMA-C에 새로 온 사람과 나는이 간단한 예제와 문제가 무엇인지 이해하고 싶습니다 :이 예에서할당 절 입증 할 수 없습니다 - FRAMA-C
/*@ requires \valid(array+(0..length-1))
@ ensures \forall integer k; 0 <= k < length ==> array[k] == 0;
@ assigns array[0..length-1];
*/
void fill(int array[], int length){
/*@ loop invariant 0 <= i <= length;
@ loop invariant \forall integer k; 0 <= k < i ==> array[k] == 0;
@ loop assigns i, array[0..i-1];
@ loop variant length - i;
*/
for(int i = 0; i < length; i++){
array[i] = 0;
}
}
, FRAMA-C를 (WP + Value)는 함수 계약에서 assign 절을 증명할 수 없으며 이유를 이해할 수 없습니다. 어떤 도움을 주시면 감사하겠습니다 =)
왜? 괜찮지 않니? 난 그냥 int 배열을 (정적으로 선언 된) 0으로 채우기 싶습니다 ... int * array [] int 포인터 배열이 아닙니다 ?? 어쨌든 트릭을하지 않습니다./ – roo
무슨 뜻인지 모르겠군요. 이 서명 채우기 (int * 배열, int 길이)를 사용하더라도 문제는 여전히 여기에 있습니다 ... – roo
@EliasVanOotegem C에서 배열은 참조로 전달됩니다. 기능이 좋으며 사양이 좋습니다. Value 플러그인은 정보 소스로서 "assigns"절만 사용하고 소스 코드가없는 라이브러리 함수에 대해서만 사용하는 것을 목표로하지 않으므로 "할당"을 증명하지 않습니다. 나는 WP가 그것을 증명할 것이라고 생각했다. Roo, 자동 프로 버는 무엇을 설치 했습니까? –