Abstract Refinement Types.ppt
《Abstract Refinement Types.ppt》由会员分享,可在线阅读,更多相关《Abstract Refinement Types.ppt(105页珍藏版)》请在麦多课文档分享上搜索。
1、Abstract Refinement Types,Niki Vazou1, Patrick M. Rondon2, and Ranjit Jhala1 1UC San Diego 2Google,1,Vanilla Types,12 : Int,2,Refinement Types,12 : v: Int | v 10 ,3,Refinement Types,12 : v: Int | v = 12 ,4,Refinement Types,12 : v: Int | v = 12 ,v = 12 0 v 20 even v,5,Refinement Types,12 : : v: Int |
2、 v = 12 : v: Int | 0 v 20 even v ,v = 12 0 v 20 even v,6,Refinement Types,12 : : v: Int | v = 12 12 : : v: Int | 0 v 20 even v ,7,A max function,max : Int - Int - Intmax x y = if x y then x else y,8,A refined max function,max:x:Int - y:Int - v:Int | v x v ymax x y = if x y then x else y,9,Using max,
3、max:x:Int - y:Int - v:Int | v x v ymax x y = if x y then x else y,b = max 8 12 - assert (b 0),max 8 12 : v : Int | v x v y 8/x12/y,10,Using max,max:x:Int - y:Int - v:Int | v x v ymax x y = if x y then x else y,max 8 12 : v : Int | v 8 v 12 ,11,b = max 8 12 - assert (b 0),Using max,max:x:Int - y:Int
4、- v:Int | v x v ymax x y = if x y then x else y,max 8 12 : v : Int | v 12 ,12,b = max 8 12 - assert (b 0),Using max,max:x:Int - y:Int - v:Int | v x v ymax x y = if x y then x else y,v 12 v 0,13,b = max 8 12 - assert (b 0),Using max,max:x:Int - y:Int - v:Int | v x v ymax x y = if x y then x else y,ma
5、x 8 12 : v : Int | v 0 ,14,b = max 8 12 - assert (b 0),b = max 8 12 - assert (b 0),Using max,max:x:Int - y:Int - v:Int | v x v ymax x y = if x y then x else y,max 8 12 : v : Int | v 0 ,15,Using max,max:x:Int - y:Int - v:Int | v x v ymax x y = if x y then x else y,We get max 3 5 : v : Int | v 5 ,We w
6、antmax 3 5 : v : Int | v 5 odd v ,16,b = max 8 12 - assert (b 0)c = max 3 5 - assert (odd c),Using max,Problem: Information of Input Refinements is Lost,We get max 3 5 : v : Int | v 5 ,17,We wantmax 3 5 : v : Int | v 5 odd v ,Problem: Information of Input Refinements is Lost,Solution: Parameterize T
7、ype Over Input Refinement,Our Solution,18,Abstract Refinements,Solution: Parameterize Type Over Input Refinement,max:forall Prop. Int - Int - Intmax x y = if x y then x else y,19,Abstract Refinements,Solution: Parameterize Type Over Input Refinement,max:forall Prop. Int - Int - Intmax x y = if x y t
8、hen x else y,20,Abstract refinement,“if both arguments satisfy p, then the result satisfies p”,Abstract Refinements,Solution: Parameterize Type Over Input Refinement,max:forall Prop. Int - Int - Intmax x y = if x y then x else y,21,Abstract refinement,“if both arguments satisfy p, then the result sa
9、tisfies p”,Abstract Refinements,Solution: Parameterize Type Over Input Refinement,max:forall Prop. Int - Int - Intmax x y = if x y then x else y,22,Abstract refinement,“if both arguments satisfy p, then the result satisfies p”,Abstract Refinements,Solution: Parameterize Type Over Input Refinement,ma
10、x:forall Prop. Int - Int - Intmax x y = if x y then x else y,23,Abstract refinement,“if both arguments satisfy p, then the result satisfies p”,Using max,max:forall Prop. Int - Int - Intmax x y = if x y then x else y,max : forall Prop. Int - Int - Int,24,b = max (0) 8 12 - assert (b 0)c = max odd 3 5
11、 - assert (odd c),Using max,max:forall Prop. Int - Int - Intmax x y = if x y then x else y,max : forall Prop. Int - Int - Int,25,b = max (0) 8 12 - assert (b 0)c = max odd 3 5 - assert (odd c),Using max,max:forall Prop. Int - Int - Intmax x y = if x y then x else y,max odd : Int - Int - Int odd/p,26
12、,Using max,max:forall Prop. Int - Int - Intmax x y = if x y then x else y,max odd : v:Int | odd v - v:Int | odd v - v:Int | odd v ,27,Using max,max:forall Prop. Int - Int - Intmax x y = if x y then x else y,3 : v:Int | odd v ,max odd : v:Int | odd v - v:Int | odd v - v:Int | odd v ,28,Using max,max:
13、forall Prop. Int - Int - Intmax x y = if x y then x else y,max odd 3 : v:Int | odd v - v:Int | odd v ,3 : v:Int | odd v ,29,b = max (0) 8 12 - assert (b 0)c = max odd 3 5 - assert (odd c),Using max,max:forall Prop. Int - Int - Intmax x y = if x y then x else y,max odd 3 : v:Int | odd v - v:Int | odd
14、 v ,5 : v:Int | odd v ,30,b = max (0) 8 12 - assert (b 0)c = max odd 3 5 - assert (odd c),Using max,max:forall Prop. Int - Int - Intmax x y = if x y then x else y,max odd 3 5 : v:Int | odd v ,5 : v:Int | odd v ,31,b = max (0) 8 12 - assert (b 0)c = max odd 3 5 - assert (odd c),Using max,max:forall P
15、rop. Int - Int - Intmax x y = if x y then x else y,max odd 3 5 : v:Int | odd v ,32,b = max (0) 8 12 - assert (b 0)c = max odd 3 5 - assert (odd c),Abstract Refinements,Solution: Parameterize Type Over Input Refinement,max:forall Prop. Int - Int - Intmax x y = if x y then x else y,33,Abstract refinem
16、ent,“if both arguments satisfy p, then the result satisfies p”,Outline,Evaluation,Applications,Refinements and Type Classes,Inductive Refinements,Indexed Refinements,Recursive Refinements,34,Outline,Evaluation,Applications,Refinements and Type Classes,Inductive Refinements,Indexed Refinements,Recurs
17、ive Refinements,35,Outline,Evaluation,Applications,Refinements and Type Classes,Inductive Refinements,Indexed Refinements,Recursive Refinements,36,A polymorphic max function,max : a - a - amax x y = if x y then x else y,We get max v:Int | odd v 3 5 : v:Int | odd v ,We instantiate a := v:Int | odd v
18、,37,c = max 3 5 - assert (odd c),Type Class Constraints,max : Ord a = a - a - amax x y = if x y then x else y,We get max v:Int | odd v 3 5 : v:Int | odd v ,We instantiate a := v:Int | odd v ,38,c = max 3 5 - assert (odd c),b = max 3 5 - assert (odd b)c = minus 3 5 - assert (odd c),Unsound Reasoning,
19、minus : Num a = a - a - aminus x y = x - y,We get minus v:Int | odd v 3 5 : v:Int | odd v ,We instantiate a := v:Int | odd v ,Abstract Refinements and Type Classes,max :forall Prop. Ord a = a - a - amax x y = if x y then x else y,We get max Int odd 3 5 : v:Int | odd v ,40,b = max Int odd 3 5- assert
20、 (odd b),Abstract Refinements and Type Classes,41,b = max Int odd 3 5 - assert (odd b)c = minus Int 3 5 - assert (odd b),minus : Num a = a - a - aminus x y = x - y,We get minus Int 3 5 : Int,Outline,Evaluation,Applications,Refinements and Type Classes,Inductive Refinements,Indexed Refinements,Recurs
21、ive Refinements,42,Outline,Evaluation,Applications,Refinements and Type Classes,Inductive Refinements,Indexed Refinements,Recursive Refinements,43,A loop function,44,loop : (Int - a - a) - Int - a - aloop f n z = go 0 z where go i acc | i n = go (i+1) (f i acc)| otherwise = acc,A loop function,loop
22、: (Int - a - a) - Int - a - aloop f n z = go 0 z where go i acc | i n = go (i+1) (f i acc)| otherwise = acc,45,loop iteration,next acc,final result,A loop function,loop : (Int - a - a) - Int - a - aloop f n z = go 0 z where go i acc | i n = go (i+1) (f i acc)| otherwise = acc,46,initial index,loop f
23、 n z = fn(z),initial acc,A loop function,loop : (Int - a - a) - Int - a - aloop f n z = go 0 z where go i acc | i n = go (i+1) (f i acc)| otherwise = acc,loop f n z = fn(z),A loop function,loop : (Int - a - a) - Int - a - aloop f n z = go 0 z where go i acc | i n = go (i+1) (f i acc)| otherwise = ac
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ABSTRACTREFINEMENTTYPESPPT
