コード生成の非常に単純な定義があるとします。特定のケースに対してのみ定義され、それ以外の場合は実行時例外をスローします。
definition "blubb a = (if P a then True else undefined)"
blubb
今、私は正しいことを示したいと思います。例外がスローされるケースは無視する必要があります (数学的な観点ではなく、私の観点から)。X
ただし、任意の値がであると仮定するサブゴールになってしまいますundefined
。次の補題はサブゴールとほぼ同等です。False
例外がスローされる (つまり、undefined
返される)ケースを無視したいので、表示したいと思います。
lemma "X = undefined ⟹ False"
これは証明できません。
try
Nitpick found a counterexample for card 'a = 1:
Free variable:
X = a1
例外をスローしたり処理したりする可能性のある関数の正確性を示す最良の方法は何undefined
ですか? これはこの質問に関連しています。