You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Isabelle中是否存在可实现反向替换的subst类tactic?

在Isabelle中反向调用subst完成替换的方法

不需要额外证明对称引理,直接用以下两种方式就能实现把P r转换成P l的需求:

  • 使用 subst (sym X):sym 会先把形如 l=r 的引理 X 反转成 r=l,再执行替换
  • 使用 subst X[symmetric]:这是Isabelle更简洁的写法,通过 symmetric 属性直接调用引理的对称形式

修改你给出的示例,去掉辅助引理后可以这样写:

theorem "(λ x::nat . x) ≤ (λ x::nat . 2*x)"
  using [[simp_trace]]
  apply(rule le_funI)
  apply(subst (sym Nat.nat_mult_1))  -- 也可以替换成 apply(subst Nat.nat_mult_1[symmetric])
  apply(rule mult_le_mono1)
  apply(simp)
  done

这里Nat.nat_mult_1本身是1 * n = n,通过sym或symmetric属性反转等式方向后,subst就能把目标里的x替换成1*x,完全满足后续证明的需求。

内容的提问来源于stack exchange,提问作者alagris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:15:29