정적 분석의 soundness는 논리학적 soundness 개념을 “프로그램 의미론”에 적용한 것이라고 볼 수 있습니다.
논리학: 증명 체계 ↔ 모델 이론
정적 분석: 추상 의미론 ↔ 구체 의미론
→ 틀린 결론은 절대 내리지 않는다는 보장을 공유.
정의 추론 규칙이나 증명 체계(proof system)가 sound하다는 것은, 그 체계에서 증명 가능한 모든 명제가 실제 의미론(모델)에서도 참이라는 것.
형식화
$$ \vdash \varphi \;\;\Rightarrow\;\; \models \varphi $$
즉, 증명(provability) → 참(semantic truth) (모든 증명 가능한 문장은 실제 모델에서 참이다.)
의미
정의 정적 분석이 sound하다는 것은, 추상 의미론(abstract semantics)이 구체 의미론(collecting semantics)을 과잉근사(over-approximation) 한다는 것.
형식화 프로그램 P, 추상화 함수 $\alpha$, 구체 의미론 $\llbracket P \rrbracket_C$, 추상 의미론 $\llbracket P \rrbracket_A$에 대해:
$$ \alpha(\llbracket P \rrbracket_C) \;\;\subseteq\;\; \llbracket P \rrbracket_A $$
즉, 추상 의미론은 실제 도달 가능한 모든 상태를 포함해야 한다.
의미