ポインターを入力として取り、ポインターが NULL でないときにその内容を使用する関数の依存関係について、ACSL 仕様を作成する必要があります。この仕様は正しいと思います:
/*@ behavior p_null:
assumes p == \null;
assigns \result from \nothing;
behavior p_not_null:
assumes p != \null;
assigns \result from *p;
*/
int f (int * p);
しかし、私はむしろ動作を避けたいと思いますが、これが正しい(そして同等である)かどうかはわかりません:
//@ assigns \result from p, *p;
int f (int * p);
場合でも*p
右の部分で使用できますか?\from
p
NULL