PLT 板


LINE

看板 PLT  RSS
※ 引述《suhorng ( )》之铭言: : 想请问一下, NJ deduction system 中有这条规则 : Γ |- ⊥ : ---------- (⊥E) : Γ |- A : 而对应过去的程式是 : Γ |- e : ⊥ : -------------------- (⊥E) : Γ |- abort(e) : A : 其中 abort 是 Dijkstra's abort operator. : http://en.wikipedia.org/wiki/Guarded_Command_Language#Skip_and_Abort : 但是这能写出什麽有趣的程式吗……? 这东西在 Agda 才有完整意义。 常见的用例是在 case analysis 时排除不可能的情况。 如果是在 Haskell, 分析出(我们认为)不可能发生的情况时, 我们会用 error "some complaint", 像 head :: [a] -> a head [] = error "head accepts only non-empty lists" head (x : xs) = x 甚至直接省略不写。 head :: [a] -> a head (x : xs) = x 但在 Agda 所有程式都必须完全定义 (total), 由此条件可推知 pattern matching 时必须列出所有可能情况,不得省略, 因此在 Agda 更需要处理不可能发生的情况。 但 Agda 不应该有 error 这种函式,否则逻辑系统会不一致,取而代之的正是 ⊥-elim. error 可任意调用,但 ⊥-elim 不同: 以 ⊥-elim 解消不可能的情况时必须证明这情况真的不可能, 亦即从当下有的假设导出矛盾。 我设法举个简单但又不完全无聊的例子。 (其实 (A \/ B) -> (A -> ⊥) -> B 的证明就是一个解消不可能情况的例子, 不过让我们看另一个稍微具体一点的。) 定义 Booleans 为 data Bool : Set where false : Bool true : Bool 并用以下函式将 Booleans 诠释为自然数: value : Bool -> Nat value false = 0 value zero = 1 现设想我们需要定义某个函式,其型态为 -- P : Bool -> Bool -> Set f : (b : Bool) (b' : Bool) -> (value b <= value b') -> P b b' 白话地讲,在 value b 小於等於 value b' 的前提下, f 须构造出型态为 P b b' 之物件。 我们於是对 b 和 b' 做 pattern matching. 因为 f 必须是 total, 我们完整列出四个情况: f : (b : Bool) (b' : Bool) -> (value b <= value b') -> P b b' f false false leq = ?0 f false true leq = ?1 f true false leq = ?2 f true true leq = ?3 这四个情况下 leq 的型态并不一样:?0 处因假定 b 和 b' 皆为 false, leq 的型态化简为 value b <= value b' = value false <= value false = 0 <= 0 同理,leq 在 ?1, ?2, 和 ?3 的型态分别为 0 <= 1, 1 <= 0, 和 1 <= 1. 有意思的是 ?2 这里:1 <= 0 不应该有证明,我们却假设 leq 是 1 <= 0 的证明。 若 P true false 下有物件就罢了, 但常见状况是根本不可能构造出 P true false 的物件。 (否则当初 f 的型态也不用特意多加一个前提了。) 这时我们只能在 ?2 处填入 ⊥-elim p : P true false, 其中 p : ⊥ 是某个从 leq : 1 <= 0 构造出的矛盾证明。 於是 f 的定义基本上就只剩三个情况(?0, ?1, 和 ?3), 只有在这三个情况下我们才真的需要构造出 P b b' 之物件。 若 Agda 的形态系统一致,只考虑这三个情况完全合理, 因为程式实际执行时不可能出现 q : value true <= value false 这种型态的物件, 也就不可能出现 f true false q 这种算式,从而不可能需要求算 ⊥-elim p. -- 所以 FLOLAC'12 跳过 abort 不讲实在是明智决定 XD。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 86.2.123.53 ※ 编辑: joshs 来自: 86.2.123.53 (03/06 07:21)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP