我想知道是否有办法在当前上下文之外的某个级别(或者直到原语)获得证明术语(通过Print
序列化)。例如,执行以下
From mathcomp Require Import odd_order.PFsection14.
Print Feit_Thompson.
结果
Feit_Thompson =
fun (gT : fingroup.FinGroup.type)
(G : fingroup.group_of (gT:=gT)
(ssreflect.Phant
(fingroup.FinGroup.arg_sort
(fingroup.FinGroup.base gT)))) =>
BGsection7.minSimpleOdd_ind no_minSimple_odd_group (gT:=gT)
(G:=G)
: forall (gT : fingroup.FinGroup.type)
(G : fingroup.group_of (gT:=gT)
(ssreflect.Phant
(fingroup.FinGroup.arg_sort
(fingroup.FinGroup.base gT)))),
is_true
(ssrnat.odd
(fintype.CardDef.card
(T:=fingroup.FinGroup.arg_finType
(fingroup.FinGroup.base gT))
(ssrbool.mem
(finset.SetDef.pred_of_set
(fingroup.gval G))))) ->
is_true (nilpotent.solvable (fingroup.gval G))
但我想将证明术语中使用的标识符(定理和定义)(例如no_minSimple_odd_group
)展开到其证明条款中。我怀疑定理和引理的不透明性可能会成为这个目的的障碍。
我能想到的天真解决方案是通过Print
递归查询每个标识符。或者通过程序提取不那么天真(并且由于代表证明术语的语言的变化而不太理想)解决方案。
答案 0 :(得分:2)
我不确定是否有直接的方法可以做到这一点,但实现起来并不难,在这个级别上,不透明度只是一个标志,可以被绕过。
但是,我想知道你想要达到什么目标?
请注意,以这种方式获得的大多数证明条款都是无法管理的,特别是展开将很快导致比指数大小爆炸更糟糕。