Why can't I make my cases explicit in Isabelle when the proof is already complete but gives a “fails to refine any pending goal” error?

前端 未结 1 525
甜味超标
甜味超标 2021-01-22 18:07

I\'m going through chapter 5 of concrete semantics.

I got some error while working through this toy example proof:

lemma
  shows \"¬ ev (Suc 0)\"
         


        
1条回答
  •  广开言路
    2021-01-22 18:33

    The auto-generated proof outline is sometimes just wrong. This is one such case.

    The reason why cases solves your goal here is that it does some pre-simplification of the cases (as documented in §6.5.2 of the Isabelle/Isar reference manual). This is enough to make both cases disappear automatically here, since they are clearly impossible. Your proof state therefore has no proof obligations left, and Isar only allows you to prove things with show that you still have to prove. That's why you get the error message Failed to refine any pending goal: There simply are no pending goals.

    You can disable the pre-simplification of cases using the (no_simp) parameter, i.e.

    proof (cases (no_simp))
    

    Note however that cases does not define the ?case variable because it does not change the goal. Just use ?thesis instead.

    0 讨论(0)
提交回复
热议问题