Isabelle 艾斯巴赫项参数和子目标

Isabelle 艾斯巴赫项参数和子目标,isabelle,Isabelle,我目前正试图进入艾斯巴赫 我如何在子目标(见下文)中实现该值 是否使用了参数A的名称,而A不被解释为某个变量名?是否有一些通用的方法来实现这一点,或者是否需要对子目标战术进行特殊裁剪 theory Scratch (* Isabelle2019 *) imports Main "HOL-Eisbach.Eisbach" begin method test for A :: nat = subgoal_tac "A = 5" lemma "True" apply (test 1) (*

我目前正试图进入艾斯巴赫

我如何在子目标(见下文)中实现该值 是否使用了参数A的名称,而A不被解释为某个变量名?是否有一些通用的方法来实现这一点,或者是否需要对子目标战术进行特殊裁剪

theory Scratch (* Isabelle2019 *)
imports
Main
"HOL-Eisbach.Eisbach"
begin

method test for A :: nat =
  subgoal_tac "A = 5"

lemma "True"
  apply (test 1)
(* 
proof (prove)
goal (2 subgoals):
 1. A = 5 ⟹ True
 2. A = 5
 *)
(* The A has a yellow background in the output pane*)
  oops

end

我不知道为什么它不适用于
子目标\u tac
。我想我在什么地方读到过,所有以
\u tac
结尾的方法现在都有点不推荐了

作为解决方法,您可以使用引理:

method test for A :: nat =
  (rule meta_mp[where P="A = 5"])

lemma "True"
  apply (test 1)
(*
goal (2 subgoals):
 1. 1 = 5 ⟹ True
 2. 1 = 5
*)