LEAN 之 策略(Tactic)机制 浅析

        LEAN 除了是一门通用编程语言(General Purpose Programming Language)外,同时,还是理论证明工具(Theorem Prover)。因此,LEAN 具备很多特性来支持理论证明。其中,策略(Tactic)机制,就常用的手段。

        LEAN 的策略机制,属于 LEAN 的元编程(Meta-Programming)。通过,策略机制去修改编译器在处理 LEAN 代码时的内部状态。主要,是为围绕这个作为目的(Goal)的元变量(Metavariable),来操作的。

        首先,要理解,使用LEAN做理论证明时,如下图:

        有,基于两个假设(Hypotheses),得到结论(Target)。即

(H1 : 1 = 1) (H2 : 2 = 2)  ⊢ 2= 2

        其中,符号的左边为假设(Hypotheses),右边为结论(Target),整体为目的(Goal)。

        也就是,

目的(Goal):= 假设(Hypotheses) ⊢ 结论(Target)

       假设(Hypotheses)也称 本地上下文(Local Context)。

        那么,by 关键字是用于触发LEAN的策略机制,也就是说,by 后面的每行代码,在整个 by block 结束前,都是,<策略名>  <策略输入参数s>,如 上面的无参策略 custom_assump。

        也就是说, by 后面的所有策略的组合(Permutation)是为了满足(satisfy) 目的(Goal)的。此时,LEAN 会给定一个元变量(metavariable),如

?m : (H1 : 1 = 1) (H2 : 2 = 2)  ⊢ 2= 2

        那么, by 引出的策略组(Tactics)就是要给 ?m 赋值(assignment),使得,其值满足 类型 (H1 : 1 = 1) (H2 : 2 = 2)  ⊢ 2= 2

        这就是LEAN策略机制的核心思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KeithTsui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值