잠시 동안 검색했지만 "predicate checking"에 대한 간결한 정의를 찾을 수 없습니다. 언제 술어 검사를 적용 할 수 있습니까? 호아의 트리플과 비교하면 어떨까요? Hoare의 트리플을 모든 코드 행에 올바르게 적용하면 소프트웨어의 정확성을 보장 할 수 있다고 생각합니다. (내가 틀렸다면 나를 바로 잡아주세요.) 술어 검사가 동일한 속성을 가질 수 있습니까? 질문 자체가 잘못 구성된 경우 사과드립니다. 나는 정말로 술어 검사가 무엇을하는지 모른다.술어 검사 란 무엇입니까?
1
A
답변
2
술어은 참 또는 거짓 결과와 동일한 논리 문장 또는 기능입니다.
절차 적 언어 및 선언적 언어 모두에서 술어의 가장 간단한 예는 guard 절과 assertion입니다.
> if (x != null) then ...
> assert x != null
Hoare의 사전 조건 및 사후 조건은 술어의 예입니다. 나는 Hoare에 캡슐화 된 명령문의 세분성에 대해 명시적인 사항이 없다고 생각합니다. 단, post-condition으로의 단일 이탈 경로가 있어야합니다. 단일 명령문, 함수 또는 전체 프로세스 일 수 있습니다.
불변 식은 술어의 특수한 경우이며 사후 조건 = 사전 조건입니다.
아마도 가장 순수한 예가 프롤로그입니다. 모든 문은 술어입니다. 또 다른 예는 에펠 (Eiffel)에서 사용되는 계약 별 설계 (design-by-contract)이며, LISP의 빈 목록은 또한 술어입니다.
"소프트웨어의 정확성 보장"에 동의하기를 꺼려하고 정확성이 조건부에 부합 함을 증명하지 못합니다.
업데이트
- Assume in JUnit과 BDD에서 주어는 사전 조건 술어이다.
- Assert in JUnit 및 그 다음 BDD은 사후 조건 술어입니다.
관련 문제
- 1. Caliburn 유효성 검사 추상화 란 무엇입니까
- 2. 일치하는 술어 찾기. 술어의 술어?
- 3. LINQ의 술어
- 4. 삽입/추가하기 전에 C#의 목록에서 내용을 확인하는 방법은 무엇입니까? 술어 클래스 란 무엇입니까?
- 5. "술어 기반 검색"이란 무엇입니까?
- 6. LINQ 어디 FirstOrDefault (술어) 대 (술어)
- 7. 스레드 란 무엇입니까 (스레드 란 무엇입니까?)?
- 8. 이해 술어
- 9. IndexOf 술어?
- 10. 스칼라 - 술어
- 11. 술어 캐시
- 12. 술어 사용
- 13. CGI 란 무엇이며 CGI 스크립트 란 무엇입니까?
- 14. HtmlAgilityPack, Xpath에서 술어 사용
- 15. 이 술어/CreateDelegate 사용에있어 문제점은 무엇입니까?
- 16. 술어 # 및 : 내부 술어에 액세스하는 방법은 무엇입니까?
- 17. 술어 본문을 가져 오는 방법은 무엇입니까?
- 18. 술어 내에서 객체 ID를 참조하는 방법은 무엇입니까?
- 19. LINQ가 왜 그렇습니다. (술어) .First()가 .First (술어)보다 빠릅니다.
- 20. Ransack gem에서 술어 및 사용자 정의 술어 이름을 선택하십시오.
- 21. 프롤로그에 술어 결합하기
- 22. arraycontroller에서 술어 업데이트
- 23. 일치하는 술어 트래버스/기록
- 24. 여러 술어 결합
- 25. 목록의 Remove_if 술어
- 26. 있는 NSDate 일정 술어
- 27. 단항 Prolog 술어 만족하기
- 28. Java : 여러 술어 결합
- 29. 목록에서 술어 만들기
- 30. antlr gated 술어