我正在尝试将“s”应用于我的通用量词,以将假设列表操作为 P(s) ==> M(s), P(s) 的形式,然后证明 M(s)。
到目前为止,这是我所拥有的:
set_goal([``!(x:'a).(P(x) ==> M(x))``,``(P:'a->bool)(s:'a)``], ``(M:'a->bool)(s:'a)``);
e(PAT_ASSUM ``!x.'a`` (fn th => (ASSUME_TAC (SPEC ``s`` th))));
目标堆栈:
Incomplete goalstack:
Initial goal:
(M :'a -> bool) (s :'a)
------------------------------------
0. (P :'a -> bool) (s :'a)
1. !(x :'a). (P :'a -> bool) x ==> (M :'a -> bool) x
扩展 PAT_ASSUM 时,我收到此错误提示 Alpha 'a.
> Exception-
HOL_ERR
{message =
"on line 89, characters 17-18:\nLexical error - Term idents can't begin with prime characters",
origin_function = "Absyn", origin_structure = "Parse"} raised
我知道要解决剩下的问题,另一个 PAT_ASSUM 将用于A ==> B
该模式,我运行 IMP_ELIM,这部分是简单的部分。我只是在努力通过显示 s 是 'a.