pdf文档 The Idris Tutorial Version 0.11.1

120.52 KB 14 页 0 评论
语言 格式 评分
英语
.pdf
3
摘要
文档是关于Idris编程语言的教程,主要涵盖两个核心内容:类型提供者和交互式定理证明器。类型提供者部分展示了如何通过定义函数(如bytesToType和getDevT)来提供特定的位宽类型(如B8、B16等),并在主程序中使用这些提供的类型。交互式定理证明器部分则通过一个具体的例子(plus n (plus m o) = plus (plus n m) o)说明了如何使用Idris的交互式环境来证明自然数加法的结合律,包括加载模块、应用tactics(如intros、induction、compute等)以及完成证明的过程。
AI总结
本文档是《The Idris Tutorial Version 0.11.1》的中文总结,内容主要分为两部分:**类型提供器(Type Providers)**和**交互式定理证明器(Interactive Theorem Prover)**。以下是核心内容的总结: --- ### **1. 类型提供器(Type Providers)** #### **1.1 关键功能** - **类型提供器**是一种机制,可以在程序运行时根据需求动态提供类型信息。 - 示例代码中定义了以下关键函数: - `bytesToType`: 根据不同的位数返回对应的类型(如B8、B16、B32、B64),如果不匹配则返回错误信息。 - `getDevT`: 使用`IO`操作结合`bytesToType`获取设备类型大小。 - `main`: 通过`putStrLn`输出设备类型大小。 #### **1.2 实用示例** - `Main.idr`文件中使用`%provide`关键字将`getDevT`的结果作为`BitWidth`类型提供给程序,并输出其大小。 ```idris module Main import Providers %language TypeProviders %provide (DevTBitWidth : BitWidth) with getDevT main : IO () main = putStrLn $ "size of dev_t: " ++ show DevTBitWidth ``` - 这展示了如何在程序中动态获取和使用类型信息。 --- ### **2. 交互式定理证明器(Interactive Theorem Prover)** #### **2.1 目标** - 证明`Nat`类型上加法操作的结合律:`plus n (plus m o) = plus (plus n m) o`。 - 文件`Foo.idr`中定义了这个定理: ```idris module Foo plusAssoc : plus n (plus m o) = plus (plus n m) o plusAssoc = ?rhs ``` - 使用`?rhs`表示需要证明的目标。 #### **2.2 interactive proof process** 1. **启动交互式会话**:将文件`Foo.idr`加载到Idris REPL中。 ```shell $ idris Foo.idr ``` 2. **探索上下文**:使用`:p rhs`命令查看证明目标。 ``` *Foo> :p rhs ---------- Goal: { hole 0 } : (n : Nat) -> (m : Nat) -> (o : Nat) -> plus n (plus m o) = plus (plus n m) o ``` 3. **应用策略**: - **intros**:引入变量`n`, `m`, `o`。 - **induction n**:对`n`进行归纳。 - **compute**:简化计算。 - **rewrite ihn__0**:重写目标表达式。 - **trivial**:处理简单目标。 4. **证明完成**: - 系统自动生成证明脚本: ```idris proof intros induction n compute trivial intros compute rewrite ihn_0 trivial ``` - 证明脚本可以直接添加到`Foo.idr`文件中。 #### **2.3 总结** - 交互式定理证明器通过一系列策略(`intros`, `induction`, `compute`, `rewrite`, `trivial`)帮助用户完成证明。 - 该章节展示了如何通过交互式方式证明加法的结合律,并生成证明脚本。 --- ### **3. 文档信息** - 文档基于**《The Idris Tutorial Version 0.11.1》**,内容由社区成员贡献。 - Idris的文档(包括本教程)以**CC0协议**发布,用户可以自由使用和改编。 --- 以上是本文档的核心内容总结,涵盖了**类型提供器**和**交互式定理证明器**的主要功能及使用方法。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 7 页请下载阅读 -
文档评分
请文明评论,理性发言.