I am trying to replace some of my old usages of case goal_* with the new goals method. In the course, I encountered the problem that goal inserts the facts chained in as additional assumptions of my goals and also for the case bindings. This is unfortunate when I use goals sequenced after rule. Below is a prototypical example:

  lemma foo: "[| X; Y; X ==> Y; Y ==> X |] ==> True" by simp

  have "A" and "B"
  then (* chaining is required to instantiate the free variables in the theorem 
*)
  show True
  proof(rule foo)
    case goal_1
    ...
  next
    case goal_2
    ...

Now, when I replace (rule foo) with (rule foo, goals), the goals methods inserts the facts A and B into every subgoal and into the case bindings. Is there a canonical way to avoid this?

I can of course write

  apply(rule foo) proof goals

but this feels like going against the spirit of Isar. Why does goals have to insert chained facts at all?

Andreas

PS: I am using Isabelle/3444e0bf9261.

_______________________________________________
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev

Reply via email to