agda--html--html-dir=html src/index.agda
Agda v2.6.3,带 agda-stdlib型 v2.0实验
小牛。 前奏曲 包含常用的定义。 小牛。 CBPV公司 使用Agda定义基本的相关Call-By-Push-Value(CBPV)语言 假设 s和重写规则。 小牛。 导演 根据 贴花 . 小牛。 阶段 定义了外延和内涵的阶段性区别: 小牛。 阶段。 核心 假设一个命题, 文本 ,用于伸展阶段。 小牛。 阶段。 正常开放 定义开放/扩展形式 ◯ 对于 文本 . 小牛。 阶段。 关闭 定义封闭/内涵模式 ● 对于 文本 . 小牛。 阶段。 导演 假设 贴花 根据的法律 文本 不平等与平等是一致的。 小腿。 阶段。 无干扰 包含与相位区分/不干涉相关的定理。
小牛。 步骤 定义计算效果 步 以及通过重写规则关联的连贯律。
小牛。 平行 定义并行执行操作 _∥_ 其成本结构由 ParCostMonoid公司 (即。, _⊗_ ).
小牛。 数据。 IsBoundedG(已绑定G) 定义了成本约束的广义概念, IsBoundedG(已绑定G) ,其中绑定是类型为的程序 F单元 . 此外,它还提供了用于证明常见计算形式有界性的引理。 小牛。 数据。 IsBounded(已绑定) 实例化 IsBoundedG(已绑定G) 用于窗体的成本边界 阶跃(F单位)c(ret triv) . 小牛。 数据。 边界函数 使用定义成本约束函数 IsBounded(已绑定) . 小腿。 数据。 BigO公司 通过 IsBounded(已绑定) . 特别是,类型为 给定A测量的via尺寸,f∈𝓞(g) (即“给定类型的输入 A类 和尺寸测量 大小 在 A类 , 如果 在中 𝓞 (g) )是输入大小的下限 n’ 和常数乘数 k个 连同证据 小时 对于所有输入 x个 具有 n’≤尺寸x , f倍 以为界 k个 的倍数 g(尺寸x) ,表示 n’≤n⇒f[n]≤k g[n]通过h .
模块简单 程序的定义 身份证件 返回它的输入。 成本约束计划的定义 id/绑定 ,这与 身份证件 . 定理 id/is边界 证明了这一点 身份证件 以为界 id/绑定 . 定理 身份/正确 说明的扩展正确性 身份证件 作为…的必然结果 id/is边界 . 定理 id/渐近:给定nat被测-via(λn→n),id∈𝓞(λn→0) 说明 身份证件 在中 𝓞 (0) .
模块硬 程序的定义 身份证件 它通过归纳法重构其输入。 成本约束计划的定义 id/绑定 ,导致 n个 退货前费用 n个 . 定理 id/is边界 证明了这一点 身份证件 以为界 id/绑定 . 定理 身份/正确 说明的扩展正确性 身份证件 作为…的必然结果 id/is边界 . 定理 id/渐近:给定nat被测-via(λn→n),id∈𝓞(λn→n) 声明 身份证件 在中 𝓞 (n) ,其中 n个 是输入编号。
这是一个证据 易用id 和 硬.id 在外延上是等价的, easy.id≡hard.id) ,作为 身份/正确 证据。
程序的定义 总和 它将树的元素相加,在执行每个加法操作时产生单位成本。 在每个节点上,递归调用是并行计算的。 成本约束计划的定义 总和/界限 ,导致 尺寸t,深度t 通过值级函数返回树的总和之前的成本。 定理 总成本 说明 总和 和 总和/界限 是等效的。 定理 总和/界限 说明 总和t 以为界 总和/界限 ,作为 总和/has-cost .
模块速度慢 程序的定义 实验2 它通过执行两个相同的递归调用,通过其输入计算二的指数。 由于两个相同的递归调用是并行进行的,因此工作是指数级的,但跨度仍然是线性的。 成本约束计划的定义 expõ/绑定 ,引发 2^n-1,n 返回结果前的成本 2 ^n个 . 定理 expõ/有界 证明了这一点 实验2 以为界 exp⁄/绑定 . 定理 exp⁄/校正 说明的扩展正确性 实验2 作为…的必然结果 exp⁄/is边界 . 定理 exp/渐近:给定nat被测via(λn→n),exp⁄∈𝓞(λm→2^n,n) 说明 实验2 在中 𝓞 (2^n,n) .
模块快速 程序的定义 实验2 其通过标准递归算法通过其输入来计算二的幂。 成本约束计划的定义 exp⁄/绑定 ,引发 n,n个 返回结果前的成本 2 ^n个 . 定理 exp⁄/is边界 证明了这一点 实验2 以为界 exp⁄/绑定 . 定理 exp⁄/校正 说明的扩展正确性 实验2 作为…的必然结果 exp⁄/is边界 . 定理 expõ/渐近:给定通过(λn→n)测量的nat,expõ∈𝓞(λn→n,n) 说明 实验2 在中 𝓞 (n,n) .
证明 慢速膨胀 和 快速爆炸 在外延上是等价的, 慢≡快:(slow.exp≡快.exp⁄) .
示例。 排序。 可比 记录 可比 描述可比较类型的要求,包括 h-成本 假设每次比较都受到单位成本的限制。 这是排序的成本模型。
示例。 排序。 核心 排序正确性的谓词,基于 已排序 和置换关系 ↭ 从 agda-stdlib型 . 谓词 IsSort排序 声明 分类 是一种正确的排序算法。 定理 IsSort⇒≡ ,这表明任何两个正确的排序算法在扩展上是等价的。
示例。 排序。 相继的。 插入排序 程序的定义 分类 实现插入排序。 定理 sort/correct:IsSort排序 验证的正确性 分类 . 定理 排序≤排序/成本/已关闭 说明 分类l 以为界 分拣/成本/关闭l=长度l² . 定理 排序/渐近:给定(列表A)测量via长度,排序∈𝓞(λn→n²) 说明 分类 在中 𝓞 (n²) ,其中 n个 输入列表的长度。
示例。 排序。 相继的。 合并排序 示例。 排序。 相继的。 合并排序。 拆分 程序的定义 分裂 ,它将列表拆分为两半。 定理 拆分/更正 验证的正确性属性 分裂 . 定理 分割≤分割/成本 说明 拆分l 以为界 零 ,因为将列表拆分为两半不需要进行比较。
示例。 排序。 相继的。 合并排序。 合并 程序的定义 合并 ,它合并一对已排序的列表。 定理 合并/更正 验证的正确性属性 合并 . 定理 合并≤合并/成本/关闭 说明 合并(l₁,l⁄) 以为界 长度lõ+长度lõ .
程序的定义 分类 实现合并排序。 定理 sort/correct:IsSort排序 验证的正确性 分类 . 定理 排序≤排序/成本/已关闭 说明 分类l 以为界 排序/成本/关闭l=⌈log⁄长度l⌉*长度l . 定理 排序/渐近:给定(列表A)测量via长度,排序∈𝓞(λn→n*⌈log⁄n⌉) 说明 分类 在中 𝓞 (n*log⁄n⌉) ,其中 n个 输入列表的长度。
示例。 已摊销。 简单 提供简单摊销流抽象数据类型的摊销实现。 示例。 摊销。 排队 提供了 摊销队列 . 示例。 摊销。 动态数组 提供了动态增长阵列的实现。
模块快速排序 包含使用中的原语的非确定性快速排序算法 示例。 排序。 相继的。 核心 . 模块查找 包括在边界外索引上失败的列表查找功能。 模块普及 包括一个普遍(非良性)不确定性的简单示例。