しばらく検索しましたが、「述語検査」で簡潔な定義を見つけることができません。いつ述語チェックを適用できますか?ホアレのトリプルとどう違うの? Hoareのトリプルをすべてのコード行に正しく適用すれば、ソフトウェアの正確性を保証できます。 (私が間違っている場合は私を修正してください。)述語検査で同じ特性が得られますか?質問自体が正しくない場合、私はお詫び申し上げます。私は本当に述語検査が何をしているのか分からない。述語チェックとは何ですか?
1
A
答えて
2
述語は、真または偽の結果に等しいロジックステートメントまたは関数です。
手続き型言語と宣言型言語の両方の述語の最も単純な例は、ガード句とアサーションです。
> if (x != null) then ...
> assert x != null
Hoareの事前条件と事後条件は述語の例です。私は、カプセル化されたステートメントの細分性に関して、Hoareに明白なことはないと思っています。単一のステートメント、関数、またはプロセス全体である可能性があります。
不変量は、条件の前の条件である述語の特殊なケースです。
恐らく最も純粋な例はPrologです。ここで、文は述語です。別の例は、Eiffelで使用されているようなdesign-by-contractであり、LISPの空のリストも述語です。
私は、正確性が述語に準拠しているという資格を外して、「ソフトウェアの正確性を保証する」ことに同意することを嫌うだろう。
更新
- Assume in JUnitとBDDに考えるとは、事前条件 述語です。
- Assert in JUnitおよびその中のBDDは、 です。条件付き述語。
関連する問題
- 1. 合金 - チェック述語が正しいか?
- 2. .NETのラムダ式と述語の違いは何ですか?
- 3. 述語によるプロローグ分割リスト - 述語の結果をチェックする方法?
- 4. 述語#と:内部述語にアクセスする方法は?
- 5. Set.prototype.has()述語と
- 6. RDFの語彙と述語
- 7. Cでのジェネリックと述語#
- 8. NHibernateは(述語?)
- 9. なぜLINQ.Where(述語).First()は.First(述語)より高速ですか?
- 10. ハスケルではどのようにm-ary述語とn-ary述語をとり、(m + n)-ary述語を構築できますか?
- 11. Prologで述語名の後にスラッシュの意味は何ですか?
- 12. 一致する述語を検索します。述語の述語?
- 13. Ransack gemは述語名とカスタム述語名を選択します
- 14. 述語
- 15. 述語
- 16. 言語記述後の中括弧はマークダウンで何をしますか?
- 17. 式の述語を式の述語から取得するには?
- 18. オブジェクト値の一部がRamdaの述語と一致するかどうかをチェックする方法は?
- 19. [^ \ n]とは何ですか?(C言語)
- 20. 「用語ベクトルアルゴリズム」とは何ですか?
- 21. Swiftの述語とSortDescriptor 3
- 22. 式と述語の問題
- 23. 述語とjava8のマップ
- 24. 述語とリスト検索haskell
- 25. 私は述語オブジェクトのクローンを作成したい述語
- 26. 「または」述語の内側「と」JPQL
- 27. なぜ汎用アルゴリズムのために述語バージョンと非述語バージョンを区別するのですか?
- 28. boost :: spirit :: multi_passが述語と代替語でクラッシュする
- 29. CloudKit述語
- 30. 述語 - 迅速