次のようなコードがあります。
if conditionA(x, y, z) then doA()
else if conditionB(x, y, z) then doB()
...
else if conditionZ(x, y, z) then doZ()
else throw ShouldNeverHappenException
(静的分析を使用して) 2 つのことを検証したいと思います。
- すべての条件
conditionA, conditionB, ..., conditionZ
が相互に排他的である場合 (つまり、2 つ以上の条件が同時に真になることはあり得ない)。 - 考えられるすべてのケースがカバーされます。つまり、「else throw」ステートメントは呼び出されません。
これを(簡単に)実行できるツールや方法を教えてください。
「Prolog を使用する」または「Mathematica を使用する」よりも詳細な情報をいただければ幸いです... ;-)
アップデート:
conditionA, conditionB, ..., conditionZ
が (純粋な) 関数であり、x、y、z が「プリミティブ」型であると仮定します。