0
アレイの要素を合計する関数に対して、どのようにしてSpark事後条件を書いていますか? (。スパーク2014、誰かが、私はそれを適応させることができる必要があり、以前のスパークのためにそれを行う方法を私に示している場合)配列の合計のためのSpark-Adaの事後条件
だから私は持っている場合:
type Positive_Array is array (Positive range <>) of Positive;
function Array_Total(The_Array: Positive_Array) return Positive
with
Post => Array_Total'Return = -- What goes here?
is
-- and so on
を私は心配する必要はありません。私の特定のケースではオーバーフローしています(私は総計が初期化されていることを知っており、単調に減少するだけです)。
おそらく、実装では証明者を助けるためにループバリアントが必要ですが、それは事後条件の簡単なバリエーションであるはずですので、まだ心配していません。
おそらくゴースト関数が役に立ちます。 'Array_Total'とほとんど同じでなければならないので、私はその証明がどれほど説得力があるかは分かりません。 –
与えられたインデックスまでの要素の総数に対するゴースト関数がループの変形に役立つことが分かります。私はSparkで再帰が許可されているので、典型的な機能的アプローチを使用することができますが、古典的な(そして非再帰的な)解決策の古典的な問題でなければならないと感じています。 – digitig