` e : T. Gradual Typing. ` e X. Ronald Garcia University of British Columbia

Size: px
Start display at page:

Download "` e : T. Gradual Typing. ` e X. Ronald Garcia University of British Columbia"

Transcription

1 <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> ` e : T ` e X Gradual Typing Ronald Garcia University of British Columbia 1

2 Static vs. Dynamic? static early error detection enforced discipline dynamic rapid prototyping flexible idioms 2

3 Gradual Typing! gradual early error detection enforced discipline 3 rapid prototyping flexible idioms programmer-controlled!

4 Outline Motivating Example (In Two Acts) Gradual Typing For All! Typing in Small Pieces Meat Strands and Related Works 4

5 Motivating Example Act 1: A New Type 5

6 A Dynamic Language 6

7 A Dynamic Language Standard ML 7

8 A Dynamic Language Robin Milner Standard ML 8

9 Standard ML: dynamically typed? datatype nat = Zero Succ of nat case x : nat of Zero )... Succ y )... 5 Adapted from Jafery and Dunfield [POPL17] 9

10 Standard ML: dynamically typed? datatype nat = Zero Succ of nat case x : nat of Zero )... Succ y )... But the Definition requires compilers to accept nonexhaustive matches: case x : nat of Succ y )... 5 Adapted from Jafery and Dunfield [POPL17] 10

11 Standard ML: dynamically typed? datatype nat = Zero Succ of nat case x : nat of Zero )... Succ y )... But the Definition requires compilers to accept nonexhaustive matches: case x : nat of Succ y )... If x = Zero, then the exception Match is raised. This nonexhaustive match is fine, if we know that x will never be Zero. 5 Adapted from Jafery and Dunfield [POPL17] 11

12 Static Types! 12

13 Standard ML: dynamically typed? datatype nat = Zero Succ of nat case x : nat of Zero )... Succ y )... But the Definition requires compilers to accept nonexhaustive matches: case x : nat of Succ y )... If x = Zero, then the exception Match is raised. This nonexhaustive match is fine, if we know that x will never be Zero. 5 Adapted from Jafery and Dunfield [POPL17] 13

14 Standard ML: dynamically typed? datatype nat = Zero Succ of nat case x : nat of Zero )... Succ y )... But the Definition requires compilers to accept nonexhaustive matches: case x : nat of Succ y )... If x = Zero, then the exception Match is raised. This nonexhaustive match is fine, if we know that x will never be Zero. Frank Pfenning 5 Adapted from Jafery and Dunfield [POPL17] 13

15 Standard ML: dynamically typed? datatype nat = Zero Succ of nat case x : nat of Zero )... Succ y )... But the Definition requires compilers to accept nonexhaustive matches: A widely employed style of programming, s which impose no discipline of types rocedures which work well on objects of case x : nat of Succ y )... If x = Zero, then the exception Match is raised. This nonexhaustive match is fine, if we know that x will never be Zero. Frank Pfenning Well, actually Milner [1978] said that (about LISP). 5 Adapted from Jafery and Dunfield [POPL17] 13

16 Standard ML: dynamically typed? datatype nat = Zero Succ of nat case x : nat of Zero )... Succ y )... But the Definition requires compilers to accept nonexhaustive matches: A widely employed style of programming, s which impose no discipline of types rocedures which work well on objects of case x : nat of Succ y )... This nonexhaustive match is fine, if we know that x will never be Zero. Frank Pfenning a wide variety (e.g., on lists of atoms, integers, or lists). Such flexibility is almost essential in this style If x of = programming; Zero, then the unfortunately exception one Match often pays is raised. a price for it in the time taken to find rather inscrutable bugs-anyone who mistakenly applies CDR to an atom in LISP, and finds himself absurdly adding a property list to an integer, will know the Well, actually Milner [1978] said that (about LISP) too 5 Adapted from Jafery and Dunfield [POPL17] 13

17 Refined Standard ML Datasort refinements [Freeman & Pfenning 1991, Davies 2005,... ] push the knowledge that x is not Zero into the type system. case x : nonzero of Succ y )... This is exhaustive, because x has datasort nonzero. 6 Frank Pfenning Adapted from Jafery and Dunfield [POPL17] 14

18 Refined Standard ML Datasort refinements [Freeman & Pfenning 1991, Davies 2005,... ] push the knowledge that x is not Zero into the type system. case x : nonzero of Succ y )... This is exhaustive, because x has datasort nonzero. 6 Frank Pfenning Adapted from Jafery and Dunfield [POPL17] 15

19 Refined Standard ML Datasort refinements [Freeman & Pfenning 1991, Davies 2005,... ] push the knowledge that x is not Zero into the type system. case x : nonzero of Succ y )... This is exhaustive, because x has datasort nonzero.? 6 Frank Pfenning Adapted from Jafery and Dunfield [POPL17] 16

20 Outline Motivating Example (In Two Acts) STILL Gradual Typing For All! Typing in Small Pieces Meat Strands and Related Works 17

21 Motivating Example Act 2: Adoption 18

22 19

23 20

24 21

25 22

26 No Refined ML! 23

27 Paucity of RML Code SML Application1 Refined ML Application0 Application2 Library1 Library2 *Figures not drawn to scale 24

28 SML Application1 Refined ML Application0 Application2 Library1 Library2 *Figures not drawn to scale 25

29 SML Application1 Application2 Refined ML Application0 Application1 Library1 Library2 *Figures not drawn to scale 26

30 SML Application1 Application2 Refined ML Application0 Application1 Library1 Library2 *Figures not drawn to scale 27

31 SML Application1 Application2 Refined ML Application0 Application1 Library1 Library2 *Figures not drawn to scale 28

32 SML Application1 Application2 Refined ML Application0 Application1 Library1 Library2 *Figures not drawn to scale 29 Wholesale Migration?!?

33 SML Application1 Application2 Refined ML Application0 Application1 Library1 Library2 *Figures not drawn to scale 30 Wholesale Migration?!?

34 SML Application1 Application2 Refined ML Application0 Application1 Library1 Library2 *Figures not drawn to scale 31 Wholesale Migration?!?

35 SML Application1 Application2 Refined ML Application0 Application1 Library1 Library2 Library1 *Figures not drawn to scale 32 Wholesale Migration?!?

36 SML Application1 Application2 Library1 Library2 Refined ML Application0 Application1 Application2 Library1 *Figures not drawn to scale 33 Wholesale Migration?!?

37 SML Application1 Application2 Library1 Library2 Refined ML Application0 Application1 Application2 Library1 *Figures not drawn to scale 34

38 SML Application1 Application2 Library1 Library2 Refined ML Application0 Application1 Application2 Library1 *Figures not drawn to scale 35 Must We Assimilate?

39 SML Application1 Application2 Library1 Library2 Refined ML Application0 Application1 Application2 Library1 *Figures not drawn to scale 36

40 SML Application1 Application2 Library1 Library2 Refined ML Application0 Application1 Application2 Library1 Library2 Gradual Migration *Figures not drawn to scale 37

41 SML Application1 Application2 Library1 Library2 Refined ML Application0 Application1 Application2 Library1 Library2 Gradual Migration *Figures not drawn to scale 38

42 SML Application1 Application2 Library1 Library2 *Figures not drawn to scale 39 Refined ML Application0 Application1 Application2 Library1 Library2 Gradual Migration SML Code (& Guarantees) Refined ML Code (& Guarantees) Interoperating!

43 <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> SML Application1 Application2 Refined ML Application0 Application1 Library1 Library2 ` e X Application2 Library1 Library2 *Figures not drawn to scale 40 Gradual Migration SML Code (& Guarantees) Refined ML Code (& Guarantees) Interoperating!

44 <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> SML Application1 Application2 Refined ML Application0 Application1 Library1 Library2 ` e X Application2 Library1 Library2 Free! *Figures not drawn to scale 41 Gradual Migration SML Code (& Guarantees) Refined ML Code (& Guarantees) Interoperating!

45 <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> Optional Typing SML Application1 Application2 Refined ML Application0 Application1 Library1 Library2 ` e X Application2 Library1 Library2 Free! *Figures not drawn to scale 42 Gradual Migration SML Code (& Guarantees) Refined ML Code (& Guarantees) Interoperating!

46 SML Application1 Application2 Library1 Library2 *Figures not drawn to scale 43 Refined ML Application0 Application1 Application2 Library1 Library2 Gradual Migration SML Code (& Guarantees) Refined ML Code (& Guarantees) Interoperating!

47 SML Application1 Application2 Library1 Library2 Refined ML Application0 Application1 Application2 Library1 Library2 ` e : T *Figures not drawn to scale 44 Gradual Migration SML Code (& Guarantees) Refined ML Code (& Guarantees) Interoperating!

48 SML Application1 Application2 Library1 Library2 Refined ML Application0 Application1 Application2 Library1 Library2 COUGH! ` e : T *Figures not drawn to scale 45 Gradual Migration SML Code (& Guarantees) Refined ML Code (& Guarantees) Interoperating!

49 SML Application1 Application2 Library1 Library2 Refined ML Application0 Application1 Application2 Library1 Library2 ` e : T *Figures not drawn to scale 46 Gradual Migration SML Code (& Guarantees) Refined ML Code (& Guarantees) Interoperating!

50 SML Application1 Application2 Library1 Library2 Refined ML Application0 Application1 Application2 Library1??? Library2 ` e : T Gradual Migration The Challenge! SML Code (& Guarantees) Refined ML Code (& Guarantees) Interoperating! *Figures not drawn to scale 47

51 SML Sums of Uncertainty: Refinements Go Gradual Application1 Khurram A. Jafery Joshua Dunfield University of British Columbia Vancouver, Canada Refined ML Application0 ` e : T Application2 Library1 Library2 Application1 Application2 Library1??? Library2 *Figures not drawn to scale POPL17 Gradual Migration The Challenge! SML Code (& Guarantees) Refined ML Code (& Guarantees) Interoperating! 48

52 SML Sums of Uncertainty: Refinements Go Gradual Application1 Khurram A. Jafery Joshua Dunfield University of British Columbia Vancouver, Canada Refined ML Application0 ` e : T Application2 Library1 Library2 Application1 Application2 Library1??? Library2 *Figures not drawn to scale POPL17 Gradual Migration The Challenge! SML Code (& Guarantees) Refined ML Code (& Guarantees) Interoperating! 49

53 Outline Motivating Example (In Two Acts) Gradual Typing For All! Typing in Small Pieces Meat Strands and Related Works 50

54 Type Spectrum ML Types Refinement Types 51

55 Type Spectrum Untyped ML Types Refinement Types 52

56 Type Spectrum Untyped ML Types Refinement Types 53

57 Type Spectrum Untyped ML Types Refinement Types Languages Typedness Typier 54

58 Type Spectrum Untyped ML Types Refinement Types Gradual Typing 55

59 Type Spectrum Untyped ML Types Refinement Types Gradual Typing 56

60 Type Spectrum Untyped ML Types Refinement Types Gradual Typing 57

61 Type Spectrum Untyped ML Types Refinement Types Gradual Typing Gradual Typing is a Relative Concept! 57

62 Type Spectrum Untyped ML Types Refinement Types Gradual Typing Gradual Typing is a Relative Concept! 57

63 Type Spectrum I always assumed gradual types were to help those poor schmucks using untyped languages to migrate to typed languages. I now realise that I am one of the poor schmucks. My recent research involves session types, a linear type system that declares protocols for sending Untyped ML Types Refinement Types Gradual Typing Gradual Typing is a Relative Concept! [Wadler SNAPL2015] 57

64 Type Spectrum Untyped ML Types Refinement Types Most Gradual Typing Work 58

65 Type Spectrum Untyped ML Types Refinement Types Most Gradual Typing Work Static Language Dynamic Language 58 Application0 Application1 Application2 Library1 Library2

66 Type Spectrum Untyped ML Types Refinement Types Much Recent Gradual Typing Work! Static Language Dynamic Language 59 Application0 Application1 Application2 Library1 Library2

67 Outline Motivating Example (In Two Acts) Gradual Typing For All! Typing in Small Pieces Meat Strands and Related Works 60

68 Gradual Types? 61

69 Gradual Types? What does Gradual Typing have to do with Types? 61

70 Gradual Types 62

71 What are Types About? ` e : T 63

72 Typing Γ t : T x:t Γ Γ x : T (T-Var) Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 (T-Abs) Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 (T-App) 64

73 Typing Γ t : T x:t Γ Γ x : T (T-Var) Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 (T-Abs) Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 (T-App) Inductive Definition 64

74 Typing Γ t : T x:t Γ Γ x : T (T-Var) Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 (T-Abs) Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 (T-App) Inductive Definition Grammar on Steroids (i.e., data structure spec) 64

75 Typing Γ t : T x:t Γ Γ x : T (T-Var) Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 (T-Abs) Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 (T-App) Inductive Definition Grammar on Steroids (i.e., data structure spec) Informally ascribe behavioural meaning to it 64

76 Typing Γ t : T x:t Γ Γ x : T (T-Var) Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 (T-Abs) Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 (T-App) Inductive Definition Daniel Kahneman Grammar on Steroids (i.e., data structure spec) Informally ascribe behavioural meaning to it 64

77 Typing x:t Γ Γ x : T If you are shown a word Γ on t a : screen T in a language you know, you will read it. (T-Var) Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 (T-Abs) Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 (T-App) Inductive Definition Daniel Kahneman Grammar on Steroids (i.e., data Thinking, structure Fast spec) and Slow Informally ascribe behavioural meaning to it 64

78 Typing Γ t : T x:t Γ Γ x : T (T-Var) Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 (T-Abs) Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 (T-App) Inductive Definition Grammar on Steroids (i.e., data structure spec) Informally ascribe behavioural meaning to it 64

79 Typing Γ t : T If t1 turns T11s into T12s x:t Γ Γ x : T Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 (T-Var) (T-Abs) Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 (T-App) Inductive Definition Grammar on Steroids (i.e., data structure spec) Informally ascribe behavioural meaning to it 64

80 Typing and t2 yields T11s Γ t : T If t1 turns T11s into T12s x:t Γ Γ x : T Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 (T-Var) (T-Abs) Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 (T-App) Inductive Definition Grammar on Steroids (i.e., data structure spec) Informally ascribe behavioural meaning to it 64

81 Typing and t2 yields T11s Γ t : T If t1 turns T11s into T12s x:t Γ Γ x : T Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 (T-Var) (T-Abs) Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 Inductive Definition Grammar on Steroids (i.e., data structure spec) (T-App) then appropriately linking them yields T12s Informally ascribe behavioural meaning to it 64

82 Type Safety Theorem [Progress]: Suppose t is a closed, well-typed term (that is, t : T for some T). Then either t is a value or else there is some t with t t. Theorem [Preservation]: If Γ t : T and t t,thenγ t : T. Well-typed programs don t go wrong 65

83 Gradual Type Safety? Application0 Application1 Application2 Library1 Library2 66

84 <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> Now You ve Got Two Problems! Application0 Application1 Application2 Library1 Library2 ` e X ` e : T 67

85 <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> Now You ve Got Two Problems! Application0 Application1 Application2 Library1 Library2 ` e X ` e : T Two Typing Judgments = Two Behavioural Contracts 67

86 <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> Now You ve Got Two Problems! Application0 Application1 Application2 Library1 Library2 ` e X ` e : T Two Typing Judgments = Two Behavioural Contracts Conflicts Signal Runtime Errors (is that wrong?) 67

87 <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> Now You ve Got Two Problems! Application0 Application1 Application2 Library1 Library2 ` e X ` e : T What counts as appropriate linking? Two Typing Judgments = Two Behavioural Contracts Conflicts Signal Runtime Errors (is that wrong?) 67

88 Typing and t2 yields T11s Γ t : T If t1 turns T11s into T12s x:t Γ Γ x : T Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 (T-Var) (T-Abs) Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 (T-App) then appropriately linking them yields T12s 68

89 and t1 turns T11s into T12s Typing and t2 yields T11s x:t Γ Γ x : T Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 Γ t : T (T-Var) (T-Abs) Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 (T-App) If the surrounding context behaves as Γ says then appropriately linking them yields T12s 69

90 and t1 turns T11s into T12s Typing and t2 yields T11s x:t Γ Γ x : T Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 Γ t : T (T-Var) (T-Abs) If the surrounding context behaves as Γ says Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 Typing Judgments are about program fragments (T-App) then appropriately linking them yields T12s 69

91 and t1 turns T11s into T12s Typing and t2 yields T11s x:t Γ Γ x : T Γ, x:t 1 t 2 : T 2 Γ λx:t 1.t 2 : T 1 T 2 Γ t : T (T-Var) (T-Abs) If the surrounding context behaves as Γ says Γ t 1 : T 11 T 12 Γ t 2 : T 11 Γ t 1 t 2 : T 12 Typing Judgments are about program fragments (T-App) then appropriately linking them yields T12s Context Matters, at least intuitively 69

92 Type Safety Theorem [Progress]: Suppose t is a closed, well-typed term (that is, t : T for some T). Then either t is a value or else there is some t with t t. Theorem [Preservation]: If Γ t : T and t t,thenγ t : T. Well-typed programs don t go wrong 70

93 Type Safety Theorem [Progress]: Suppose t is a closed, well-typed term (that is, t : T for some T). Then either t is a value or else there is some t with t t. Theorem [Preservation]: If Γ t : T and t t,thenγ t : T. Well-typed (whole) programs don t go wrong 70

94 Type Safety Theorem [Progress]: Suppose t is a closed, well-typed term (that is, t : T for some T). Then either t is a value or else there is some t with t t. Theorem [Preservation]: If Γ t : T and t t,thenγ t : T. Well-typed (whole) programs don t go wrong Do program fragments go right? 70

95 Outline Motivating Example (In Two Acts) Gradual Typing For All! Typing in Small Pieces STILL Meat Strands and Related Works 71

96 Type Safety Theorem [Progress]: Suppose t is a closed, well-typed term (that is, t : T for some T). Then either t is a value or else there is some t with t t. Theorem [Preservation]: If Γ t : T and t t,thenγ t : T. Well-typed (whole) programs don t go wrong Do program fragments go right? 72

97 <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> Semantic Soundness [Milner 78] discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., Ifif p ` d e : T then = p = e : d T. : [Milner 1978] 73

98 <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> Semantic Soundness [Milner 78] discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., Ifif p ` d e : T then = p = e : d T. : [Milner 1978] 73

99 <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> Semantic Soundness [Milner 78] discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., Ifif p ` d e : T then = p = e : d T. : [Milner 1978] 73

100 <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> Semantic Soundness [Milner 78] discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., Ifif p ` d e : T then = p = e : d T. : [Milner 1978] 73

101 <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> Semantic Soundness [Milner 78] discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., Ifif p ` d e : T then = p = e : d T. : Data Structure Behavioural Invariant [Milner 1978] 74

102 <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> Semantic Soundness discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If if p` e d : : T then then = p e = : T. d : Syntax Semantics Every proof of type assignment says something meaningful about code [Milner 1978] 75

103 <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> Semantic Soundness discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If if p` e d : : T then then = p e = : T. d : Compositional Reasoning Modular Reasoning [Milner 1978] 76

104 <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> Semantic Soundness discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If if p` e d : : T then then = p e = : T. d : Syntax Semantics As a corollary, under the conditions of the theorem we have WIT # wrong, since wrong has no type. Whole-Program Payoff! [Milner 1978] 77

105 <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> Semantic Soundness implies discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If if p` e d : : T then then = p e = : T. d : Syntax Semantics As a corollary, under the conditions of the theorem we have WIT # wrong, since wrong has no type. Whole-Program Payoff! [Milner 1978] 78

106 <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> <latexit sha1_base64="xc7bemic1t8t5xixg+hzt35dagq=">aaacmnicbvbnaxrbeo1jnikbe1c9eilcah5kmakbxvpqg3qlkp2anwwp6anjnunugbprlizd/iyv+swbhpsgifd/hlmfhzxxqcpjvvdu10tlrtxh0bdga/vbw53dvuet/cchh0/at5/1ffe5sv1z6minuvsklauuk9y0kb2hstx108spc78/jedvyc95vtli4ivvuzlijtruf06yrrhwiywvqeuwh+qjgooqtdp0eyb4b+ewcgfpyg4ktjgr9qti2bq3o1eylqh3sbwmhbhg2bh9k2sfraxzlhq9h8zryamahsupad5kkk8lyku8ogfdlrryo3p58hyogiwdvhdnswxldxoirup9zkrn0ibp/f1vif7pg1acvx3vypyvk5wrrxmlgqty9aezcirzzxqc0qnmryan6fby0/kihpjuyfdj7zimozd+cti5fb+uy0+8ec/fkxgln+jufbjnoiuk+cpuxq/xm7govge/gt+r6fawnnku/khw5y+6c6dz</latexit> Semantic Soundness implies discipline. A Semantic Soundness Theorem (based on a formal semantics for the language) states that well-type programs cannot go wrong and a Syntactic Soundness Theorem states that if fl accepts a program then it is well typed. We also discuss extending these THEOREM 1 (Semantic Soundness). If 7 respects jj and p 1 & is well typed then &[djt : 7. i.e., If if p` e d : : T then then = p e = : T. d : Syntax Semantics As a corollary, under the conditions of the theorem we have WIT # wrong, since wrong has no type. Whole-Program Payoff! [Milner 1978] 79

107 Discourse On The Method 80

108 Discourse On The Method 80

109 Discourse On The Method Payoff 80

110 Discourse On The Method Behavioural Invariant 80

111 Discourse On The Method Fragment Soundness is often(*) a Corollary Behavioural Invariant 80

112 <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> Syntactic Thinking Application0 Application1 Application2 Library1 Library2 ` e X ` e : T Two Typing Judgments = Two Behavioural Contracts Conflicts Signal Runtime Errors (go wrong!) 81

113 Semantic Thinking = e : T Application0 Application1 Application2 Library1 Library2 = e X (Semantically) Sound Gradual Typing Semantic Judgments Denote Behavioural Contracts Appropriate Linking Enforces Contracts 82

114 Outline Motivating Example (In Two Acts) Gradual Typing For All! Typing in Small Pieces Meat Strands and Related Works 83

115 Outline Motivating Example (In Two Acts) Gradual Typing For All! Typing in Small Pieces Meat Strands and Related Works 84

116 Gradual Typing 85

117 Gradual in which sense? 6.1 Gradual Typing Migratory typing is closely related to gradual typing [66, 67]. In the broad sense, the term gradual typing has come to describe any type system that allows some amount of dynamic typing. In the precise sense of Siek et al. [67], a gradual typing system includes: (1) a dynamic type that may be implicitly cast to any other type; (2) a relation between types that are equal up to occurrences [Greenman & Felleisen ICFP18] 86

118 Gradual in which sense? 6.1 Gradual Typing Migratory typing is closely related to gradual typing [66, 67]. In the broad sense, the term gradual typing has come to describe any type system that allows some amount of dynamic typing. In the precise sense of Siek et al. [67], a gradual typing system includes: (1) a dynamic type that may be implicitly cast to any other type; (2) a relation between types that are equal up to occurrences [Greenman & Felleisen ICFP18] 86

119 Gradual in which sense? 6.1 Gradual Typing Migratory typing is closely related to gradual typing [66, 67]. In the broad sense, the term gradual typing has come to describe any type system that allows some amount of dynamic typing. In the precise sense of Siek et al. [67], a gradual typing system includes: (1) a dynamic type that may be implicitly cast to any other type; (2) a relation between types that are equal up to occurrences [Greenman & Felleisen ICFP18] 86

120 Gradual Typing for Functional Languages Jeremy G. Siek University of Colorado Walid Taha Rice University Scheme

121 Gradual Typing for Functional Languages Jeremy G. Siek University of Colorado Walid Taha Rice University Rejected from ICFP

122 Gradual Typing for Functional Languages Jeremy G. Siek University of Colorado Walid Taha Rice University Rejected from ICFP 2006 >300 citations 89

123 Typing Gradually def f(x) = x + 2 def h(g) = g(1) h(f) Mixed Checking 90

124 Typing Gradually def f(x) = x + 2 def h(g) = g(1) Types might be inferred h(f) [Siek and Vachharajani DLS08] [Garcia and Cimini POPL15] Mixed Checking 91

125 Gradual Enforcement def f(x:bool) = x + 2 def h(g) = g(true) h(f) static error 92

126 <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> Gradual Enforcement def f(x:bool) = x + 2 def h(g) = g(true) h(f) static error ` e : T 92

127 Gradual Enforcement def f(x:int) = x + 2 def h(g) = g(true) h(f) runtime error 93

128 <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="184rnpzv8as3a91sfrw5waynu5g=">aaacc3icbva9swnben2lxzf+rs1tlgtbktyjogxqqssi5gnyicxtjsms3btjdy8qjvq2/hubc0vs/qn2/hv3khsa+gdg8d4mm/ocwhbtxpfbya2tb2xu5bclo7t7+wffw6ogjhlfsm4iealwabofd7fuubhyihwcdaq2g9fn5jfhqdspwgczibejyrdypmdgrnqtlvxbkbkop+6bhll0jzhhfkc+gyibsvcjabdydivudhsveatsjgvuusuvvxexrgjomact254bm04kynamcfrwe40xsbemsg1pcbj1j539mqwnvunrfqrshybo1n8tkuitjzkwndmpetnlxp+8dml6v52uh3fimgtzrf1eubprlbja4wqzernlgclub6vscaqysfevbaje8surphfe8dykd39rrl4v4site1iiz8qjl6rk7kin1akjj+szvji358l5cd6dj3lrzlnmhjm/cd5/aetlmzc=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> <latexit sha1_base64="s/o2rgsfr99gnxfhcxfwoiile6a=">aaab/hicbvbns8naen34wetxtecvi0xwvbirfe9fd3qs0c9oqplsnu3s3stsbgqh1l/ixymixv0h3vw3btsctpxbwoo9gwbmbslnsjvot7w2vrg5tv3ake/u7r8c2kfhbzvkktawsxgiuweoyllmw5pptruppcactjvb6g7md8zukpbetz2n1bcwifnecggj9e2kdw9capbgiaghpvggn/t21ak5c+bv4hakigo0+vaxfyykeztwhinspddjtt8bqrnhdfr2mkvticmy0j6hmqiq/mn8+ck+m0qio0saijweq78njicuykvgogxoovr2zuj/xi/t0bu/yxgaarqtxaio41gnejyedpmkrppceccsmvsxgyieok1ezrocu/zykmlf1fyn5j5evuu3rrwldijo0tly0rwqowfuqc1eui6e0st6s56sf+vd+li0rlnftax9gfx5a8zmk40=</latexit> Gradual Enforcement def f(x:int) = x + 2 def h(g) = g(true) h(f) runtime error ` e : T ` e X 93

129 Refined Criteria for Gradual Typing ú Jeremy G. Siek 1, Michael M. Vitousek 2, Matteo Cimini 3, and John Tang Boyland Indiana University Bloomington, School of Informatics and Computing Gradual `G e : e T 94

130 Refined Criteria for Gradual Typing ú Jeremy G. Siek 1, Michael M. Vitousek 2, Matteo Cimini 3, and John Tang Boyland Indiana University Bloomington, School of Informatics and Computing Gradual `G e : e T Injection Static ` e : T Conservative Embedding 94

131 Refined Criteria for Gradual Typing ú Jeremy G. Siek 1, Michael M. Vitousek 2, Matteo Cimini 3, and John Tang Boyland Indiana University Bloomington, School of Informatics and Computing Gradual Compositional Translation `G e : e T Injection ` e X Dynamic Static ` e : T Conservative Embedding 94

132 Refined Criteria for Gradual Typing ú Jeremy G. Siek 1, Michael M. Vitousek 2, Matteo Cimini 3, and John Tang Boyland Indiana University Bloomington, School of Informatics and Computing Gradual Compositional Translation `G e : e T Injection ` e X Dynamic Static ` e : T Mixed 94

133 Refined Criteria for Gradual Typing ú Common Language Runtime Jeremy G. Siek 1, Michael M. Vitousek 2, Matteo Cimini 3, and John Tang Boyland Indiana University Bloomington, School of Informatics and Computing Gradual Compositional Translation `G e : e T Injection ` e X Dynamic Static ` e : T Mixed 94

134 Common Language Runtime Gradual Type Structure Determines Appropriate Linking Gradual Compositional Translation `G e : e T Injection ` e X Dynamic Static ` e : T Mixed 94

135 <latexit sha1_base64="zj5guc+mw/vhi9revc50vq7cpe0=">aaacqxicbvfti9naen7glzvjw0/bl35zliiglkqejwptub/otzswd8wmlm1m2lu6lye78szb/bm/6h/y37jjbc72hbh45plndmz2skiki1h0pxfcun3n7t7+vfd+g4ephvcpnpxzu5ucem6kksczsycfhgqfspgujtcvstjpvp+a/pl3kk0w+iuuc5gpttriithdt837zxj6dpsbpio6owpvcx3zksbhvd+ihlfr9caiozagnz3md3ouzq2vfgjkklk7jamcz46vklieokwrcwxjk7aeqyeakbaz1y5q05eeyencln410pb9t8ixze1azv6pgf7y3vxd/i83rxbxohncfxwc5lenfpwkagjzgzqxjxcuaw8yl4wflfilvjko/s/crtywfnneslvkt0cyarjkrnlf7tjr7vkeh4jornxtu6+0udrtx23lf43x2ibyewlsjlwwtfhtp2r2lglpnj6nrf4354p3j3mtnl0dxtewpn03ob53h9snz8kl8ore5d05jp/jcukijxvyk/wiv4pxwwkwcb5dsynev/oubfna/wjzhnp9</latexit> <latexit sha1_base64="zj5guc+mw/vhi9revc50vq7cpe0=">aaacqxicbvfti9naen7glzvjw0/bl35zliiglkqejwptub/otzswd8wmlm1m2lu6lye78szb/bm/6h/y37jjbc72hbh45plndmz2skiki1h0pxfcun3n7t7+vfd+g4ephvcpnpxzu5ucem6kksczsycfhgqfspgujtcvstjpvp+a/pl3kk0w+iuuc5gpttriithdt837zxj6dpsbpio6owpvcx3zksbhvd+ihlfr9caiozagnz3md3ouzq2vfgjkklk7jamcz46vklieokwrcwxjk7aeqyeakbaz1y5q05eeyencln410pb9t8ixze1azv6pgf7y3vxd/i83rxbxohncfxwc5lenfpwkagjzgzqxjxcuaw8yl4wflfilvjko/s/crtywfnneslvkt0cyarjkrnlf7tjr7vkeh4jornxtu6+0udrtx23lf43x2ibyewlsjlwwtfhtp2r2lglpnj6nrf4354p3j3mtnl0dxtewpn03ob53h9snz8kl8ore5d05jp/jcukijxvyk/wiv4pxwwkwcb5dsynev/oubfna/wjzhnp9</latexit> <latexit sha1_base64="zj5guc+mw/vhi9revc50vq7cpe0=">aaacqxicbvfti9naen7glzvjw0/bl35zliiglkqejwptub/otzswd8wmlm1m2lu6lye78szb/bm/6h/y37jjbc72hbh45plndmz2skiki1h0pxfcun3n7t7+vfd+g4ephvcpnpxzu5ucem6kksczsycfhgqfspgujtcvstjpvp+a/pl3kk0w+iuuc5gpttriithdt837zxj6dpsbpio6owpvcx3zksbhvd+ihlfr9caiozagnz3md3ouzq2vfgjkklk7jamcz46vklieokwrcwxjk7aeqyeakbaz1y5q05eeyencln410pb9t8ixze1azv6pgf7y3vxd/i83rxbxohncfxwc5lenfpwkagjzgzqxjxcuaw8yl4wflfilvjko/s/crtywfnneslvkt0cyarjkrnlf7tjr7vkeh4jornxtu6+0udrtx23lf43x2ibyewlsjlwwtfhtp2r2lglpnj6nrf4354p3j3mtnl0dxtewpn03ob53h9snz8kl8ore5d05jp/jcukijxvyk/wiv4pxwwkwcb5dsynev/oubfna/wjzhnp9</latexit> <latexit sha1_base64="zj5guc+mw/vhi9revc50vq7cpe0=">aaacqxicbvfti9naen7glzvjw0/bl35zliiglkqejwptub/otzswd8wmlm1m2lu6lye78szb/bm/6h/y37jjbc72hbh45plndmz2skiki1h0pxfcun3n7t7+vfd+g4ephvcpnpxzu5ucem6kksczsycfhgqfspgujtcvstjpvp+a/pl3kk0w+iuuc5gpttriithdt837zxj6dpsbpio6owpvcx3zksbhvd+ihlfr9caiozagnz3md3ouzq2vfgjkklk7jamcz46vklieokwrcwxjk7aeqyeakbaz1y5q05eeyencln410pb9t8ixze1azv6pgf7y3vxd/i83rxbxohncfxwc5lenfpwkagjzgzqxjxcuaw8yl4wflfilvjko/s/crtywfnneslvkt0cyarjkrnlf7tjr7vkeh4jornxtu6+0udrtx23lf43x2ibyewlsjlwwtfhtp2r2lglpnj6nrf4354p3j3mtnl0dxtewpn03ob53h9snz8kl8ore5d05jp/jcukijxvyk/wiv4pxwwkwcb5dsynev/oubfna/wjzhnp9</latexit> <latexit sha1_base64="gzhfofgrriyy9e+5yvwmkfe79hg=">aaacphicbvhbbtnaen24byq5jewrl1ujec9edoueqgstwgtipbsrtjxiek3xk3svvvjemsha+ln4hw/ib1i7lkpsrlrpzjwzo7c0l8jifp3pbdu7d+7e27sfpnj46pgtbm//zjqy4ddmrpriimuwpnawroeslvicmeolnkfldzv//h0kk4we4tqhqwilleacm/shwbc3okdh7+iqxterffwejsjztx8nosbobrc3oe9ao531oi7jdc8vaosswtujoxynjhuouiqqteoloenltocjh5opsfpx9f7r5z6s0bkp/nnim+i/gy4pa9cq9urf8njuc3xwf9ykxpnbqrm6lxe0vy40lyvfq+tf0ewuwfgupwc8el5xyi9zwtj6dyubzswopr1gy5r2gddrsojgeuxmkupkjqg/enedv3vnvdrmpzukm8ppgm+0tbp109ayesnovmp3vc8pxcjdeu6jrkrpfw8f5zy4oxze0sd+8rp/mmwpt0eekqpykstkdtkhh8kpgrnovuqn+uv+by+cz8hxyhwtdtptzloyycg3v5ge0ne=</latexit> <latexit sha1_base64="gzhfofgrriyy9e+5yvwmkfe79hg=">aaacphicbvhbbtnaen24byq5jewrl1ujec9edoueqgstwgtipbsrtjxiek3xk3svvvjemsha+ln4hw/ib1i7lkpsrlrpzjwzo7c0l8jifp3pbdu7d+7e27sfpnj46pgtbm//zjqy4ddmrpriimuwpnawroeslvicmeolnkfldzv//h0kk4we4tqhqwilleacm/shwbc3okdh7+iqxterffwejsjztx8nosbobrc3oe9ao531oi7jdc8vaosswtujoxynjhuouiqqteoloenltocjh5opsfpx9f7r5z6s0bkp/nnim+i/gy4pa9cq9urf8njuc3xwf9ykxpnbqrm6lxe0vy40lyvfq+tf0ewuwfgupwc8el5xyi9zwtj6dyubzswopr1gy5r2gddrsojgeuxmkupkjqg/enedv3vnvdrmpzukm8ppgm+0tbp109ayesnovmp3vc8pxcjdeu6jrkrpfw8f5zy4oxze0sd+8rp/mmwpt0eekqpykstkdtkhh8kpgrnovuqn+uv+by+cz8hxyhwtdtptzloyycg3v5ge0ne=</latexit> <latexit sha1_base64="gzhfofgrriyy9e+5yvwmkfe79hg=">aaacphicbvhbbtnaen24byq5jewrl1ujec9edoueqgstwgtipbsrtjxiek3xk3svvvjemsha+ln4hw/ib1i7lkpsrlrpzjwzo7c0l8jifp3pbdu7d+7e27sfpnj46pgtbm//zjqy4ddmrpriimuwpnawroeslvicmeolnkfldzv//h0kk4we4tqhqwilleacm/shwbc3okdh7+iqxterffwejsjztx8nosbobrc3oe9ao531oi7jdc8vaosswtujoxynjhuouiqqteoloenltocjh5opsfpx9f7r5z6s0bkp/nnim+i/gy4pa9cq9urf8njuc3xwf9ykxpnbqrm6lxe0vy40lyvfq+tf0ewuwfgupwc8el5xyi9zwtj6dyubzswopr1gy5r2gddrsojgeuxmkupkjqg/enedv3vnvdrmpzukm8ppgm+0tbp109ayesnovmp3vc8pxcjdeu6jrkrpfw8f5zy4oxze0sd+8rp/mmwpt0eekqpykstkdtkhh8kpgrnovuqn+uv+by+cz8hxyhwtdtptzloyycg3v5ge0ne=</latexit> <latexit sha1_base64="gzhfofgrriyy9e+5yvwmkfe79hg=">aaacphicbvhbbtnaen24byq5jewrl1ujec9edoueqgstwgtipbsrtjxiek3xk3svvvjemsha+ln4hw/ib1i7lkpsrlrpzjwzo7c0l8jifp3pbdu7d+7e27sfpnj46pgtbm//zjqy4ddmrpriimuwpnawroeslvicmeolnkfldzv//h0kk4we4tqhqwilleacm/shwbc3okdh7+iqxterffwejsjztx8nosbobrc3oe9ao531oi7jdc8vaosswtujoxynjhuouiqqteoloenltocjh5opsfpx9f7r5z6s0bkp/nnim+i/gy4pa9cq9urf8njuc3xwf9ykxpnbqrm6lxe0vy40lyvfq+tf0ewuwfgupwc8el5xyi9zwtj6dyubzswopr1gy5r2gddrsojgeuxmkupkjqg/enedv3vnvdrmpzukm8ppgm+0tbp109ayesnovmp3vc8pxcjdeu6jrkrpfw8f5zy4oxze0sd+8rp/mmwpt0eekqpykstkdtkhh8kpgrnovuqn+uv+by+cz8hxyhwtdtptzloyycg3v5ge0ne=</latexit> <latexit sha1_base64="e/fgdird2qduj5yobra9dleugni=">aaacunicbvhbthsxehwwxic9eogjlxzr1t5fuxusfageog+0byarqmpgkdc7cvz82dqzpzg7n8dx9lx9kp5nvcsisohilo7poepxzgsffa7j+g8nwnvy9nnz9y3ui5evxm/2trbpnskthye30tjljdmqqsmqbuq4lcwwlum4yoafa/3io1gnjd7drqfjxwzatavngkhj712k8amd92dbrgjqyswbwjd6xx83qnfs68eduan6gcqt6jm2tizbhz/mhpcknhljnbslcyfjzywklsolaemgyhzozjakudmfbuybjir6nja5nrobjkbasa8zpfpolvqwnirhlvvvavj/2qje6cexf7ooets/ltqtjuvd6/hqxfjgkbcbmg5f+cvlv8wyjmgi3auydhttwbdusttan9vwzy0kjtynb5vvxonod6q6pp5rc62bisvorxrvvfvl5aujy+s9oblv4vd1n1lm/m+gkze360pwl/mynh8yjpegod3rhx61i1sno2sxvccj2seh5as5iupcyq35rx6tp9gnkitenl+1rp025w1zigj/abti3yg=</latexit> <latexit sha1_base64="e/fgdird2qduj5yobra9dleugni=">aaacunicbvhbthsxehwwxic9eogjlxzr1t5fuxusfageog+0byarqmpgkdc7cvz82dqzpzg7n8dx9lx9kp5nvcsisohilo7poepxzgsffa7j+g8nwnvy9nnz9y3ui5evxm/2trbpnskthye30tjljdmqqsmqbuq4lcwwlum4yoafa/3io1gnjd7drqfjxwzatavngkhj712k8amd92dbrgjqyswbwjd6xx83qnfs68eduan6gcqt6jm2tizbhz/mhpcknhljnbslcyfjzywklsolaemgyhzozjakudmfbuybjir6nja5nrobjkbasa8zpfpolvqwnirhlvvvavj/2qje6cexf7ooets/ltqtjuvd6/hqxfjgkbcbmg5f+cvlv8wyjmgi3auydhttwbdusttan9vwzy0kjtynb5vvxonod6q6pp5rc62bisvorxrvvfvl5aujy+s9oblv4vd1n1lm/m+gkze360pwl/mynh8yjpegod3rhx61i1sno2sxvccj2seh5as5iupcyq35rx6tp9gnkitenl+1rp025w1zigj/abti3yg=</latexit> <latexit sha1_base64="e/fgdird2qduj5yobra9dleugni=">aaacunicbvhbthsxehwwxic9eogjlxzr1t5fuxusfageog+0byarqmpgkdc7cvz82dqzpzg7n8dx9lx9kp5nvcsisohilo7poepxzgsffa7j+g8nwnvy9nnz9y3ui5evxm/2trbpnskthye30tjljdmqqsmqbuq4lcwwlum4yoafa/3io1gnjd7drqfjxwzatavngkhj712k8amd92dbrgjqyswbwjd6xx83qnfs68eduan6gcqt6jm2tizbhz/mhpcknhljnbslcyfjzywklsolaemgyhzozjakudmfbuybjir6nja5nrobjkbasa8zpfpolvqwnirhlvvvavj/2qje6cexf7ooets/ltqtjuvd6/hqxfjgkbcbmg5f+cvlv8wyjmgi3auydhttwbdusttan9vwzy0kjtynb5vvxonod6q6pp5rc62bisvorxrvvfvl5aujy+s9oblv4vd1n1lm/m+gkze360pwl/mynh8yjpegod3rhx61i1sno2sxvccj2seh5as5iupcyq35rx6tp9gnkitenl+1rp025w1zigj/abti3yg=</latexit> <latexit sha1_base64="e/fgdird2qduj5yobra9dleugni=">aaacunicbvhbthsxehwwxic9eogjlxzr1t5fuxusfageog+0byarqmpgkdc7cvz82dqzpzg7n8dx9lx9kp5nvcsisohilo7poepxzgsffa7j+g8nwnvy9nnz9y3ui5evxm/2trbpnskthye30tjljdmqqsmqbuq4lcwwlum4yoafa/3io1gnjd7drqfjxwzatavngkhj712k8amd92dbrgjqyswbwjd6xx83qnfs68eduan6gcqt6jm2tizbhz/mhpcknhljnbslcyfjzywklsolaemgyhzozjakudmfbuybjir6nja5nrobjkbasa8zpfpolvqwnirhlvvvavj/2qje6cexf7ooets/ltqtjuvd6/hqxfjgkbcbmg5f+cvlv8wyjmgi3auydhttwbdusttan9vwzy0kjtynb5vvxonod6q6pp5rc62bisvorxrvvfvl5aujy+s9oblv4vd1n1lm/m+gkze360pwl/mynh8yjpegod3rhx61i1sno2sxvccj2seh5as5iupcyq35rx6tp9gnkitenl+1rp025w1zigj/abti3yg=</latexit> Simple Gradual Types Static Types (Type) T ::= B T! T Gradual Types (GType) U ::=? B U! U Type GType 95

136 <latexit sha1_base64="vo7zcg0ps6w3mi0wjgcpwqwholm=">aaacm3icbvhbshxbeo2dxntjru0erwhcannjminc8uskvitbbwnzlews0tntuzbbl6g7jmbpzf/knfmv/e16xggzqwunp06d6rrlprqok+rvl3r0+mnttfwn+nnzfy83t7zfntttwq4jbqsxlzlziiwgeqqucflaycqxcjhpt5r4xxewthj9frcltbsbatevngggvmwfnnj3hzqbxm31k0hsgr0p0g70swdnv9s9nxwgvwo0csmcg6djirpplaouoy6zykhj+jznybygzgrcxlct1/rnyao6nta80ell/p/hmxjuofkgvayv3wqsir+kjsucfph4ocskqfpbqtnkujs0mz8wwgjhuqiacstcr5rfm8s4hi3fs2uckkadygmuboa403ddjqqkwmfd2mcipxdrd+umpp5rc6pbisvkso87beos/hrsjlwttf4dumrmlglmf4ayekudh3olq8e5d873b2kysl8c9i+ou8otkx2yr96sllwnr+qjosmjwokmv8hv8ifaju6iz9hprttqdtmvyzjfo38guten</latexit> <latexit sha1_base64="vo7zcg0ps6w3mi0wjgcpwqwholm=">aaacm3icbvhbshxbeo2dxntjru0erwhcannjminc8uskvitbbwnzlews0tntuzbbl6g7jmbpzf/knfmv/e16xggzqwunp06d6rrlprqok+rvl3r0+mnttfwn+nnzfy83t7zfntttwq4jbqsxlzlziiwgeqqucflaycqxcjhpt5r4xxewthj9frcltbsbatevngggvmwfnnj3hzqbxm31k0hsgr0p0g70swdnv9s9nxwgvwo0csmcg6djirpplaouoy6zykhj+jznybygzgrcxlct1/rnyao6nta80ell/p/hmxjuofkgvayv3wqsir+kjsucfph4ocskqfpbqtnkujs0mz8wwgjhuqiacstcr5rfm8s4hi3fs2uckkadygmuboa403ddjqqkwmfd2mcipxdrd+umpp5rc6pbisvkso87beos/hrsjlwttf4dumrmlglmf4ayekudh3olq8e5d873b2kysl8c9i+ou8otkx2yr96sllwnr+qjosmjwokmv8hv8ifaju6iz9hprttqdtmvyzjfo38guten</latexit> <latexit sha1_base64="vo7zcg0ps6w3mi0wjgcpwqwholm=">aaacm3icbvhbshxbeo2dxntjru0erwhcannjminc8uskvitbbwnzlews0tntuzbbl6g7jmbpzf/knfmv/e16xggzqwunp06d6rrlprqok+rvl3r0+mnttfwn+nnzfy83t7zfntttwq4jbqsxlzlziiwgeqqucflaycqxcjhpt5r4xxewthj9frcltbsbatevngggvmwfnnj3hzqbxm31k0hsgr0p0g70swdnv9s9nxwgvwo0csmcg6djirpplaouoy6zykhj+jznybygzgrcxlct1/rnyao6nta80ell/p/hmxjuofkgvayv3wqsir+kjsucfph4ocskqfpbqtnkujs0mz8wwgjhuqiacstcr5rfm8s4hi3fs2uckkadygmuboa403ddjqqkwmfd2mcipxdrd+umpp5rc6pbisvkso87beos/hrsjlwttf4dumrmlglmf4ayekudh3olq8e5d873b2kysl8c9i+ou8otkx2yr96sllwnr+qjosmjwokmv8hv8ifaju6iz9hprttqdtmvyzjfo38guten</latexit> <latexit sha1_base64="vo7zcg0ps6w3mi0wjgcpwqwholm=">aaacm3icbvhbshxbeo2dxntjru0erwhcannjminc8uskvitbbwnzlews0tntuzbbl6g7jmbpzf/knfmv/e16xggzqwunp06d6rrlprqok+rvl3r0+mnttfwn+nnzfy83t7zfntttwq4jbqsxlzlziiwgeqqucflaycqxcjhpt5r4xxewthj9frcltbsbatevngggvmwfnnj3hzqbxm31k0hsgr0p0g70swdnv9s9nxwgvwo0csmcg6djirpplaouoy6zykhj+jznybygzgrcxlct1/rnyao6nta80ell/p/hmxjuofkgvayv3wqsir+kjsucfph4ocskqfpbqtnkujs0mz8wwgjhuqiacstcr5rfm8s4hi3fs2uckkadygmuboa403ddjqqkwmfd2mcipxdrd+umpp5rc6pbisvkso87beos/hrsjlwttf4dumrmlglmf4ayekudh3olq8e5d873b2kysl8c9i+ou8otkx2yr96sllwnr+qjosmjwokmv8hv8ifaju6iz9hprttqdtmvyzjfo38guten</latexit> <latexit sha1_base64="xtiahkmmxnzaftuzgfso48xqray=">aaaconicbvflb9naen6yvzgppndksiigcypsvalurcqlcgofbivfubret9jv9uhujinr1r+ek/yo/puuxuslksot9m183+y8ikokh0lypygephz0+mnw0/jz8xcvt4c7r06cqs2hjbtp7fnbheihiuobes4qc0wvek6l5zewp/0j1gmjf+cqgqlicy3mgjmmodlwo6o5u3b14qdhgmaz4sgzj53r+ydtwyj0djtbgfi8nlxwojfl5twktsqcemzrcalnnncoksaxbagtadvt4ka+67yh70okphnjw9niu+i/gz4p51aqcerf8nxtcm3wf9ykxvnnqre6qhe0vy00ryvfq9s10fjy4chxatbureiv8nnmgcewrhitjapfdbcsjdipeocalrlrqvh6fk/xocivrpr7tvttl7w51f3fdevxjxfa1tn46cayesfovcz01c4pxcjfbu6jsondudln49whjx/hatjoj3dh+wf94bbig/kwfcap+ut2yse5ihnhpca/yr/yn3oxfyuoo++30mjq57wmaxbln5tw1fm=</latexit> <latexit sha1_base64="xtiahkmmxnzaftuzgfso48xqray=">aaaconicbvflb9naen6yvzgppndksiigcypsvalurcqlcgofbivfubret9jv9uhujinr1r+ek/yo/puuxuslksot9m183+y8ikokh0lypygephz0+mnw0/jz8xcvt4c7r06cqs2hjbtp7fnbheihiuobes4qc0wvek6l5zewp/0j1gmjf+cqgqlicy3mgjmmodlwo6o5u3b14qdhgmaz4sgzj53r+ydtwyj0djtbgfi8nlxwojfl5twktsqcemzrcalnnncoksaxbagtadvt4ka+67yh70okphnjw9niu+i/gz4p51aqcerf8nxtcm3wf9ykxvnnqre6qhe0vy00ryvfq9s10fjy4chxatbureiv8nnmgcewrhitjapfdbcsjdipeocalrlrqvh6fk/xocivrpr7tvttl7w51f3fdevxjxfa1tn46cayesfovcz01c4pxcjfbu6jsondudln49whjx/hatjoj3dh+wf94bbig/kwfcap+ut2yse5ihnhpca/yr/yn3oxfyuoo++30mjq57wmaxbln5tw1fm=</latexit> <latexit sha1_base64="xtiahkmmxnzaftuzgfso48xqray=">aaaconicbvflb9naen6yvzgppndksiigcypsvalurcqlcgofbivfubret9jv9uhujinr1r+ek/yo/puuxuslksot9m183+y8ikokh0lypygephz0+mnw0/jz8xcvt4c7r06cqs2hjbtp7fnbheihiuobes4qc0wvek6l5zewp/0j1gmjf+cqgqlicy3mgjmmodlwo6o5u3b14qdhgmaz4sgzj53r+ydtwyj0djtbgfi8nlxwojfl5twktsqcemzrcalnnncoksaxbagtadvt4ka+67yh70okphnjw9niu+i/gz4p51aqcerf8nxtcm3wf9ykxvnnqre6qhe0vy00ryvfq9s10fjy4chxatbureiv8nnmgcewrhitjapfdbcsjdipeocalrlrqvh6fk/xocivrpr7tvttl7w51f3fdevxjxfa1tn46cayesfovcz01c4pxcjfbu6jsondudln49whjx/hatjoj3dh+wf94bbig/kwfcap+ut2yse5ihnhpca/yr/yn3oxfyuoo++30mjq57wmaxbln5tw1fm=</latexit> <latexit sha1_base64="xtiahkmmxnzaftuzgfso48xqray=">aaaconicbvflb9naen6yvzgppndksiigcypsvalurcqlcgofbivfubret9jv9uhujinr1r+ek/yo/puuxuslksot9m183+y8ikokh0lypygephz0+mnw0/jz8xcvt4c7r06cqs2hjbtp7fnbheihiuobes4qc0wvek6l5zewp/0j1gmjf+cqgqlicy3mgjmmodlwo6o5u3b14qdhgmaz4sgzj53r+ydtwyj0djtbgfi8nlxwojfl5twktsqcemzrcalnnncoksaxbagtadvt4ka+67yh70okphnjw9niu+i/gz4p51aqcerf8nxtcm3wf9ykxvnnqre6qhe0vy00ryvfq9s10fjy4chxatbureiv8nnmgcewrhitjapfdbcsjdipeocalrlrqvh6fk/xocivrpr7tvttl7w51f3fdevxjxfa1tn46cayesfovcz01c4pxcjfbu6jsondudln49whjx/hatjoj3dh+wf94bbig/kwfcap+ut2yse5ihnhpca/yr/yn3oxfyuoo++30mjq57wmaxbln5tw1fm=</latexit> Gradual Type Precision??!??! Bool Int!? U v U (Int!?)! Bool Int! Int!? (Int! Int)! Bool Int! Int! Int!? Static Type Information ordering relation... 96

137 <latexit sha1_base64="gomqq0h+5qmci7arfg9vr8fchma=">aaacnnicbvfba9rafj6ntxpvrt76mrgipi1jeepbswuid2if0y5swjkznn0oo5c4c9k6jpkdvurp8t84sqn1tx4y+m75vjpnvtzsoeysp6pozt179x/spiwfpx7y9nnu3vmzzxrlienggjstmqmpngqoumk0tsbukeg8xj10/pklwcem/orrggrfllosbgcyqku2t2nuhklzfd+e746tsdibvq3sayzjykfzvzhpk8mbbrq5zm7n0qtgwjolgkto47xxudo+ykuybaizalf4vuuwvg6rii6mdu8j7ap/znimnfurmigvwwu3zxxb/3gzbhfvci903sbofl1o0uikhnyrojwwwfgua2dcitar5rfmmo5huffggqek6sdygguyim41xhgjgqly+whrc4tviogp266mxmlzpfukm8qpgm+0nbp107ex8kbqe23oqpttiqx/etglqry7v7p9nnvgbh+sjpp0y9vx0ffwub3ykrwib0hkdsgr+ubosuy4+uz+kl/kd0sj99gn6po1nbonos/ihkxtv6cs0ji=</latexit> <latexit sha1_base64="gomqq0h+5qmci7arfg9vr8fchma=">aaacnnicbvfba9rafj6ntxpvrt76mrgipi1jeepbswuid2if0y5swjkznn0oo5c4c9k6jpkdvurp8t84sqn1tx4y+m75vjpnvtzsoeysp6pozt179x/spiwfpx7y9nnu3vmzzxrlienggjstmqmpngqoumk0tsbukeg8xj10/pklwcem/orrggrfllosbgcyqku2t2nuhklzfd+e746tsdibvq3sayzjykfzvzhpk8mbbrq5zm7n0qtgwjolgkto47xxudo+ykuybaizalf4vuuwvg6rii6mdu8j7ap/znimnfurmigvwwu3zxxb/3gzbhfvci903sbofl1o0uikhnyrojwwwfgua2dcitar5rfmmo5huffggqek6sdygguyim41xhgjgqly+whrc4tviogp266mxmlzpfukm8qpgm+0nbp107ex8kbqe23oqpttiqx/etglqry7v7p9nnvgbh+sjpp0y9vx0ffwub3ykrwib0hkdsgr+ubosuy4+uz+kl/kd0sj99gn6po1nbonos/ihkxtv6cs0ji=</latexit> <latexit sha1_base64="gomqq0h+5qmci7arfg9vr8fchma=">aaacnnicbvfba9rafj6ntxpvrt76mrgipi1jeepbswuid2if0y5swjkznn0oo5c4c9k6jpkdvurp8t84sqn1tx4y+m75vjpnvtzsoeysp6pozt179x/spiwfpx7y9nnu3vmzzxrlienggjstmqmpngqoumk0tsbukeg8xj10/pklwcem/orrggrfllosbgcyqku2t2nuhklzfd+e746tsdibvq3sayzjykfzvzhpk8mbbrq5zm7n0qtgwjolgkto47xxudo+ykuybaizalf4vuuwvg6rii6mdu8j7ap/znimnfurmigvwwu3zxxb/3gzbhfvci903sbofl1o0uikhnyrojwwwfgua2dcitar5rfmmo5huffggqek6sdygguyim41xhgjgqly+whrc4tviogp266mxmlzpfukm8qpgm+0nbp107ex8kbqe23oqpttiqx/etglqry7v7p9nnvgbh+sjpp0y9vx0ffwub3ykrwib0hkdsgr+ubosuy4+uz+kl/kd0sj99gn6po1nbonos/ihkxtv6cs0ji=</latexit> <latexit sha1_base64="gomqq0h+5qmci7arfg9vr8fchma=">aaacnnicbvfba9rafj6ntxpvrt76mrgipi1jeepbswuid2if0y5swjkznn0oo5c4c9k6jpkdvurp8t84sqn1tx4y+m75vjpnvtzsoeysp6pozt179x/spiwfpx7y9nnu3vmzzxrlienggjstmqmpngqoumk0tsbukeg8xj10/pklwcem/orrggrfllosbgcyqku2t2nuhklzfd+e746tsdibvq3sayzjykfzvzhpk8mbbrq5zm7n0qtgwjolgkto47xxudo+ykuybaizalf4vuuwvg6rii6mdu8j7ap/znimnfurmigvwwu3zxxb/3gzbhfvci903sbofl1o0uikhnyrojwwwfgua2dcitar5rfmmo5huffggqek6sdygguyim41xhgjgqly+whrc4tviogp266mxmlzpfukm8qpgm+0nbp107ex8kbqe23oqpttiqx/etglqry7v7p9nnvgbh+sjpp0y9vx0ffwub3ykrwib0hkdsgr+ubosuy4+uz+kl/kd0sj99gn6po1nbonos/ihkxtv6cs0ji=</latexit> Consistent Lifting(*) U 1 U 2 Gradual Type Consistency (*) Reformulation of original definition 97

138 Consistent Lifting(*) 97 U 1 U 2 <latexit sha1_base64="gomqq0h+5qmci7arfg9vr8fchma=">aaacnnicbvfba9rafj6ntxpvrt76mrgipi1jeepbswuid2if0y5swjkznn0oo5c4c9k6jpkdvurp8t84sqn1tx4y+m75vjpnvtzsoeysp6pozt179x/spiwfpx7y9nnu3vmzzxrlienggjstmqmpngqoumk0tsbukeg8xj10/pklwcem/orrggrfllosbgcyqku2t2nuhklzfd+e746tsdibvq3sayzjykfzvzhpk8mbbrq5zm7n0qtgwjolgkto47xxudo+ykuybaizalf4vuuwvg6rii6mdu8j7ap/znimnfurmigvwwu3zxxb/3gzbhfvci903sbofl1o0uikhnyrojwwwfgua2dcitar5rfmmo5huffggqek6sdygguyim41xhgjgqly+whrc4tviogp266mxmlzpfukm8qpgm+0nbp107ex8kbqe23oqpttiqx/etglqry7v7p9nnvgbh+sjpp0y9vx0ffwub3ykrwib0hkdsgr+ubosuy4+uz+kl/kd0sj99gn6po1nbonos/ihkxtv6cs0ji=</latexit> <latexit sha1_base64="gomqq0h+5qmci7arfg9vr8fchma=">aaacnnicbvfba9rafj6ntxpvrt76mrgipi1jeepbswuid2if0y5swjkznn0oo5c4c9k6jpkdvurp8t84sqn1tx4y+m75vjpnvtzsoeysp6pozt179x/spiwfpx7y9nnu3vmzzxrlienggjstmqmpngqoumk0tsbukeg8xj10/pklwcem/orrggrfllosbgcyqku2t2nuhklzfd+e746tsdibvq3sayzjykfzvzhpk8mbbrq5zm7n0qtgwjolgkto47xxudo+ykuybaizalf4vuuwvg6rii6mdu8j7ap/znimnfurmigvwwu3zxxb/3gzbhfvci903sbofl1o0uikhnyrojwwwfgua2dcitar5rfmmo5huffggqek6sdygguyim41xhgjgqly+whrc4tviogp266mxmlzpfukm8qpgm+0nbp107ex8kbqe23oqpttiqx/etglqry7v7p9nnvgbh+sjpp0y9vx0ffwub3ykrwib0hkdsgr+ubosuy4+uz+kl/kd0sj99gn6po1nbonos/ihkxtv6cs0ji=</latexit> <latexit sha1_base64="gomqq0h+5qmci7arfg9vr8fchma=">aaacnnicbvfba9rafj6ntxpvrt76mrgipi1jeepbswuid2if0y5swjkznn0oo5c4c9k6jpkdvurp8t84sqn1tx4y+m75vjpnvtzsoeysp6pozt179x/spiwfpx7y9nnu3vmzzxrlienggjstmqmpngqoumk0tsbukeg8xj10/pklwcem/orrggrfllosbgcyqku2t2nuhklzfd+e746tsdibvq3sayzjykfzvzhpk8mbbrq5zm7n0qtgwjolgkto47xxudo+ykuybaizalf4vuuwvg6rii6mdu8j7ap/znimnfurmigvwwu3zxxb/3gzbhfvci903sbofl1o0uikhnyrojwwwfgua2dcitar5rfmmo5huffggqek6sdygguyim41xhgjgqly+whrc4tviogp266mxmlzpfukm8qpgm+0nbp107ex8kbqe23oqpttiqx/etglqry7v7p9nnvgbh+sjpp0y9vx0ffwub3ykrwib0hkdsgr+ubosuy4+uz+kl/kd0sj99gn6po1nbonos/ihkxtv6cs0ji=</latexit> <latexit sha1_base64="gomqq0h+5qmci7arfg9vr8fchma=">aaacnnicbvfba9rafj6ntxpvrt76mrgipi1jeepbswuid2if0y5swjkznn0oo5c4c9k6jpkdvurp8t84sqn1tx4y+m75vjpnvtzsoeysp6pozt179x/spiwfpx7y9nnu3vmzzxrlienggjstmqmpngqoumk0tsbukeg8xj10/pklwcem/orrggrfllosbgcyqku2t2nuhklzfd+e746tsdibvq3sayzjykfzvzhpk8mbbrq5zm7n0qtgwjolgkto47xxudo+ykuybaizalf4vuuwvg6rii6mdu8j7ap/znimnfurmigvwwu3zxxb/3gzbhfvci903sbofl1o0uikhnyrojwwwfgua2dcitar5rfmmo5huffggqek6sdygguyim41xhgjgqly+whrc4tviogp266mxmlzpfukm8qpgm+0nbp107ex8kbqe23oqpttiqx/etglqry7v7p9nnvgbh+sjpp0y9vx0ffwub3ykrwib0hkdsgr+ubosuy4+uz+kl/kd0sj99gn6po1nbonos/ihkxtv6cs0ji=</latexit> T 1 = T 2 <latexit sha1_base64="h6jf2x3rppsnrp+1dr0vkd0yqju=">aaacm3icbvfnbxmxehuwwspcswthhgq1quiu7vavygw1ai+aobqpaatmo8jrnarw/lgyzymr2x/bff4x/wbvdqwsljespb/3xjpjyusphcbjn1706phg5potp/gz59s7l3b3xl44u1koi26ksvc5cycfhheklhbvwmaql3czl84a/fibwcemhukyhilicy1mgjmm1pvwmtipddg9ike7/wsqteefgrqdfdlf+xsv57pc8eqbri6zc+m0kxhimuxbjdrxvjkogv+woywd1eybm/i25zq+duxbz8ago5g27l8zninnlioptsxwxq1rdfk/bvzh7p3ec11wcjrffzpvkqkhzfy0eby4ymuajfsreqx8hlngmfxsvflggwi6gfzg6qaimw233kjgkhx2xpsm4tsi+uo6qakx2tzqtukq85pge29zwxvp1bh5b2hvdeiqmvokuf8rncwkullxur6ch+diyjamg/tryf/ktfvcfnln9sk7kpijcki+knmyipxo8pp8ir+jn9fz9dn6cmenel3ok7is0egvde3qqg==</latexit> <latexit sha1_base64="h6jf2x3rppsnrp+1dr0vkd0yqju=">aaacm3icbvfnbxmxehuwwspcswthhgq1quiu7vavygw1ai+aobqpaatmo8jrnarw/lgyzymr2x/bff4x/wbvdqwsljespb/3xjpjyusphcbjn1706phg5potp/gz59s7l3b3xl44u1koi26ksvc5cycfhheklhbvwmaql3czl84a/fibwcemhukyhilicy1mgjmm1pvwmtipddg9ike7/wsqteefgrqdfdlf+xsv57pc8eqbri6zc+m0kxhimuxbjdrxvjkogv+woywd1eybm/i25zq+duxbz8ago5g27l8zninnlioptsxwxq1rdfk/bvzh7p3ec11wcjrffzpvkqkhzfy0eby4ymuajfsreqx8hlngmfxsvflggwi6gfzg6qaimw233kjgkhx2xpsm4tsi+uo6qakx2tzqtukq85pge29zwxvp1bh5b2hvdeiqmvokuf8rncwkullxur6ch+diyjamg/tryf/ktfvcfnln9sk7kpijcki+knmyipxo8pp8ir+jn9fz9dn6cmenel3ok7is0egvde3qqg==</latexit> <latexit sha1_base64="h6jf2x3rppsnrp+1dr0vkd0yqju=">aaacm3icbvfnbxmxehuwwspcswthhgq1quiu7vavygw1ai+aobqpaatmo8jrnarw/lgyzymr2x/bff4x/wbvdqwsljespb/3xjpjyusphcbjn1706phg5potp/gz59s7l3b3xl44u1koi26ksvc5cycfhheklhbvwmaql3czl84a/fibwcemhukyhilicy1mgjmm1pvwmtipddg9ike7/wsqteefgrqdfdlf+xsv57pc8eqbri6zc+m0kxhimuxbjdrxvjkogv+woywd1eybm/i25zq+duxbz8ago5g27l8zninnlioptsxwxq1rdfk/bvzh7p3ec11wcjrffzpvkqkhzfy0eby4ymuajfsreqx8hlngmfxsvflggwi6gfzg6qaimw233kjgkhx2xpsm4tsi+uo6qakx2tzqtukq85pge29zwxvp1bh5b2hvdeiqmvokuf8rncwkullxur6ch+diyjamg/tryf/ktfvcfnln9sk7kpijcki+knmyipxo8pp8ir+jn9fz9dn6cmenel3ok7is0egvde3qqg==</latexit> <latexit sha1_base64="h6jf2x3rppsnrp+1dr0vkd0yqju=">aaacm3icbvfnbxmxehuwwspcswthhgq1quiu7vavygw1ai+aobqpaatmo8jrnarw/lgyzymr2x/bff4x/wbvdqwsljespb/3xjpjyusphcbjn1706phg5potp/gz59s7l3b3xl44u1koi26ksvc5cycfhheklhbvwmaql3czl84a/fibwcemhukyhilicy1mgjmm1pvwmtipddg9ike7/wsqteefgrqdfdlf+xsv57pc8eqbri6zc+m0kxhimuxbjdrxvjkogv+woywd1eybm/i25zq+duxbz8ago5g27l8zninnlioptsxwxq1rdfk/bvzh7p3ec11wcjrffzpvkqkhzfy0eby4ymuajfsreqx8hlngmfxsvflggwi6gfzg6qaimw233kjgkhx2xpsm4tsi+uo6qakx2tzqtukq85pge29zwxvp1bh5b2hvdeiqmvokuf8rncwkullxur6ch+diyjamg/tryf/ktfvcfnln9sk7kpijcki+knmyipxo8pp8ir+jn9fz9dn6cmenel3ok7is0egvde3qqg==</latexit> v<latexit sha1_base64="heefdjg9uk2f47bil7+neabgksa=">aaacnhicbvhbattaef2rbziqzcxny6gimecejbqkzvuc04ewukihdgkwcavv2fm8f2v3lmrs9rl9bb6rf9ovikjtdgdhzjwzo7esenxihp/pbc9evlpb33gdbr7z2t7z7b4dwv0abkomhtaxgbuguiihchrwwrigmhnwkc3pav7ifozlwv3arqetswektzmj6epj1n7ymroacho124v7cwprc5c0oedao7/qdlyaa1zkumgetxacxavohdximyaqteslbwvzoooxh4pksbpx9fxfbz6sr1nt/fmyndf/mxyv1i5k5pws4rvd5erg/7hxidpjieoqkbeueyw0luweoqoxeoxcaeox8iayw32vebumhjl0awqxyliqvhnb0ijtaggq4i5p6rw5s08qlylci6i7qeqaaq70nwoqliu/khzs1s7ktwotxzog8srfvt2n4dp303os51xoz5wshuc5gb31k7iffp/qox20h9sg78g+osqj+uhoywdytoaeeu1+kd/kixgffaq+bt8epugnzdkjsxam/gjkanmq</latexit> l< ta xe ti s ah _1 ab es 46 "= eh Fe jd 9G Ku F2 74 ib 7L n+ ae gb SK =A >" AA CA Hn ci Vb bh ta At FE r2 Zb qi cz NX 6Y IG Em ec Bj KQ Vz Cu 40 We ku hi gd WK ac Vv F2 8m 2F 3V Ml sr R9 9l bb r6 9f VO ki tj Gd hd Jz zw 7O se NE ix PH p/ CB e9 lv bp 33 dg rb Z7 t2 Z7 b7 d4 VW a0 kb mo Th Xa bg gu Iu hi hc wr RW gi hm wn ck P3 va i7 of lz vw A3 QR TE WS Ke zt jm E6 jp N1 Y7 rm AO Hc 1O 42 7v Wc RP 5c 0C Eo ad 7O q/ ld ay 1a KZ MU Eg Xt ca Ax OV DH IX Ym qa ET Ls WB zv oo xo 4h Kp Bs XP F9 Fx zb S6 1R tn F/ YM dn /F xm Vy i1 k5 p5 SW r4 dv e5 gr 7/ xh di jp ei qo BK UE ye 0w UL EW qo Xo OE cx EA xo I8 ya 3w v2 be mu jh 0L wa Xq ly Qi HV Bn i0 tj GA qg I4 p5 R6 5W 0S q8 yl cl 6I 7I eq aq qa 07 Wn qo il /u HK Sz s1 K7 wt to Zx go S8 fr TV n2 D4 3P 30 SO 15 ox 5z sw uh 5c BG 13 7k fi Pf Q/ xo 02 9h gs 87 +g SO JQ U+ Oh Wy yd ot Ea UE +1 dk k/ XI fg Af +q tb e8 Up ng dz jk xs Ma g/ kj NA QM /< al et ix >t l< ta xe ti s ah _1 ab es 46 "= eh Fe jd 9G Ku F2 74 ib 7L n+ ae gb SK =A >" AA CA Hn ci Vb bh ta At FE r2 Zb qi cz NX 6Y IG Em ec Bj KQ Vz Cu 40 We ku hi gd WK ac Vv F2 8m 2F 3V Ml sr R9 9l bb r6 9f VO ki tj Gd hd Jz zw 7O se NE ix PH p/ CB e9 lv bp 33 dg rb Z7 t2 Z7 b7 d4 VW a0 kb mo Th Xa bg gu Iu hi hc wr RW gi hm wn ck P3 va i7 of lz vw A3 QR TE WS Ke zt jm E6 jp N1 Y7 rm AO Hc 1O 42 7v Wc RP 5c 0C Eo ad 7O q/ ld ay 1a KZ MU Eg Xt ca Ax OV DH IX Ym qa ET Ls WB zv oo xo 4h Kp Bs XP F9 Fx zb S6 1R tn F/ YM dn /F xm Vy i1 k5 p5 SW r4 dv e5 gr 7/ xh di jp ei qo BK UE ye 0w UL EW qo Xo OE cx EA xo I8 ya 3w v2 be mu jh 0L wa Xq ly Qi HV Bn i0 tj GA qg I4 p5 R6 5W 0S q8 yl cl 6I 7I eq aq qa 07 Wn qo il /u HK Sz s1 K7 wt to Zx go S8 fr TV n2 D4 3P 30 SO 15 ox 5z sw uh 5c BG 13 7k fi Pf Q/ xo 02 9h gs 87 +g SO JQ U+ Oh Wy yd ot Ea UE +1 dk k/ XI fg Af +q tb e8 Up ng dz jk xs Ma g/ kj NA QM /< al et ix >t l< ta xe ti s ah _1 ab es 46 "= eh Fe jd 9G Ku F2 74 ib 7L n+ ae gb SK =A >" AA CA Hn ci Vb bh ta At FE r2 Zb qi cz NX 6Y IG Em ec Bj KQ Vz Cu 40 We ku hi gd WK ac Vv F2 8m 2F 3V Ml sr R9 9l bb r6 9f VO ki tj Gd hd Jz zw 7O se NE ix PH p/ CB e9 lv bp 33 dg rb Z7 t2 Z7 b7 d4 VW a0 kb mo Th Xa bg gu Iu hi hc wr RW gi hm wn ck P3 va i7 of lz vw A3 QR TE WS Ke zt jm E6 jp N1 Y7 rm AO Hc 1O 42 7v Wc RP 5c 0C Eo ad 7O q/ ld ay 1a KZ MU Eg Xt ca Ax OV DH IX Ym qa ET Ls WB zv oo xo 4h Kp Bs XP F9 Fx zb S6 1R tn F/ YM dn /F xm Vy i1 k5 p5 SW r4 dv e5 gr 7/ xh di jp ei qo BK UE ye 0w UL EW qo Xo OE cx EA xo I8 ya 3w v2 be mu jh 0L wa Xq ly Qi HV Bn i0 tj GA qg I4 p5 R6 5W 0S q8 yl cl 6I 7I eq aq qa 07 Wn qo il /u HK Sz s1 K7 wt to Zx go S8 fr TV n2 D4 3P 30 SO 15 ox 5z sw uh 5c BG 13 7k fi Pf Q/ xo 02 9h gs 87 +g SO JQ U+ Oh Wy yd ot Ea UE +1 dk k/ XI fg Af +q tb e8 Up ng dz jk xs Ma g/ kj NA QM /< al et ix >t v<latexit sha1_base64="heefdjg9uk2f47bil7+neabgksa=">aaacnhicbvhbattaef2rbziqzcxny6gimecejbqkzvuc04ewukihdgkwcavv2fm8f2v3lmrs9rl9bb6rf9ovikjtdgdhzjwzo7esenxihp/pbc9evlpb33gdbr7z2t7z7b4dwv0abkomhtaxgbuguiihchrwwrigmhnwkc3pav7ifozlwv3arqetswektzmj6epj1n7ymroacho124v7cwprc5c0oedao7/qdlyaa1zkumgetxacxavohdximyaqteslbwvzoooxh4pksbpx9fxfbz6sr1nt/fmyndf/mxyv1i5k5pws4rvd5erg/7hxidpjieoqkbeueyw0luweoqoxeoxcaeox8iayw32vebumhjl0awqxyliqvhnb0ijtaggq4i5p6rw5s08qlylci6i7qeqaaq70nwoqliu/khzs1s7ktwotxzog8srfvt2n4dp303os51xoz5wshuc5gb31k7iffp/qox20h9sg78g+osqj+uhoywdytoaeeu1+kd/kixgffaq+bt8epugnzdkjsxam/gjkanmq</latexit> l< ta xe ti s ah _1 ab es 46 "= eh Fe jd 9G Ku F2 74 ib 7L n+ ae gb SK =A >" AA CA Hn ci Vb bh ta At FE r2 Zb qi cz NX 6Y IG Em ec Bj KQ Vz Cu 40 We ku hi gd WK ac Vv F2 8m 2F 3V Ml sr R9 9l bb r6 9f VO ki tj Gd hd Jz zw 7O se NE ix PH p/ CB e9 lv bp 33 dg rb Z7 t2 Z7 b7 d4 VW a0 kb mo Th Xa bg gu Iu hi hc wr RW gi hm wn ck P3 va i7 of lz vw A3 QR TE WS Ke zt jm E6 jp N1 Y7 rm AO Hc 1O 42 7v Wc RP 5c 0C Eo ad 7O q/ ld ay 1a KZ MU Eg Xt ca Ax OV DH IX Ym qa ET Ls WB zv oo xo 4h Kp Bs XP F9 Fx zb S6 1R tn F/ YM dn /F xm Vy i1 k5 p5 SW r4 dv e5 gr 7/ xh di jp ei qo BK UE ye 0w UL EW qo Xo OE cx EA xo I8 ya 3w v2 be mu jh 0L wa Xq ly Qi HV Bn i0 tj GA qg I4 p5 R6 5W 0S q8 yl cl 6I 7I eq aq qa 07 Wn qo il /u HK Sz s1 K7 wt to Zx go S8 fr TV n2 D4 3P 30 SO 15 ox 5z sw uh 5c BG 13 7k fi Pf Q/ xo 02 9h gs 87 +g SO JQ U+ Oh Wy yd ot Ea UE +1 dk k/ XI fg Af +q tb e8 Up ng dz jk xs Ma g/ kj NA QM /< al et ix >t l< ta xe ti s ah _1 ab es 46 "= eh Fe jd 9G Ku F2 74 ib 7L n+ ae gb SK =A >" AA CA Hn ci Vb bh ta At FE r2 Zb qi cz NX 6Y IG Em ec Bj KQ Vz Cu 40 We ku hi gd WK ac Vv F2 8m 2F 3V Ml sr R9 9l bb r6 9f VO ki tj Gd hd Jz zw 7O se NE ix PH p/ CB e9 lv bp 33 dg rb Z7 t2 Z7 b7 d4 VW a0 kb mo Th Xa bg gu Iu hi hc wr RW gi hm wn ck P3 va i7 of lz vw A3 QR TE WS Ke zt jm E6 jp N1 Y7 rm AO Hc 1O 42 7v Wc RP 5c 0C Eo ad 7O q/ ld ay 1a KZ MU Eg Xt ca Ax OV DH IX Ym qa ET Ls WB zv oo xo 4h Kp Bs XP F9 Fx zb S6 1R tn F/ YM dn /F xm Vy i1 k5 p5 SW r4 dv e5 gr 7/ xh di jp ei qo BK UE ye 0w UL EW qo Xo OE cx EA xo I8 ya 3w v2 be mu jh 0L wa Xq ly Qi HV Bn i0 tj GA qg I4 p5 R6 5W 0S q8 yl cl 6I 7I eq aq qa 07 Wn qo il /u HK Sz s1 K7 wt to Zx go S8 fr TV n2 D4 3P 30 SO 15 ox 5z sw uh 5c BG 13 7k fi Pf Q/ xo 02 9h gs 87 +g SO JQ U+ Oh Wy yd ot Ea UE +1 dk k/ XI fg Af +q tb e8 Up ng dz jk xs Ma g/ kj NA QM /< al et ix >t l< ta xe ti s ah _1 ab es 46 "= eh Fe jd 9G Ku F2 74 ib 7L n+ ae gb SK =A >" AA CA Hn ci Vb bh ta At FE r2 Zb qi cz NX 6Y IG Em ec Bj KQ Vz Cu 40 We ku hi gd WK ac Vv F2 8m 2F 3V Ml sr R9 9l bb r6 9f VO ki tj Gd hd Jz zw 7O se NE ix PH p/ CB e9 lv bp 33 dg rb Z7 t2 Z7 b7 d4 VW a0 kb mo Th Xa bg gu Iu hi hc wr RW gi hm wn ck P3 va i7 of lz vw A3 QR TE WS Ke zt jm E6 jp N1 Y7 rm AO Hc 1O 42 7v Wc RP 5c 0C Eo ad 7O q/ ld ay 1a KZ MU Eg Xt ca Ax OV DH IX Ym qa ET Ls WB zv oo xo 4h Kp Bs XP F9 Fx zb S6 1R tn F/ YM dn /F xm Vy i1 k5 p5 SW r4 dv e5 gr 7/ xh di jp ei qo BK UE ye 0w UL EW qo Xo OE cx EA xo I8 ya 3w v2 be mu jh 0L wa Xq ly Qi HV Bn i0 tj GA qg I4 p5 R6 5W 0S q8 yl cl 6I 7I eq aq qa 07 Wn qo il /u HK Sz s1 K7 wt to Zx go S8 fr TV n2 D4 3P 30 SO 15 ox 5z sw uh 5c BG 13 7k fi Pf Q/ xo 02 9h gs 87 +g SO JQ U+ Oh Wy yd ot Ea UE +1 dk k/ XI fg Af +q tb e8 Up ng dz jk xs Ma g/ kj NA QM /< al et ix >t if and only if For some T1 and T2 Gradual Type Consistency Static Type Equality (*) Reformulation of original definition

139 Static Checking static type equality gradual type consistency Int = Int Bool = Bool Int! Bool 6= Bool! Int extend Int Int Bool Bool Int! Bool 6 Bool! Int? Bool?! Bool Bool!? Consistency conservatively extends equality 98

140 Static Checking static type equality gradual type consistency Int = Int Bool = Bool Int! Bool 6= Bool! Int extend Int Int Bool Bool Int! Bool 6 Bool! Int? Bool?! Bool Bool!? Consistency conservatively extends equality 98

141 Static Checking static type equality gradual type consistency Int = Int Bool = Bool Int! Bool 6= Bool! Int extend Int Int Bool Bool Int! Bool 6 Bool! Int? Bool?! Bool Bool!? Consistency conservatively extends equality 98

142 Static Checking static type equality gradual type consistency Int = Int Bool = Bool Int! Bool 6= Bool! Int extend Int Int Bool Bool Int! Bool 6 Bool! Int? Bool?! Bool Bool!? Consistency conservatively extends equality 98

143 Consistent Lifting(*) 99 v<latexit sha1_base64="heefdjg9uk2f47bil7+neabgksa=">aaacnhicbvhbattaef2rbziqzcxny6gimecejbqkzvuc04ewukihdgkwcavv2fm8f2v3lmrs9rl9bb6rf9ovikjtdgdhzjwzo7esenxihp/pbc9evlpb33gdbr7z2t7z7b4dwv0abkomhtaxgbuguiihchrwwrigmhnwkc3pav7ifozlwv3arqetswektzmj6epj1n7ymroacho124v7cwprc5c0oedao7/qdlyaa1zkumgetxacxavohdximyaqteslbwvzoooxh4pksbpx9fxfbz6sr1nt/fmyndf/mxyv1i5k5pws4rvd5erg/7hxidpjieoqkbeueyw0luweoqoxeoxcaeox8iayw32vebumhjl0awqxyliqvhnb0ijtaggq4i5p6rw5s08qlylci6i7qeqaaq70nwoqliu/khzs1s7ktwotxzog8srfvt2n4dp303os51xoz5wshuc5gb31k7iffp/qox20h9sg78g+osqj+uhoywdytoaeeu1+kd/kixgffaq+bt8epugnzdkjsxam/gjkanmq</latexit> l< ta xe ti s ah _1 ab es 46 "= eh Fe jd 9G Ku F2 74 ib 7L n+ ae gb SK =A >" AA CA Hn ci Vb bh ta At FE r2 Zb qi cz NX 6Y IG Em ec Bj KQ Vz Cu 40 We ku hi gd WK ac Vv F2 8m 2F 3V Ml sr R9 9l bb r6 9f VO ki tj Gd hd Jz zw 7O se NE ix PH p/ CB e9 lv bp 33 dg rb Z7 t2 Z7 b7 d4 VW a0 kb mo Th Xa bg gu Iu hi hc wr RW gi hm wn ck P3 va i7 of lz vw A3 QR TE WS Ke zt jm E6 jp N1 Y7 rm AO Hc 1O 42 7v Wc RP 5c 0C Eo ad 7O q/ ld ay 1a KZ MU Eg Xt ca Ax OV DH IX Ym qa ET Ls WB zv oo xo 4h Kp Bs XP F9 Fx zb S6 1R tn F/ YM dn /F xm Vy i1 k5 p5 SW r4 dv e5 gr 7/ xh di jp ei qo BK UE ye 0w UL EW qo Xo OE cx EA xo I8 ya 3w v2 be mu jh 0L wa Xq ly Qi HV Bn i0 tj GA qg I4 p5 R6 5W 0S q8 yl cl 6I 7I eq aq qa 07 Wn qo il /u HK Sz s1 K7 wt to Zx go S8 fr TV n2 D4 3P 30 SO 15 ox 5z sw uh 5c BG 13 7k fi Pf Q/ xo 02 9h gs 87 +g SO JQ U+ Oh Wy yd ot Ea UE +1 dk k/ XI fg Af +q tb e8 Up ng dz jk xs Ma g/ kj NA QM /< al et ix >t l< ta xe ti s ah _1 ab es 46 "= eh Fe jd 9G Ku F2 74 ib 7L n+ ae gb SK =A >" AA CA Hn ci Vb bh ta At FE r2 Zb qi cz NX 6Y IG Em ec Bj KQ Vz Cu 40 We ku hi gd WK ac Vv F2 8m 2F 3V Ml sr R9 9l bb r6 9f VO ki tj Gd hd Jz zw 7O se NE ix PH p/ CB e9 lv bp 33 dg rb Z7 t2 Z7 b7 d4 VW a0 kb mo Th Xa bg gu Iu hi hc wr RW gi hm wn ck P3 va i7 of lz vw A3 QR TE WS Ke zt jm E6 jp N1 Y7 rm AO Hc 1O 42 7v Wc RP 5c 0C Eo ad 7O q/ ld ay 1a KZ MU Eg Xt ca Ax OV DH IX Ym qa ET Ls WB zv oo xo 4h Kp Bs XP F9 Fx zb S6 1R tn F/ YM dn /F xm Vy i1 k5 p5 SW r4 dv e5 gr 7/ xh di jp ei qo BK UE ye 0w UL EW qo Xo OE cx EA xo I8 ya 3w v2 be mu jh 0L wa Xq ly Qi HV Bn i0 tj GA qg I4 p5 R6 5W 0S q8 yl cl 6I 7I eq aq qa 07 Wn qo il /u HK Sz s1 K7 wt to Zx go S8 fr TV n2 D4 3P 30 SO 15 ox 5z sw uh 5c BG 13 7k fi Pf Q/ xo 02 9h gs 87 +g SO JQ U+ Oh Wy yd ot Ea UE +1 dk k/ XI fg Af +q tb e8 Up ng dz jk xs Ma g/ kj NA QM /< al et ix >t l< ta xe ti s ah _1 ab es 46 "= eh Fe jd 9G Ku F2 74 ib 7L n+ ae gb SK =A >" AA CA Hn ci Vb bh ta At FE r2 Zb qi cz NX 6Y IG Em ec Bj KQ Vz Cu 40 We ku hi gd WK ac Vv F2 8m 2F 3V Ml sr R9 9l bb r6 9f VO ki tj Gd hd Jz zw 7O se NE ix PH p/ CB e9 lv bp 33 dg rb Z7 t2 Z7 b7 d4 VW a0 kb mo Th Xa bg gu Iu hi hc wr RW gi hm wn ck P3 va i7 of lz vw A3 QR TE WS Ke zt jm E6 jp N1 Y7 rm AO Hc 1O 42 7v Wc RP 5c 0C Eo ad 7O q/ ld ay 1a KZ MU Eg Xt ca Ax OV DH IX Ym qa ET Ls WB zv oo xo 4h Kp Bs XP F9 Fx zb S6 1R tn F/ YM dn /F xm Vy i1 k5 p5 SW r4 dv e5 gr 7/ xh di jp ei qo BK UE ye 0w UL EW qo Xo OE cx EA xo I8 ya 3w v2 be mu jh 0L wa Xq ly Qi HV Bn i0 tj GA qg I4 p5 R6 5W 0S q8 yl cl 6I 7I eq aq qa 07 Wn qo il /u HK Sz s1 K7 wt to Zx go S8 fr TV n2 D4 3P 30 SO 15 ox 5z sw uh 5c BG 13 7k fi Pf Q/ xo 02 9h gs 87 +g SO JQ U+ Oh Wy yd ot Ea UE +1 dk k/ XI fg Af +q tb e8 Up ng dz jk xs Ma g/ kj NA QM /< al et ix >t v<latexit sha1_base64="heefdjg9uk2f47bil7+neabgksa=">aaacnhicbvhbattaef2rbziqzcxny6gimecejbqkzvuc04ewukihdgkwcavv2fm8f2v3lmrs9rl9bb6rf9ovikjtdgdhzjwzo7esenxihp/pbc9evlpb33gdbr7z2t7z7b4dwv0abkomhtaxgbuguiihchrwwrigmhnwkc3pav7ifozlwv3arqetswektzmj6epj1n7ymroacho124v7cwprc5c0oedao7/qdlyaa1zkumgetxacxavohdximyaqteslbwvzoooxh4pksbpx9fxfbz6sr1nt/fmyndf/mxyv1i5k5pws4rvd5erg/7hxidpjieoqkbeueyw0luweoqoxeoxcaeox8iayw32vebumhjl0awqxyliqvhnb0ijtaggq4i5p6rw5s08qlylci6i7qeqaaq70nwoqliu/khzs1s7ktwotxzog8srfvt2n4dp303os51xoz5wshuc5gb31k7iffp/qox20h9sg78g+osqj+uhoywdytoaeeu1+kd/kixgffaq+bt8epugnzdkjsxam/gjkanmq</latexit> l< ta xe ti s ah _1 ab es 46 "= eh Fe jd 9G Ku F2 74 ib 7L n+ ae gb SK =A >" AA CA Hn ci Vb bh ta At FE r2 Zb qi cz NX 6Y IG Em ec Bj KQ Vz Cu 40 We ku hi gd WK ac Vv F2 8m 2F 3V Ml sr R9 9l bb r6 9f VO ki tj Gd hd Jz zw 7O se NE ix PH p/ CB e9 lv bp 33 dg rb Z7 t2 Z7 b7 d4 VW a0 kb mo Th Xa bg gu Iu hi hc wr RW gi hm wn ck P3 va i7 of lz vw A3 QR TE WS Ke zt jm E6 jp N1 Y7 rm AO Hc 1O 42 7v Wc RP 5c 0C Eo ad 7O q/ ld ay 1a KZ MU Eg Xt ca Ax OV DH IX Ym qa ET Ls WB zv oo xo 4h Kp Bs XP F9 Fx zb S6 1R tn F/ YM dn /F xm Vy i1 k5 p5 SW r4 dv e5 gr 7/ xh di jp ei qo BK UE ye 0w UL EW qo Xo OE cx EA xo I8 ya 3w v2 be mu jh 0L wa Xq ly Qi HV Bn i0 tj GA qg I4 p5 R6 5W 0S q8 yl cl 6I 7I eq aq qa 07 Wn qo il /u HK Sz s1 K7 wt to Zx go S8 fr TV n2 D4 3P 30 SO 15 ox 5z sw uh 5c BG 13 7k fi Pf Q/ xo 02 9h gs 87 +g SO JQ U+ Oh Wy yd ot Ea UE +1 dk k/ XI fg Af +q tb e8 Up ng dz jk xs Ma g/ kj NA QM /< al et ix >t l< ta xe ti s ah _1 ab es 46 "= eh Fe jd 9G Ku F2 74 ib 7L n+ ae gb SK =A >" AA CA Hn ci Vb bh ta At FE r2 Zb qi cz NX 6Y IG Em ec Bj KQ Vz Cu 40 We ku hi gd WK ac Vv F2 8m 2F 3V Ml sr R9 9l bb r6 9f VO ki tj Gd hd Jz zw 7O se NE ix PH p/ CB e9 lv bp 33 dg rb Z7 t2 Z7 b7 d4 VW a0 kb mo Th Xa bg gu Iu hi hc wr RW gi hm wn ck P3 va i7 of lz vw A3 QR TE WS Ke zt jm E6 jp N1 Y7 rm AO Hc 1O 42 7v Wc RP 5c 0C Eo ad 7O q/ ld ay 1a KZ MU Eg Xt ca Ax OV DH IX Ym qa ET Ls WB zv oo xo 4h Kp Bs XP F9 Fx zb S6 1R tn F/ YM dn /F xm Vy i1 k5 p5 SW r4 dv e5 gr 7/ xh di jp ei qo BK UE ye 0w UL EW qo Xo OE cx EA xo I8 ya 3w v2 be mu jh 0L wa Xq ly Qi HV Bn i0 tj GA qg I4 p5 R6 5W 0S q8 yl cl 6I 7I eq aq qa 07 Wn qo il /u HK Sz s1 K7 wt to Zx go S8 fr TV n2 D4 3P 30 SO 15 ox 5z sw uh 5c BG 13 7k fi Pf Q/ xo 02 9h gs 87 +g SO JQ U+ Oh Wy yd ot Ea UE +1 dk k/ XI fg Af +q tb e8 Up ng dz jk xs Ma g/ kj NA QM /< al et ix >t l< ta xe ti s ah _1 ab es 46 "= eh Fe jd 9G Ku F2 74 ib 7L n+ ae gb SK =A >" AA CA Hn ci Vb bh ta At FE r2 Zb qi cz NX 6Y IG Em ec Bj KQ Vz Cu 40 We ku hi gd WK ac Vv F2 8m 2F 3V Ml sr R9 9l bb r6 9f VO ki tj Gd hd Jz zw 7O se NE ix PH p/ CB e9 lv bp 33 dg rb Z7 t2 Z7 b7 d4 VW a0 kb mo Th Xa bg gu Iu hi hc wr RW gi hm wn ck P3 va i7 of lz vw A3 QR TE WS Ke zt jm E6 jp N1 Y7 rm AO Hc 1O 42 7v Wc RP 5c 0C Eo ad 7O q/ ld ay 1a KZ MU Eg Xt ca Ax OV DH IX Ym qa ET Ls WB zv oo xo 4h Kp Bs XP F9 Fx zb S6 1R tn F/ YM dn /F xm Vy i1 k5 p5 SW r4 dv e5 gr 7/ xh di jp ei qo BK UE ye 0w UL EW qo Xo OE cx EA xo I8 ya 3w v2 be mu jh 0L wa Xq ly Qi HV Bn i0 tj GA qg I4 p5 R6 5W 0S q8 yl cl 6I 7I eq aq qa 07 Wn qo il /u HK Sz s1 K7 wt to Zx go S8 fr TV n2 D4 3P 30 SO 15 ox 5z sw uh 5c BG 13 7k fi Pf Q/ xo 02 9h gs 87 +g SO JQ U+ Oh Wy yd ot Ea UE +1 dk k/ XI fg Af +q tb e8 Up ng dz jk xs Ma g/ kj NA QM /< al et ix >t if and only if For some T1 and T2 Consistent Subtyping Static Subtyping T 1 <: T 2 <latexit sha1_base64="jgd75rltfcayoy8bremahmymyvg=">aaacnhicbvfbaxnbfj6sl9b11uqjuaad4fpylyjshjbqq0wecklayiywo3usdpnlmnpwgsb9gb7q7+q/cxa70cb1wmb3zvedobe8lmjhklz1onv3hzzc2n4up37y9nnznd0xy2cqy2hejtt2pgcopnawqoeszksltouszvllp4y/+whwcaohucphqthci7ngdenompyl9ombhc7249lopxkkrdg7io1an3r2otvt+awwvfkgkuvm3crnspx6zlfwcxwcvq5kxpdsazmanvpgpr7tuazvqqsgc2pd00jb6o0mz5rzk5uhpwj44ta5jvg/bllh/mpuc11wcjpff5pxkqkhzqjoisxwlksaglci9er5bbomy1htvfbggwi6cnzg6qaimw2x3kigkhx2wpsm4sci+so6qamx2lzqtuk68ovgg23jbpx0biy8ebrehbpq5pri4x8ftomibs6vbh7nlhjvd9jkkh5/1z867g63tv6r1+qtscl7ckroyckzeu4m+u3+kl/rxvq5+hp9u5zgvs7njvmzapwpsijq7q==</latexit> <latexit sha1_base64="jgd75rltfcayoy8bremahmymyvg=">aaacnhicbvfbaxnbfj6sl9b11uqjuaad4fpylyjshjbqq0wecklayiywo3usdpnlmnpwgsb9gb7q7+q/cxa70cb1wmb3zvedobe8lmjhklz1onv3hzzc2n4up37y9nnznd0xy2cqy2hejtt2pgcopnawqoeszksltouszvllp4y/+whwcaohucphqthci7ngdenompyl9ombhc7249lopxkkrdg7io1an3r2otvt+awwvfkgkuvm3crnspx6zlfwcxwcvq5kxpdsazmanvpgpr7tuazvqqsgc2pd00jb6o0mz5rzk5uhpwj44ta5jvg/bllh/mpuc11wcjpff5pxkqkhzqjoisxwlksaglci9er5bbomy1htvfbggwi6cnzg6qaimw2x3kigkhx2wpsm4sci+so6qamx2lzqtuk68ovgg23jbpx0biy8ebrehbpq5pri4x8ftomibs6vbh7nlhjvd9jkkh5/1z867g63tv6r1+qtscl7ckroyckzeu4m+u3+kl/rxvq5+hp9u5zgvs7njvmzapwpsijq7q==</latexit> <latexit sha1_base64="jgd75rltfcayoy8bremahmymyvg=">aaacnhicbvfbaxnbfj6sl9b11uqjuaad4fpylyjshjbqq0wecklayiywo3usdpnlmnpwgsb9gb7q7+q/cxa70cb1wmb3zvedobe8lmjhklz1onv3hzzc2n4up37y9nnznd0xy2cqy2hejtt2pgcopnawqoeszksltouszvllp4y/+whwcaohucphqthci7ngdenompyl9ombhc7249lopxkkrdg7io1an3r2otvt+awwvfkgkuvm3crnspx6zlfwcxwcvq5kxpdsazmanvpgpr7tuazvqqsgc2pd00jb6o0mz5rzk5uhpwj44ta5jvg/bllh/mpuc11wcjpff5pxkqkhzqjoisxwlksaglci9er5bbomy1htvfbggwi6cnzg6qaimw2x3kigkhx2wpsm4sci+so6qamx2lzqtuk68ovgg23jbpx0biy8ebrehbpq5pri4x8ftomibs6vbh7nlhjvd9jkkh5/1z867g63tv6r1+qtscl7ckroyckzeu4m+u3+kl/rxvq5+hp9u5zgvs7njvmzapwpsijq7q==</latexit> <latexit sha1_base64="jgd75rltfcayoy8bremahmymyvg=">aaacnhicbvfbaxnbfj6sl9b11uqjuaad4fpylyjshjbqq0wecklayiywo3usdpnlmnpwgsb9gb7q7+q/cxa70cb1wmb3zvedobe8lmjhklz1onv3hzzc2n4up37y9nnznd0xy2cqy2hejtt2pgcopnawqoeszksltouszvllp4y/+whwcaohucphqthci7ngdenompyl9ombhc7249lopxkkrdg7io1an3r2otvt+awwvfkgkuvm3crnspx6zlfwcxwcvq5kxpdsazmanvpgpr7tuazvqqsgc2pd00jb6o0mz5rzk5uhpwj44ta5jvg/bllh/mpuc11wcjpff5pxkqkhzqjoisxwlksaglci9er5bbomy1htvfbggwi6cnzg6qaimw2x3kigkhx2wpsm4sci+so6qamx2lzqtuk68ovgg23jbpx0biy8ebrehbpq5pri4x8ftomibs6vbh7nlhjvd9jkkh5/1z867g63tv6r1+qtscl7ckroyckzeu4m+u3+kl/rxvq5+hp9u5zgvs7njvmzapwpsijq7q==</latexit> U 1. U 2 <latexit sha1_base64="ehcszrvyuzb3pfiswsczdaruqvu=">aaacphicbvflb9naen6yvzgvhb65rihanck7qgs3vuvcjq5f4lzshkz1epkusg9rd9w0mv4pxmtv6r9h7voqsrlppw/m+2bnlzdsoiyim0hw4ogjx092nobpnr94+wo4en3qtgu5jnxiy89z5kakdqkklhbewmaql3cwlz+3/nklwcem/ohremaklbsyc87qh7lhkmlimkpwzglfk2wvzibjabj1ru+duadj0ttjnhruawf4puajl8y5aryvokuzrcelngfaosgzx7iftd3utigb1v3vdx3niwwdg+ufrtpf/82omxjurxkvvawv3dbxbv/htsucf5rvqpcvgua3heavpghouwhacasc5dodxq3wvvj+wszj6ncvbprxojj2go1r+ghcvmokg+uvrz0enhwkciwi9uht1trlbva6q7ippnz4p22drz+ojjf3gs5rffftnfis6l+eu6jo2npf28e5d073jne0ib/tjw+p+sptkdfklflayvkrhjiv5iqkhjmv+u2uyz/gffa1+b4kt9jg0ofskg0lfv4flqnuqg==</latexit> <latexit sha1_base64="ehcszrvyuzb3pfiswsczdaruqvu=">aaacphicbvflb9naen6yvzgvhb65rihanck7qgs3vuvcjq5f4lzshkz1epkusg9rd9w0mv4pxmtv6r9h7voqsrlppw/m+2bnlzdsoiyim0hw4ogjx092nobpnr94+wo4en3qtgu5jnxiy89z5kakdqkklhbewmaql3cwlz+3/nklwcem/ohremaklbsyc87qh7lhkmlimkpwzglfk2wvzibjabj1ru+duadj0ttjnhruawf4puajl8y5aryvokuzrcelngfaosgzx7iftd3utigb1v3vdx3niwwdg+ufrtpf/82omxjurxkvvawv3dbxbv/htsucf5rvqpcvgua3heavpghouwhacasc5dodxq3wvvj+wszj6ncvbprxojj2go1r+ghcvmokg+uvrz0enhwkciwi9uht1trlbva6q7ippnz4p22drz+ojjf3gs5rffftnfis6l+eu6jo2npf28e5d073jne0ib/tjw+p+sptkdfklflayvkrhjiv5iqkhjmv+u2uyz/gffa1+b4kt9jg0ofskg0lfv4flqnuqg==</latexit> <latexit sha1_base64="ehcszrvyuzb3pfiswsczdaruqvu=">aaacphicbvflb9naen6yvzgvhb65rihanck7qgs3vuvcjq5f4lzshkz1epkusg9rd9w0mv4pxmtv6r9h7voqsrlppw/m+2bnlzdsoiyim0hw4ogjx092nobpnr94+wo4en3qtgu5jnxiy89z5kakdqkklhbewmaql3cwlz+3/nklwcem/ohremaklbsyc87qh7lhkmlimkpwzglfk2wvzibjabj1ru+duadj0ttjnhruawf4puajl8y5aryvokuzrcelngfaosgzx7iftd3utigb1v3vdx3niwwdg+ufrtpf/82omxjurxkvvawv3dbxbv/htsucf5rvqpcvgua3heavpghouwhacasc5dodxq3wvvj+wszj6ncvbprxojj2go1r+ghcvmokg+uvrz0enhwkciwi9uht1trlbva6q7ippnz4p22drz+ojjf3gs5rffftnfis6l+eu6jo2npf28e5d073jne0ib/tjw+p+sptkdfklflayvkrhjiv5iqkhjmv+u2uyz/gffa1+b4kt9jg0ofskg0lfv4flqnuqg==</latexit> <latexit sha1_base64="ehcszrvyuzb3pfiswsczdaruqvu=">aaacphicbvflb9naen6yvzgvhb65rihanck7qgs3vuvcjq5f4lzshkz1epkusg9rd9w0mv4pxmtv6r9h7voqsrlppw/m+2bnlzdsoiyim0hw4ogjx092nobpnr94+wo4en3qtgu5jnxiy89z5kakdqkklhbewmaql3cwlz+3/nklwcem/ohremaklbsyc87qh7lhkmlimkpwzglfk2wvzibjabj1ru+duadj0ttjnhruawf4puajl8y5aryvokuzrcelngfaosgzx7iftd3utigb1v3vdx3niwwdg+ufrtpf/82omxjurxkvvawv3dbxbv/htsucf5rvqpcvgua3heavpghouwhacasc5dodxq3wvvj+wszj6ncvbprxojj2go1r+ghcvmokg+uvrz0enhwkciwi9uht1trlbva6q7ippnz4p22drz+ojjf3gs5rffftnfis6l+eu6jo2npf28e5d073jne0ib/tjw+p+sptkdfklflayvkrhjiv5iqkhjmv+u2uyz/gffa1+b4kt9jg0ofskg0lfv4flqnuqg==</latexit> (*) Reformulation of original definition

144 <latexit sha1_base64="5/tsn/abqruokyp0ngmdce5zico=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9mjrppjcm4jrbnxpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbte6ksn/pvhmxjuo/kgvawv3s7xbp/htstcfjx5ocskqfobqotkujs0wqqthawochma41aexim/zjzxdoukt8o4uewhwdyo3qbxpmhnjqqkwmfj2mciv4jox3vtu6+0weu24ryyrp1w2zg7px0zi28frvehrpo5pvj6n4ftoqibc6w7x7klzt6n0msufnk/pdzqdrdpxpjx5c1jyqdysd6ruzihnkzjnflffkdvos/r12hyi416xc4lsmxr979yjtsz</latexit> <latexit sha1_base64="5/tsn/abqruokyp0ngmdce5zico=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9mjrppjcm4jrbnxpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbte6ksn/pvhmxjuo/kgvawv3s7xbp/htstcfjx5ocskqfobqotkujs0wqqthawochma41aexim/zjzxdoukt8o4uewhwdyo3qbxpmhnjqqkwmfj2mciv4jox3vtu6+0weu24ryyrp1w2zg7px0zi28frvehrpo5pvj6n4ftoqibc6w7x7klzt6n0msufnk/pdzqdrdpxpjx5c1jyqdysd6ruzihnkzjnflffkdvos/r12hyi416xc4lsmxr979yjtsz</latexit> <latexit sha1_base64="5/tsn/abqruokyp0ngmdce5zico=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9mjrppjcm4jrbnxpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbte6ksn/pvhmxjuo/kgvawv3s7xbp/htstcfjx5ocskqfobqotkujs0wqqthawochma41aexim/zjzxdoukt8o4uewhwdyo3qbxpmhnjqqkwmfj2mciv4jox3vtu6+0weu24ryyrp1w2zg7px0zi28frvehrpo5pvj6n4ftoqibc6w7x7klzt6n0msufnk/pdzqdrdpxpjx5c1jyqdysd6ruzihnkzjnflffkdvos/r12hyi416xc4lsmxr979yjtsz</latexit> <latexit sha1_base64="5/tsn/abqruokyp0ngmdce5zico=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9mjrppjcm4jrbnxpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbte6ksn/pvhmxjuo/kgvawv3s7xbp/htstcfjx5ocskqfobqotkujs0wqqthawochma41aexim/zjzxdoukt8o4uewhwdyo3qbxpmhnjqqkwmfj2mciv4jox3vtu6+0weu24ryyrp1w2zg7px0zi28frvehrpo5pvj6n4ftoqibc6w7x7klzt6n0msufnk/pdzqdrdpxpjx5c1jyqdysd6ruzihnkzjnflffkdvos/r12hyi416xc4lsmxr979yjtsz</latexit> <latexit sha1_base64="w+zzsrcg9wfiirgznyursqpffma=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3m9/4m0drkekxyy4hyz279+4/2hmypnr85onuco/zibe1ezarvll3vnapshqyoeqfz5udrgsfp8xqy5s//qhos2u+4bqcmezlixdsciyh+faf+2yqmmorkfdes03zkbvqphxl46wzehvkprir3o7ne4pasitqdqaf4t5p86zcweaopvdqpkz2uhgx4kuyrmi4bj8l3qqnfr0jjv1yf1/sp4v+wxg49n6ti8juhm/9dq4n/i83rxhxyrakqwoei66ffrwiagm7dlpkbwlvogiuniy9unhohrcyl5zuyhjq3etcxij9ackzccgsjowysimmmisfibgomlbtriy9mj3ijjmu/4bbols/tae4ixree7tq51rygx7fnjzlk8zz5dvhuq1o3o3zbjx/et86poopt0neklfkdcnjpjkkn8gxmrbbgvkb/cf/k7fj1+r7mr2mjoo+5jnzsks8as/e18u=</latexit> <latexit sha1_base64="w+zzsrcg9wfiirgznyursqpffma=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3m9/4m0drkekxyy4hyz279+4/2hmypnr85onuco/zibe1ezarvll3vnapshqyoeqfz5udrgsfp8xqy5s//qhos2u+4bqcmezlixdsciyh+faf+2yqmmorkfdes03zkbvqphxl46wzehvkprir3o7ne4pasitqdqaf4t5p86zcweaopvdqpkz2uhgx4kuyrmi4bj8l3qqnfr0jjv1yf1/sp4v+wxg49n6ti8juhm/9dq4n/i83rxhxyrakqwoei66ffrwiagm7dlpkbwlvogiuniy9unhohrcyl5zuyhjq3etcxij9ackzccgsjowysimmmisfibgomlbtriy9mj3ijjmu/4bbols/tae4ixree7tq51rygx7fnjzlk8zz5dvhuq1o3o3zbjx/et86poopt0neklfkdcnjpjkkn8gxmrbbgvkb/cf/k7fj1+r7mr2mjoo+5jnzsks8as/e18u=</latexit> <latexit sha1_base64="w+zzsrcg9wfiirgznyursqpffma=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3m9/4m0drkekxyy4hyz279+4/2hmypnr85onuco/zibe1ezarvll3vnapshqyoeqfz5udrgsfp8xqy5s//qhos2u+4bqcmezlixdsciyh+faf+2yqmmorkfdes03zkbvqphxl46wzehvkprir3o7ne4pasitqdqaf4t5p86zcweaopvdqpkz2uhgx4kuyrmi4bj8l3qqnfr0jjv1yf1/sp4v+wxg49n6ti8juhm/9dq4n/i83rxhxyrakqwoei66ffrwiagm7dlpkbwlvogiuniy9unhohrcyl5zuyhjq3etcxij9ackzccgsjowysimmmisfibgomlbtriy9mj3ijjmu/4bbols/tae4ixree7tq51rygx7fnjzlk8zz5dvhuq1o3o3zbjx/et86poopt0neklfkdcnjpjkkn8gxmrbbgvkb/cf/k7fj1+r7mr2mjoo+5jnzsks8as/e18u=</latexit> <latexit sha1_base64="w+zzsrcg9wfiirgznyursqpffma=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3m9/4m0drkekxyy4hyz279+4/2hmypnr85onuco/zibe1ezarvll3vnapshqyoeqfz5udrgsfp8xqy5s//qhos2u+4bqcmezlixdsciyh+faf+2yqmmorkfdes03zkbvqphxl46wzehvkprir3o7ne4pasitqdqaf4t5p86zcweaopvdqpkz2uhgx4kuyrmi4bj8l3qqnfr0jjv1yf1/sp4v+wxg49n6ti8juhm/9dq4n/i83rxhxyrakqwoei66ffrwiagm7dlpkbwlvogiuniy9unhohrcyl5zuyhjq3etcxij9ackzccgsjowysimmmisfibgomlbtriy9mj3ijjmu/4bbols/tae4ixree7tq51rygx7fnjzlk8zz5dvhuq1o3o3zbjx/et86poopt0neklfkdcnjpjkkn8gxmrbbgvkb/cf/k7fj1+r7mr2mjoo+5jnzsks8as/e18u=</latexit> <latexit sha1_base64="rymgtvcskxw5op8/khepejbhpmk=">aaacpnicbvflt9taen64lzb9hhlksmqexcmyq0rtdqsx9ojaigqpjtl1ehjw2ye1oy6nfv+wxstp6r/p2liicr1ppw/m+2bnlzdsoeysp73o2fmxl19tbcc7r9+8fdfffx/ltgu5jlirxl7nzieugkyoumj1aygpxmi4x542/pghwcemvsrvcvpfflrmbwcyqrp+xvzni80kooeeohmamp71b8kway0+bwkhbqsz89luz2ef4zucjvwy5yzpuulum4ucs6jjrhjqmr5kc5geqjkcn/vt9zu9cjgczo0nl/tsrv/n8ew5t1j5ucqgn26ta4l/4yyvzr9mvdblhad5q6f5jska2qycfsicr7kkgherqq+u3zdloiafxwtlhcimg2btlg6aonnwy40kisjnr7xpeh4ioj+qm5p6qc2tbiuuk8pih7wns/htithyudb6deiqmvokhb8lnbjf3zwr3tzou3d1czgmw/ti0+d4pdvcftknh8ghsclncky+knmyipysyc/ym9xhh9fznirgd9ko1+xsktwlvv8fcvdvwq==</latexit> <latexit sha1_base64="rymgtvcskxw5op8/khepejbhpmk=">aaacpnicbvflt9taen64lzb9hhlksmqexcmyq0rtdqsx9ojaigqpjtl1ehjw2ye1oy6nfv+wxstp6r/p2liicr1ppw/m+2bnlzdsoeysp73o2fmxl19tbcc7r9+8fdfffx/ltgu5jlirxl7nzieugkyoumj1aygpxmi4x542/pghwcemvsrvcvpfflrmbwcyqrp+xvzni80kooeeohmamp71b8kway0+bwkhbqsz89luz2ef4zucjvwy5yzpuulum4ucs6jjrhjqmr5kc5geqjkcn/vt9zu9cjgczo0nl/tsrv/n8ew5t1j5ucqgn26ta4l/4yyvzr9mvdblhad5q6f5jska2qycfsicr7kkgherqq+u3zdloiafxwtlhcimg2btlg6aonnwy40kisjnr7xpeh4ioj+qm5p6qc2tbiuuk8pih7wns/htithyudb6deiqmvokhb8lnbjf3zwr3tzou3d1czgmw/ti0+d4pdvcftknh8ghsclncky+knmyipysyc/ym9xhh9fznirgd9ko1+xsktwlvv8fcvdvwq==</latexit> <latexit sha1_base64="rymgtvcskxw5op8/khepejbhpmk=">aaacpnicbvflt9taen64lzb9hhlksmqexcmyq0rtdqsx9ojaigqpjtl1ehjw2ye1oy6nfv+wxstp6r/p2liicr1ppw/m+2bnlzdsoeysp73o2fmxl19tbcc7r9+8fdfffx/ltgu5jlirxl7nzieugkyoumj1aygpxmi4x542/pghwcemvsrvcvpfflrmbwcyqrp+xvzni80kooeeohmamp71b8kway0+bwkhbqsz89luz2ef4zucjvwy5yzpuulum4ucs6jjrhjqmr5kc5geqjkcn/vt9zu9cjgczo0nl/tsrv/n8ew5t1j5ucqgn26ta4l/4yyvzr9mvdblhad5q6f5jska2qycfsicr7kkgherqq+u3zdloiafxwtlhcimg2btlg6aonnwy40kisjnr7xpeh4ioj+qm5p6qc2tbiuuk8pih7wns/htithyudb6deiqmvokhb8lnbjf3zwr3tzou3d1czgmw/ti0+d4pdvcftknh8ghsclncky+knmyipysyc/ym9xhh9fznirgd9ko1+xsktwlvv8fcvdvwq==</latexit> <latexit sha1_base64="rymgtvcskxw5op8/khepejbhpmk=">aaacpnicbvflt9taen64lzb9hhlksmqexcmyq0rtdqsx9ojaigqpjtl1ehjw2ye1oy6nfv+wxstp6r/p2liicr1ppw/m+2bnlzdsoeysp73o2fmxl19tbcc7r9+8fdfffx/ltgu5jlirxl7nzieugkyoumj1aygpxmi4x542/pghwcemvsrvcvpfflrmbwcyqrp+xvzni80kooeeohmamp71b8kway0+bwkhbqsz89luz2ef4zucjvwy5yzpuulum4ucs6jjrhjqmr5kc5geqjkcn/vt9zu9cjgczo0nl/tsrv/n8ew5t1j5ucqgn26ta4l/4yyvzr9mvdblhad5q6f5jska2qycfsicr7kkgherqq+u3zdloiafxwtlhcimg2btlg6aonnwy40kisjnr7xpeh4ioj+qm5p6qc2tbiuuk8pih7wns/htithyudb6deiqmvokhb8lnbjf3zwr3tzou3d1czgmw/ti0+d4pdvcftknh8ghsclncky+knmyipysyc/ym9xhh9fznirgd9ko1+xsktwlvv8fcvdvwq==</latexit> <latexit sha1_base64="0aiwyvh9cufn0xw1xe83llvz+uq=">aaacpxicbvfnb9naen24lrrtafqoxfanejwig1uqt1blug5irwrssneurdetdjx9shbhtnhiv8iv/hl/hrvrqsrlpjxezhuz85wxujhmkj+9agt759nz3rfxy71xr/f7b4djzyrlycsnnpymzw6k0dbcgrjusgtm5rku8+xnhr/+dtyjo69wvcjusyuwc8ezhtcsf5h90ugzcc45owjjzfqdzji0rp+ctamd0tnl7kdns8lwsofglplzkzqpceqzrcel1hfwosgzx7iftalutigb+rb5mr4lkylojq0vtnjg/83wtdm3unlqkoa3bpnrgv/jjhxop0290gwfopldoxklkrrabiiwwgjhuqqacstcr5tfmss4hn3fa2uckkadyg2uboa403dhjqqkwmentc8q7hhrn9zntb3u5k63fdevydop2sbz+oncgpkoal06dnxmkcxc/wicekudh3olm8d5csyfh2kytl8dd87ou8ptkrfkihwgktkhz+scxjir4ese/cs/yo/offq1uorgd9ko1+w8iwswzf4cco3vhq==</latexit> <latexit sha1_base64="0aiwyvh9cufn0xw1xe83llvz+uq=">aaacpxicbvfnb9naen24lrrtafqoxfanejwig1uqt1blug5irwrssneurdetdjx9shbhtnhiv8iv/hl/hrvrqsrlpjxezhuz85wxujhmkj+9agt759nz3rfxy71xr/f7b4djzyrlycsnnpymzw6k0dbcgrjusgtm5rku8+xnhr/+dtyjo69wvcjusyuwc8ezhtcsf5h90ugzcc45owjjzfqdzji0rp+ctamd0tnl7kdns8lwsofglplzkzqpceqzrcel1hfwosgzx7iftalutigb+rb5mr4lkylojq0vtnjg/83wtdm3unlqkoa3bpnrgv/jjhxop0290gwfopldoxklkrrabiiwwgjhuqqacstcr5tfmss4hn3fa2uckkadyg2uboa403dhjqqkwmentc8q7hhrn9zntb3u5k63fdevydop2sbz+oncgpkoal06dnxmkcxc/wicekudh3olm8d5csyfh2kytl8dd87ou8ptkrfkihwgktkhz+scxjir4ese/cs/yo/offq1uorgd9ko1+w8iwswzf4cco3vhq==</latexit> <latexit sha1_base64="0aiwyvh9cufn0xw1xe83llvz+uq=">aaacpxicbvfnb9naen24lrrtafqoxfanejwig1uqt1blug5irwrssneurdetdjx9shbhtnhiv8iv/hl/hrvrqsrlpjxezhuz85wxujhmkj+9agt759nz3rfxy71xr/f7b4djzyrlycsnnpymzw6k0dbcgrjusgtm5rku8+xnhr/+dtyjo69wvcjusyuwc8ezhtcsf5h90ugzcc45owjjzfqdzji0rp+ctamd0tnl7kdns8lwsofglplzkzqpceqzrcel1hfwosgzx7iftalutigb+rb5mr4lkylojq0vtnjg/83wtdm3unlqkoa3bpnrgv/jjhxop0290gwfopldoxklkrrabiiwwgjhuqqacstcr5tfmss4hn3fa2uckkadyg2uboa403dhjqqkwmentc8q7hhrn9zntb3u5k63fdevydop2sbz+oncgpkoal06dnxmkcxc/wicekudh3olm8d5csyfh2kytl8dd87ou8ptkrfkihwgktkhz+scxjir4ese/cs/yo/offq1uorgd9ko1+w8iwswzf4cco3vhq==</latexit> <latexit sha1_base64="0aiwyvh9cufn0xw1xe83llvz+uq=">aaacpxicbvfnb9naen24lrrtafqoxfanejwig1uqt1blug5irwrssneurdetdjx9shbhtnhiv8iv/hl/hrvrqsrlpjxezhuz85wxujhmkj+9agt759nz3rfxy71xr/f7b4djzyrlycsnnpymzw6k0dbcgrjusgtm5rku8+xnhr/+dtyjo69wvcjusyuwc8ezhtcsf5h90ugzcc45owjjzfqdzji0rp+ctamd0tnl7kdns8lwsofglplzkzqpceqzrcel1hfwosgzx7iftalutigb+rb5mr4lkylojq0vtnjg/83wtdm3unlqkoa3bpnrgv/jjhxop0290gwfopldoxklkrrabiiwwgjhuqqacstcr5tfmss4hn3fa2uckkadyg2uboa403dhjqqkwmentc8q7hhrn9zntb3u5k63fdevydop2sbz+oncgpkoal06dnxmkcxc/wicekudh3olm8d5csyfh2kytl8dd87ou8ptkrfkihwgktkhz+scxjir4ese/cs/yo/offq1uorgd9ko1+w8iwswzf4cco3vhq==</latexit> <latexit sha1_base64="ham9yjtkbpcnmr9gfmktov/7fru=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3833jerwvkh6z7hkq3ll77/6dnyfpo8dpnu4o956defs7arnhlxvnbfegpiejslrwvjngulbwwqw+tvzpd3bewvmn1xxmnf8auzccywznhy8y2ooyy5ep8n5ltdlng+l8omrgwwf0nsh7mck9hc/3bogvvtqadarfvz/mwywzwb1koabjwe2h4mlflzcn0hanfha6crr6okzkuraupoo0i/6bebj2fq2lqnqcz/021wb/x01rxhyybwmqgsgi60klwlg0tf0hlaudgwodardoxl6pooeoc4xlszfkendcrmhgkp0aktnwiayoijkwgyywhj+iga6atqzzgxthuoqbyrjqg23rbp10zk26exree7tq51rygx5ftsuyac+vbx/nnjh5n86zcf7l/ejwqd/cdnljxpe3jcf75jb8isdkqgrpyg/yh/xn3izfk+/j9fqadpqc52tdkvikbnpxlg==</latexit> <latexit sha1_base64="ham9yjtkbpcnmr9gfmktov/7fru=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3833jerwvkh6z7hkq3ll77/6dnyfpo8dpnu4o956defs7arnhlxvnbfegpiejslrwvjngulbwwqw+tvzpd3bewvmn1xxmnf8auzccywznhy8y2ooyy5ep8n5ltdlng+l8omrgwwf0nsh7mck9hc/3bogvvtqadarfvz/mwywzwb1koabjwe2h4mlflzcn0hanfha6crr6okzkuraupoo0i/6bebj2fq2lqnqcz/021wb/x01rxhyybwmqgsgi60klwlg0tf0hlaudgwodardoxl6pooeoc4xlszfkendcrmhgkp0aktnwiayoijkwgyywhj+iga6atqzzgxthuoqbyrjqg23rbp10zk26exree7tq51rygx5ftsuyac+vbx/nnjh5n86zcf7l/ejwqd/cdnljxpe3jcf75jb8isdkqgrpyg/yh/xn3izfk+/j9fqadpqc52tdkvikbnpxlg==</latexit> <latexit sha1_base64="ham9yjtkbpcnmr9gfmktov/7fru=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3833jerwvkh6z7hkq3ll77/6dnyfpo8dpnu4o956defs7arnhlxvnbfegpiejslrwvjngulbwwqw+tvzpd3bewvmn1xxmnf8auzccywznhy8y2ooyy5ep8n5ltdlng+l8omrgwwf0nsh7mck9hc/3bogvvtqadarfvz/mwywzwb1koabjwe2h4mlflzcn0hanfha6crr6okzkuraupoo0i/6bebj2fq2lqnqcz/021wb/x01rxhyybwmqgsgi60klwlg0tf0hlaudgwodardoxl6pooeoc4xlszfkendcrmhgkp0aktnwiayoijkwgyywhj+iga6atqzzgxthuoqbyrjqg23rbp10zk26exree7tq51rygx5ftsuyac+vbx/nnjh5n86zcf7l/ejwqd/cdnljxpe3jcf75jb8isdkqgrpyg/yh/xn3izfk+/j9fqadpqc52tdkvikbnpxlg==</latexit> <latexit sha1_base64="ham9yjtkbpcnmr9gfmktov/7fru=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3833jerwvkh6z7hkq3ll77/6dnyfpo8dpnu4o956defs7arnhlxvnbfegpiejslrwvjngulbwwqw+tvzpd3bewvmn1xxmnf8auzccywznhy8y2ooyy5ep8n5ltdlng+l8omrgwwf0nsh7mck9hc/3bogvvtqadarfvz/mwywzwb1koabjwe2h4mlflzcn0hanfha6crr6okzkuraupoo0i/6bebj2fq2lqnqcz/021wb/x01rxhyybwmqgsgi60klwlg0tf0hlaudgwodardoxl6pooeoc4xlszfkendcrmhgkp0aktnwiayoijkwgyywhj+iga6atqzzgxthuoqbyrjqg23rbp10zk26exree7tq51rygx5ftsuyac+vbx/nnjh5n86zcf7l/ejwqd/cdnljxpe3jcf75jb8isdkqgrpyg/yh/xn3izfk+/j9fqadpqc52tdkvikbnpxlg==</latexit> <latexit sha1_base64="dedvzfqzznzehl+so8ujgscjox8=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9myzhkcc0lr7erjpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbuertpg/83wtdm3uxlqkoaxbpdrgv/jphuups680gwfoplnouulkrraliiwwgjhuqmacstcr5rfmss4hnxfw2uckkadyguuboa407dmrgvf4bnx7toek0t047qpqvfarhvbcvszvn2rbzydn46mkbec1qtdv82cuiz9z8apudtnudld49wfz+9gatjkv7wfhh51h9snl8kr8pak5am5jj/ikzkqttbkmvwiv6m30efoazs5kua9lucf2blo+19vhnsz</latexit> <latexit sha1_base64="dedvzfqzznzehl+so8ujgscjox8=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9myzhkcc0lr7erjpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbuertpg/83wtdm3uxlqkoaxbpdrgv/jphuups680gwfoplnouulkrraliiwwgjhuqmacstcr5rfmss4hnxfw2uckkadyguuboa407dmrgvf4bnx7toek0t047qpqvfarhvbcvszvn2rbzydn46mkbec1qtdv82cuiz9z8apudtnudld49wfz+9gatjkv7wfhh51h9snl8kr8pak5am5jj/ikzkqttbkmvwiv6m30efoazs5kua9lucf2blo+19vhnsz</latexit> <latexit sha1_base64="dedvzfqzznzehl+so8ujgscjox8=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9myzhkcc0lr7erjpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbuertpg/83wtdm3uxlqkoaxbpdrgv/jphuups680gwfoplnouulkrraliiwwgjhuqmacstcr5rfmss4hnxfw2uckkadyguuboa407dmrgvf4bnx7toek0t047qpqvfarhvbcvszvn2rbzydn46mkbec1qtdv82cuiz9z8apudtnudld49wfz+9gatjkv7wfhh51h9snl8kr8pak5am5jj/ikzkqttbkmvwiv6m30efoazs5kua9lucf2blo+19vhnsz</latexit> <latexit sha1_base64="dedvzfqzznzehl+so8ujgscjox8=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9myzhkcc0lr7erjpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbuertpg/83wtdm3uxlqkoaxbpdrgv/jphuups680gwfoplnouulkrraliiwwgjhuqmacstcr5rfmss4hnxfw2uckkadyguuboa407dmrgvf4bnx7toek0t047qpqvfarhvbcvszvn2rbzydn46mkbec1qtdv82cuiz9z8apudtnudld49wfz+9gatjkv7wfhh51h9snl8kr8pak5am5jj/ikzkqttbkmvwiv6m30efoazs5kua9lucf2blo+19vhnsz</latexit> Consistent Lifting Int. Int Int 6. Bool Int. > >6. Int Int.??. Int 100

145 <latexit sha1_base64="5/tsn/abqruokyp0ngmdce5zico=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9mjrppjcm4jrbnxpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbte6ksn/pvhmxjuo/kgvawv3s7xbp/htstcfjx5ocskqfobqotkujs0wqqthawochma41aexim/zjzxdoukt8o4uewhwdyo3qbxpmhnjqqkwmfj2mciv4jox3vtu6+0weu24ryyrp1w2zg7px0zi28frvehrpo5pvj6n4ftoqibc6w7x7klzt6n0msufnk/pdzqdrdpxpjx5c1jyqdysd6ruzihnkzjnflffkdvos/r12hyi416xc4lsmxr979yjtsz</latexit> <latexit sha1_base64="5/tsn/abqruokyp0ngmdce5zico=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9mjrppjcm4jrbnxpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbte6ksn/pvhmxjuo/kgvawv3s7xbp/htstcfjx5ocskqfobqotkujs0wqqthawochma41aexim/zjzxdoukt8o4uewhwdyo3qbxpmhnjqqkwmfj2mciv4jox3vtu6+0weu24ryyrp1w2zg7px0zi28frvehrpo5pvj6n4ftoqibc6w7x7klzt6n0msufnk/pdzqdrdpxpjx5c1jyqdysd6ruzihnkzjnflffkdvos/r12hyi416xc4lsmxr979yjtsz</latexit> <latexit sha1_base64="5/tsn/abqruokyp0ngmdce5zico=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9mjrppjcm4jrbnxpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbte6ksn/pvhmxjuo/kgvawv3s7xbp/htstcfjx5ocskqfobqotkujs0wqqthawochma41aexim/zjzxdoukt8o4uewhwdyo3qbxpmhnjqqkwmfj2mciv4jox3vtu6+0weu24ryyrp1w2zg7px0zi28frvehrpo5pvj6n4ftoqibc6w7x7klzt6n0msufnk/pdzqdrdpxpjx5c1jyqdysd6ruzihnkzjnflffkdvos/r12hyi416xc4lsmxr979yjtsz</latexit> <latexit sha1_base64="5/tsn/abqruokyp0ngmdce5zico=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9mjrppjcm4jrbnxpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbte6ksn/pvhmxjuo/kgvawv3s7xbp/htstcfjx5ocskqfobqotkujs0wqqthawochma41aexim/zjzxdoukt8o4uewhwdyo3qbxpmhnjqqkwmfj2mciv4jox3vtu6+0weu24ryyrp1w2zg7px0zi28frvehrpo5pvj6n4ftoqibc6w7x7klzt6n0msufnk/pdzqdrdpxpjx5c1jyqdysd6ruzihnkzjnflffkdvos/r12hyi416xc4lsmxr979yjtsz</latexit> <latexit sha1_base64="w+zzsrcg9wfiirgznyursqpffma=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3m9/4m0drkekxyy4hyz279+4/2hmypnr85onuco/zibe1ezarvll3vnapshqyoeqfz5udrgsfp8xqy5s//qhos2u+4bqcmezlixdsciyh+faf+2yqmmorkfdes03zkbvqphxl46wzehvkprir3o7ne4pasitqdqaf4t5p86zcweaopvdqpkz2uhgx4kuyrmi4bj8l3qqnfr0jjv1yf1/sp4v+wxg49n6ti8juhm/9dq4n/i83rxhxyrakqwoei66ffrwiagm7dlpkbwlvogiuniy9unhohrcyl5zuyhjq3etcxij9ackzccgsjowysimmmisfibgomlbtriy9mj3ijjmu/4bbols/tae4ixree7tq51rygx7fnjzlk8zz5dvhuq1o3o3zbjx/et86poopt0neklfkdcnjpjkkn8gxmrbbgvkb/cf/k7fj1+r7mr2mjoo+5jnzsks8as/e18u=</latexit> <latexit sha1_base64="w+zzsrcg9wfiirgznyursqpffma=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3m9/4m0drkekxyy4hyz279+4/2hmypnr85onuco/zibe1ezarvll3vnapshqyoeqfz5udrgsfp8xqy5s//qhos2u+4bqcmezlixdsciyh+faf+2yqmmorkfdes03zkbvqphxl46wzehvkprir3o7ne4pasitqdqaf4t5p86zcweaopvdqpkz2uhgx4kuyrmi4bj8l3qqnfr0jjv1yf1/sp4v+wxg49n6ti8juhm/9dq4n/i83rxhxyrakqwoei66ffrwiagm7dlpkbwlvogiuniy9unhohrcyl5zuyhjq3etcxij9ackzccgsjowysimmmisfibgomlbtriy9mj3ijjmu/4bbols/tae4ixree7tq51rygx7fnjzlk8zz5dvhuq1o3o3zbjx/et86poopt0neklfkdcnjpjkkn8gxmrbbgvkb/cf/k7fj1+r7mr2mjoo+5jnzsks8as/e18u=</latexit> <latexit sha1_base64="w+zzsrcg9wfiirgznyursqpffma=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3m9/4m0drkekxyy4hyz279+4/2hmypnr85onuco/zibe1ezarvll3vnapshqyoeqfz5udrgsfp8xqy5s//qhos2u+4bqcmezlixdsciyh+faf+2yqmmorkfdes03zkbvqphxl46wzehvkprir3o7ne4pasitqdqaf4t5p86zcweaopvdqpkz2uhgx4kuyrmi4bj8l3qqnfr0jjv1yf1/sp4v+wxg49n6ti8juhm/9dq4n/i83rxhxyrakqwoei66ffrwiagm7dlpkbwlvogiuniy9unhohrcyl5zuyhjq3etcxij9ackzccgsjowysimmmisfibgomlbtriy9mj3ijjmu/4bbols/tae4ixree7tq51rygx7fnjzlk8zz5dvhuq1o3o3zbjx/et86poopt0neklfkdcnjpjkkn8gxmrbbgvkb/cf/k7fj1+r7mr2mjoo+5jnzsks8as/e18u=</latexit> <latexit sha1_base64="w+zzsrcg9wfiirgznyursqpffma=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3m9/4m0drkekxyy4hyz279+4/2hmypnr85onuco/zibe1ezarvll3vnapshqyoeqfz5udrgsfp8xqy5s//qhos2u+4bqcmezlixdsciyh+faf+2yqmmorkfdes03zkbvqphxl46wzehvkprir3o7ne4pasitqdqaf4t5p86zcweaopvdqpkz2uhgx4kuyrmi4bj8l3qqnfr0jjv1yf1/sp4v+wxg49n6ti8juhm/9dq4n/i83rxhxyrakqwoei66ffrwiagm7dlpkbwlvogiuniy9unhohrcyl5zuyhjq3etcxij9ackzccgsjowysimmmisfibgomlbtriy9mj3ijjmu/4bbols/tae4ixree7tq51rygx7fnjzlk8zz5dvhuq1o3o3zbjx/et86poopt0neklfkdcnjpjkkn8gxmrbbgvkb/cf/k7fj1+r7mr2mjoo+5jnzsks8as/e18u=</latexit> <latexit sha1_base64="rymgtvcskxw5op8/khepejbhpmk=">aaacpnicbvflt9taen64lzb9hhlksmqexcmyq0rtdqsx9ojaigqpjtl1ehjw2ye1oy6nfv+wxstp6r/p2liicr1ppw/m+2bnlzdsoeysp73o2fmxl19tbcc7r9+8fdfffx/ltgu5jlirxl7nzieugkyoumj1aygpxmi4x542/pghwcemvsrvcvpfflrmbwcyqrp+xvzni80kooeeohmamp71b8kway0+bwkhbqsz89luz2ef4zucjvwy5yzpuulum4ucs6jjrhjqmr5kc5geqjkcn/vt9zu9cjgczo0nl/tsrv/n8ew5t1j5ucqgn26ta4l/4yyvzr9mvdblhad5q6f5jska2qycfsicr7kkgherqq+u3zdloiafxwtlhcimg2btlg6aonnwy40kisjnr7xpeh4ioj+qm5p6qc2tbiuuk8pih7wns/htithyudb6deiqmvokhb8lnbjf3zwr3tzou3d1czgmw/ti0+d4pdvcftknh8ghsclncky+knmyipysyc/ym9xhh9fznirgd9ko1+xsktwlvv8fcvdvwq==</latexit> <latexit sha1_base64="rymgtvcskxw5op8/khepejbhpmk=">aaacpnicbvflt9taen64lzb9hhlksmqexcmyq0rtdqsx9ojaigqpjtl1ehjw2ye1oy6nfv+wxstp6r/p2liicr1ppw/m+2bnlzdsoeysp73o2fmxl19tbcc7r9+8fdfffx/ltgu5jlirxl7nzieugkyoumj1aygpxmi4x542/pghwcemvsrvcvpfflrmbwcyqrp+xvzni80kooeeohmamp71b8kway0+bwkhbqsz89luz2ef4zucjvwy5yzpuulum4ucs6jjrhjqmr5kc5geqjkcn/vt9zu9cjgczo0nl/tsrv/n8ew5t1j5ucqgn26ta4l/4yyvzr9mvdblhad5q6f5jska2qycfsicr7kkgherqq+u3zdloiafxwtlhcimg2btlg6aonnwy40kisjnr7xpeh4ioj+qm5p6qc2tbiuuk8pih7wns/htithyudb6deiqmvokhb8lnbjf3zwr3tzou3d1czgmw/ti0+d4pdvcftknh8ghsclncky+knmyipysyc/ym9xhh9fznirgd9ko1+xsktwlvv8fcvdvwq==</latexit> <latexit sha1_base64="rymgtvcskxw5op8/khepejbhpmk=">aaacpnicbvflt9taen64lzb9hhlksmqexcmyq0rtdqsx9ojaigqpjtl1ehjw2ye1oy6nfv+wxstp6r/p2liicr1ppw/m+2bnlzdsoeysp73o2fmxl19tbcc7r9+8fdfffx/ltgu5jlirxl7nzieugkyoumj1aygpxmi4x542/pghwcemvsrvcvpfflrmbwcyqrp+xvzni80kooeeohmamp71b8kway0+bwkhbqsz89luz2ef4zucjvwy5yzpuulum4ucs6jjrhjqmr5kc5geqjkcn/vt9zu9cjgczo0nl/tsrv/n8ew5t1j5ucqgn26ta4l/4yyvzr9mvdblhad5q6f5jska2qycfsicr7kkgherqq+u3zdloiafxwtlhcimg2btlg6aonnwy40kisjnr7xpeh4ioj+qm5p6qc2tbiuuk8pih7wns/htithyudb6deiqmvokhb8lnbjf3zwr3tzou3d1czgmw/ti0+d4pdvcftknh8ghsclncky+knmyipysyc/ym9xhh9fznirgd9ko1+xsktwlvv8fcvdvwq==</latexit> <latexit sha1_base64="rymgtvcskxw5op8/khepejbhpmk=">aaacpnicbvflt9taen64lzb9hhlksmqexcmyq0rtdqsx9ojaigqpjtl1ehjw2ye1oy6nfv+wxstp6r/p2liicr1ppw/m+2bnlzdsoeysp73o2fmxl19tbcc7r9+8fdfffx/ltgu5jlirxl7nzieugkyoumj1aygpxmi4x542/pghwcemvsrvcvpfflrmbwcyqrp+xvzni80kooeeohmamp71b8kway0+bwkhbqsz89luz2ef4zucjvwy5yzpuulum4ucs6jjrhjqmr5kc5geqjkcn/vt9zu9cjgczo0nl/tsrv/n8ew5t1j5ucqgn26ta4l/4yyvzr9mvdblhad5q6f5jska2qycfsicr7kkgherqq+u3zdloiafxwtlhcimg2btlg6aonnwy40kisjnr7xpeh4ioj+qm5p6qc2tbiuuk8pih7wns/htithyudb6deiqmvokhb8lnbjf3zwr3tzou3d1czgmw/ti0+d4pdvcftknh8ghsclncky+knmyipysyc/ym9xhh9fznirgd9ko1+xsktwlvv8fcvdvwq==</latexit> <latexit sha1_base64="0aiwyvh9cufn0xw1xe83llvz+uq=">aaacpxicbvfnb9naen24lrrtafqoxfanejwig1uqt1blug5irwrssneurdetdjx9shbhtnhiv8iv/hl/hrvrqsrlpjxezhuz85wxujhmkj+9agt759nz3rfxy71xr/f7b4djzyrlycsnnpymzw6k0dbcgrjusgtm5rku8+xnhr/+dtyjo69wvcjusyuwc8ezhtcsf5h90ugzcc45owjjzfqdzji0rp+ctamd0tnl7kdns8lwsofglplzkzqpceqzrcel1hfwosgzx7iftalutigb+rb5mr4lkylojq0vtnjg/83wtdm3unlqkoa3bpnrgv/jjhxop0290gwfopldoxklkrrabiiwwgjhuqqacstcr5tfmss4hn3fa2uckkadyg2uboa403dhjqqkwmentc8q7hhrn9zntb3u5k63fdevydop2sbz+oncgpkoal06dnxmkcxc/wicekudh3olm8d5csyfh2kytl8dd87ou8ptkrfkihwgktkhz+scxjir4ese/cs/yo/offq1uorgd9ko1+w8iwswzf4cco3vhq==</latexit> <latexit sha1_base64="0aiwyvh9cufn0xw1xe83llvz+uq=">aaacpxicbvfnb9naen24lrrtafqoxfanejwig1uqt1blug5irwrssneurdetdjx9shbhtnhiv8iv/hl/hrvrqsrlpjxezhuz85wxujhmkj+9agt759nz3rfxy71xr/f7b4djzyrlycsnnpymzw6k0dbcgrjusgtm5rku8+xnhr/+dtyjo69wvcjusyuwc8ezhtcsf5h90ugzcc45owjjzfqdzji0rp+ctamd0tnl7kdns8lwsofglplzkzqpceqzrcel1hfwosgzx7iftalutigb+rb5mr4lkylojq0vtnjg/83wtdm3unlqkoa3bpnrgv/jjhxop0290gwfopldoxklkrrabiiwwgjhuqqacstcr5tfmss4hn3fa2uckkadyg2uboa403dhjqqkwmentc8q7hhrn9zntb3u5k63fdevydop2sbz+oncgpkoal06dnxmkcxc/wicekudh3olm8d5csyfh2kytl8dd87ou8ptkrfkihwgktkhz+scxjir4ese/cs/yo/offq1uorgd9ko1+w8iwswzf4cco3vhq==</latexit> <latexit sha1_base64="0aiwyvh9cufn0xw1xe83llvz+uq=">aaacpxicbvfnb9naen24lrrtafqoxfanejwig1uqt1blug5irwrssneurdetdjx9shbhtnhiv8iv/hl/hrvrqsrlpjxezhuz85wxujhmkj+9agt759nz3rfxy71xr/f7b4djzyrlycsnnpymzw6k0dbcgrjusgtm5rku8+xnhr/+dtyjo69wvcjusyuwc8ezhtcsf5h90ugzcc45owjjzfqdzji0rp+ctamd0tnl7kdns8lwsofglplzkzqpceqzrcel1hfwosgzx7iftalutigb+rb5mr4lkylojq0vtnjg/83wtdm3unlqkoa3bpnrgv/jjhxop0290gwfopldoxklkrrabiiwwgjhuqqacstcr5tfmss4hn3fa2uckkadyg2uboa403dhjqqkwmentc8q7hhrn9zntb3u5k63fdevydop2sbz+oncgpkoal06dnxmkcxc/wicekudh3olm8d5csyfh2kytl8dd87ou8ptkrfkihwgktkhz+scxjir4ese/cs/yo/offq1uorgd9ko1+w8iwswzf4cco3vhq==</latexit> <latexit sha1_base64="0aiwyvh9cufn0xw1xe83llvz+uq=">aaacpxicbvfnb9naen24lrrtafqoxfanejwig1uqt1blug5irwrssneurdetdjx9shbhtnhiv8iv/hl/hrvrqsrlpjxezhuz85wxujhmkj+9agt759nz3rfxy71xr/f7b4djzyrlycsnnpymzw6k0dbcgrjusgtm5rku8+xnhr/+dtyjo69wvcjusyuwc8ezhtcsf5h90ugzcc45owjjzfqdzji0rp+ctamd0tnl7kdns8lwsofglplzkzqpceqzrcel1hfwosgzx7iftalutigb+rb5mr4lkylojq0vtnjg/83wtdm3unlqkoa3bpnrgv/jjhxop0290gwfopldoxklkrrabiiwwgjhuqqacstcr5tfmss4hn3fa2uckkadyg2uboa403dhjqqkwmentc8q7hhrn9zntb3u5k63fdevydop2sbz+oncgpkoal06dnxmkcxc/wicekudh3olm8d5csyfh2kytl8dd87ou8ptkrfkihwgktkhz+scxjir4ese/cs/yo/offq1uorgd9ko1+w8iwswzf4cco3vhq==</latexit> <latexit sha1_base64="ham9yjtkbpcnmr9gfmktov/7fru=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3833jerwvkh6z7hkq3ll77/6dnyfpo8dpnu4o956defs7arnhlxvnbfegpiejslrwvjngulbwwqw+tvzpd3bewvmn1xxmnf8auzccywznhy8y2ooyy5ep8n5ltdlng+l8omrgwwf0nsh7mck9hc/3bogvvtqadarfvz/mwywzwb1koabjwe2h4mlflzcn0hanfha6crr6okzkuraupoo0i/6bebj2fq2lqnqcz/021wb/x01rxhyybwmqgsgi60klwlg0tf0hlaudgwodardoxl6pooeoc4xlszfkendcrmhgkp0aktnwiayoijkwgyywhj+iga6atqzzgxthuoqbyrjqg23rbp10zk26exree7tq51rygx5ftsuyac+vbx/nnjh5n86zcf7l/ejwqd/cdnljxpe3jcf75jb8isdkqgrpyg/yh/xn3izfk+/j9fqadpqc52tdkvikbnpxlg==</latexit> <latexit sha1_base64="ham9yjtkbpcnmr9gfmktov/7fru=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3833jerwvkh6z7hkq3ll77/6dnyfpo8dpnu4o956defs7arnhlxvnbfegpiejslrwvjngulbwwqw+tvzpd3bewvmn1xxmnf8auzccywznhy8y2ooyy5ep8n5ltdlng+l8omrgwwf0nsh7mck9hc/3bogvvtqadarfvz/mwywzwb1koabjwe2h4mlflzcn0hanfha6crr6okzkuraupoo0i/6bebj2fq2lqnqcz/021wb/x01rxhyybwmqgsgi60klwlg0tf0hlaudgwodardoxl6pooeoc4xlszfkendcrmhgkp0aktnwiayoijkwgyywhj+iga6atqzzgxthuoqbyrjqg23rbp10zk26exree7tq51rygx5ftsuyac+vbx/nnjh5n86zcf7l/ejwqd/cdnljxpe3jcf75jb8isdkqgrpyg/yh/xn3izfk+/j9fqadpqc52tdkvikbnpxlg==</latexit> <latexit sha1_base64="ham9yjtkbpcnmr9gfmktov/7fru=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3833jerwvkh6z7hkq3ll77/6dnyfpo8dpnu4o956defs7arnhlxvnbfegpiejslrwvjngulbwwqw+tvzpd3bewvmn1xxmnf8auzccywznhy8y2ooyy5ep8n5ltdlng+l8omrgwwf0nsh7mck9hc/3bogvvtqadarfvz/mwywzwb1koabjwe2h4mlflzcn0hanfha6crr6okzkuraupoo0i/6bebj2fq2lqnqcz/021wb/x01rxhyybwmqgsgi60klwlg0tf0hlaudgwodardoxl6pooeoc4xlszfkendcrmhgkp0aktnwiayoijkwgyywhj+iga6atqzzgxthuoqbyrjqg23rbp10zk26exree7tq51rygx5ftsuyac+vbx/nnjh5n86zcf7l/ejwqd/cdnljxpe3jcf75jb8isdkqgrpyg/yh/xn3izfk+/j9fqadpqc52tdkvikbnpxlg==</latexit> <latexit sha1_base64="ham9yjtkbpcnmr9gfmktov/7fru=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3833jerwvkh6z7hkq3ll77/6dnyfpo8dpnu4o956defs7arnhlxvnbfegpiejslrwvjngulbwwqw+tvzpd3bewvmn1xxmnf8auzccywznhy8y2ooyy5ep8n5ltdlng+l8omrgwwf0nsh7mck9hc/3bogvvtqadarfvz/mwywzwb1koabjwe2h4mlflzcn0hanfha6crr6okzkuraupoo0i/6bebj2fq2lqnqcz/021wb/x01rxhyybwmqgsgi60klwlg0tf0hlaudgwodardoxl6pooeoc4xlszfkendcrmhgkp0aktnwiayoijkwgyywhj+iga6atqzzgxthuoqbyrjqg23rbp10zk26exree7tq51rygx5ftsuyac+vbx/nnjh5n86zcf7l/ejwqd/cdnljxpe3jcf75jb8isdkqgrpyg/yh/xn3izfk+/j9fqadpqc52tdkvikbnpxlg==</latexit> <latexit sha1_base64="dedvzfqzznzehl+so8ujgscjox8=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9myzhkcc0lr7erjpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbuertpg/83wtdm3uxlqkoaxbpdrgv/jphuups680gwfoplnouulkrraliiwwgjhuqmacstcr5rfmss4hnxfw2uckkadyguuboa407dmrgvf4bnx7toek0t047qpqvfarhvbcvszvn2rbzydn46mkbec1qtdv82cuiz9z8apudtnudld49wfz+9gatjkv7wfhh51h9snl8kr8pak5am5jj/ikzkqttbkmvwiv6m30efoazs5kua9lucf2blo+19vhnsz</latexit> <latexit sha1_base64="dedvzfqzznzehl+so8ujgscjox8=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9myzhkcc0lr7erjpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbuertpg/83wtdm3uxlqkoaxbpdrgv/jphuups680gwfoplnouulkrraliiwwgjhuqmacstcr5rfmss4hnxfw2uckkadyguuboa407dmrgvf4bnx7toek0t047qpqvfarhvbcvszvn2rbzydn46mkbec1qtdv82cuiz9z8apudtnudld49wfz+9gatjkv7wfhh51h9snl8kr8pak5am5jj/ikzkqttbkmvwiv6m30efoazs5kua9lucf2blo+19vhnsz</latexit> <latexit sha1_base64="dedvzfqzznzehl+so8ujgscjox8=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9myzhkcc0lr7erjpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbuertpg/83wtdm3uxlqkoaxbpdrgv/jphuups680gwfoplnouulkrraliiwwgjhuqmacstcr5rfmss4hnxfw2uckkadyguuboa407dmrgvf4bnx7toek0t047qpqvfarhvbcvszvn2rbzydn46mkbec1qtdv82cuiz9z8apudtnudld49wfz+9gatjkv7wfhh51h9snl8kr8pak5am5jj/ikzkqttbkmvwiv6m30efoazs5kua9lucf2blo+19vhnsz</latexit> <latexit sha1_base64="dedvzfqzznzehl+so8ujgscjox8=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9myzhkcc0lr7erjpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbuertpg/83wtdm3uxlqkoaxbpdrgv/jphuups680gwfoplnouulkrraliiwwgjhuqmacstcr5rfmss4hnxfw2uckkadyguuboa407dmrgvf4bnx7toek0t047qpqvfarhvbcvszvn2rbzydn46mkbec1qtdv82cuiz9z8apudtnudld49wfz+9gatjkv7wfhh51h9snl8kr8pak5am5jj/ikzkqttbkmvwiv6m30efoazs5kua9lucf2blo+19vhnsz</latexit> Consistent Lifting Conservatively Extends <: Int. Int Int 6. Bool Int. > >6. Int Int.??. Int 100

146 <latexit sha1_base64="5/tsn/abqruokyp0ngmdce5zico=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9mjrppjcm4jrbnxpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbte6ksn/pvhmxjuo/kgvawv3s7xbp/htstcfjx5ocskqfobqotkujs0wqqthawochma41aexim/zjzxdoukt8o4uewhwdyo3qbxpmhnjqqkwmfj2mciv4jox3vtu6+0weu24ryyrp1w2zg7px0zi28frvehrpo5pvj6n4ftoqibc6w7x7klzt6n0msufnk/pdzqdrdpxpjx5c1jyqdysd6ruzihnkzjnflffkdvos/r12hyi416xc4lsmxr979yjtsz</latexit> <latexit sha1_base64="5/tsn/abqruokyp0ngmdce5zico=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9mjrppjcm4jrbnxpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbte6ksn/pvhmxjuo/kgvawv3s7xbp/htstcfjx5ocskqfobqotkujs0wqqthawochma41aexim/zjzxdoukt8o4uewhwdyo3qbxpmhnjqqkwmfj2mciv4jox3vtu6+0weu24ryyrp1w2zg7px0zi28frvehrpo5pvj6n4ftoqibc6w7x7klzt6n0msufnk/pdzqdrdpxpjx5c1jyqdysd6ruzihnkzjnflffkdvos/r12hyi416xc4lsmxr979yjtsz</latexit> <latexit sha1_base64="5/tsn/abqruokyp0ngmdce5zico=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9mjrppjcm4jrbnxpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbte6ksn/pvhmxjuo/kgvawv3s7xbp/htstcfjx5ocskqfobqotkujs0wqqthawochma41aexim/zjzxdoukt8o4uewhwdyo3qbxpmhnjqqkwmfj2mciv4jox3vtu6+0weu24ryyrp1w2zg7px0zi28frvehrpo5pvj6n4ftoqibc6w7x7klzt6n0msufnk/pdzqdrdpxpjx5c1jyqdysd6ruzihnkzjnflffkdvos/r12hyi416xc4lsmxr979yjtsz</latexit> <latexit sha1_base64="5/tsn/abqruokyp0ngmdce5zico=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9mjrppjcm4jrbnxpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbte6ksn/pvhmxjuo/kgvawv3s7xbp/htstcfjx5ocskqfobqotkujs0wqqthawochma41aexim/zjzxdoukt8o4uewhwdyo3qbxpmhnjqqkwmfj2mciv4jox3vtu6+0weu24ryyrp1w2zg7px0zi28frvehrpo5pvj6n4ftoqibc6w7x7klzt6n0msufnk/pdzqdrdpxpjx5c1jyqdysd6ruzihnkzjnflffkdvos/r12hyi416xc4lsmxr979yjtsz</latexit> <latexit sha1_base64="w+zzsrcg9wfiirgznyursqpffma=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3m9/4m0drkekxyy4hyz279+4/2hmypnr85onuco/zibe1ezarvll3vnapshqyoeqfz5udrgsfp8xqy5s//qhos2u+4bqcmezlixdsciyh+faf+2yqmmorkfdes03zkbvqphxl46wzehvkprir3o7ne4pasitqdqaf4t5p86zcweaopvdqpkz2uhgx4kuyrmi4bj8l3qqnfr0jjv1yf1/sp4v+wxg49n6ti8juhm/9dq4n/i83rxhxyrakqwoei66ffrwiagm7dlpkbwlvogiuniy9unhohrcyl5zuyhjq3etcxij9ackzccgsjowysimmmisfibgomlbtriy9mj3ijjmu/4bbols/tae4ixree7tq51rygx7fnjzlk8zz5dvhuq1o3o3zbjx/et86poopt0neklfkdcnjpjkkn8gxmrbbgvkb/cf/k7fj1+r7mr2mjoo+5jnzsks8as/e18u=</latexit> <latexit sha1_base64="w+zzsrcg9wfiirgznyursqpffma=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3m9/4m0drkekxyy4hyz279+4/2hmypnr85onuco/zibe1ezarvll3vnapshqyoeqfz5udrgsfp8xqy5s//qhos2u+4bqcmezlixdsciyh+faf+2yqmmorkfdes03zkbvqphxl46wzehvkprir3o7ne4pasitqdqaf4t5p86zcweaopvdqpkz2uhgx4kuyrmi4bj8l3qqnfr0jjv1yf1/sp4v+wxg49n6ti8juhm/9dq4n/i83rxhxyrakqwoei66ffrwiagm7dlpkbwlvogiuniy9unhohrcyl5zuyhjq3etcxij9ackzccgsjowysimmmisfibgomlbtriy9mj3ijjmu/4bbols/tae4ixree7tq51rygx7fnjzlk8zz5dvhuq1o3o3zbjx/et86poopt0neklfkdcnjpjkkn8gxmrbbgvkb/cf/k7fj1+r7mr2mjoo+5jnzsks8as/e18u=</latexit> <latexit sha1_base64="w+zzsrcg9wfiirgznyursqpffma=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3m9/4m0drkekxyy4hyz279+4/2hmypnr85onuco/zibe1ezarvll3vnapshqyoeqfz5udrgsfp8xqy5s//qhos2u+4bqcmezlixdsciyh+faf+2yqmmorkfdes03zkbvqphxl46wzehvkprir3o7ne4pasitqdqaf4t5p86zcweaopvdqpkz2uhgx4kuyrmi4bj8l3qqnfr0jjv1yf1/sp4v+wxg49n6ti8juhm/9dq4n/i83rxhxyrakqwoei66ffrwiagm7dlpkbwlvogiuniy9unhohrcyl5zuyhjq3etcxij9ackzccgsjowysimmmisfibgomlbtriy9mj3ijjmu/4bbols/tae4ixree7tq51rygx7fnjzlk8zz5dvhuq1o3o3zbjx/et86poopt0neklfkdcnjpjkkn8gxmrbbgvkb/cf/k7fj1+r7mr2mjoo+5jnzsks8as/e18u=</latexit> <latexit sha1_base64="w+zzsrcg9wfiirgznyursqpffma=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3m9/4m0drkekxyy4hyz279+4/2hmypnr85onuco/zibe1ezarvll3vnapshqyoeqfz5udrgsfp8xqy5s//qhos2u+4bqcmezlixdsciyh+faf+2yqmmorkfdes03zkbvqphxl46wzehvkprir3o7ne4pasitqdqaf4t5p86zcweaopvdqpkz2uhgx4kuyrmi4bj8l3qqnfr0jjv1yf1/sp4v+wxg49n6ti8juhm/9dq4n/i83rxhxyrakqwoei66ffrwiagm7dlpkbwlvogiuniy9unhohrcyl5zuyhjq3etcxij9ackzccgsjowysimmmisfibgomlbtriy9mj3ijjmu/4bbols/tae4ixree7tq51rygx7fnjzlk8zz5dvhuq1o3o3zbjx/et86poopt0neklfkdcnjpjkkn8gxmrbbgvkb/cf/k7fj1+r7mr2mjoo+5jnzsks8as/e18u=</latexit> <latexit sha1_base64="rymgtvcskxw5op8/khepejbhpmk=">aaacpnicbvflt9taen64lzb9hhlksmqexcmyq0rtdqsx9ojaigqpjtl1ehjw2ye1oy6nfv+wxstp6r/p2liicr1ppw/m+2bnlzdsoeysp73o2fmxl19tbcc7r9+8fdfffx/ltgu5jlirxl7nzieugkyoumj1aygpxmi4x542/pghwcemvsrvcvpfflrmbwcyqrp+xvzni80kooeeohmamp71b8kway0+bwkhbqsz89luz2ef4zucjvwy5yzpuulum4ucs6jjrhjqmr5kc5geqjkcn/vt9zu9cjgczo0nl/tsrv/n8ew5t1j5ucqgn26ta4l/4yyvzr9mvdblhad5q6f5jska2qycfsicr7kkgherqq+u3zdloiafxwtlhcimg2btlg6aonnwy40kisjnr7xpeh4ioj+qm5p6qc2tbiuuk8pih7wns/htithyudb6deiqmvokhb8lnbjf3zwr3tzou3d1czgmw/ti0+d4pdvcftknh8ghsclncky+knmyipysyc/ym9xhh9fznirgd9ko1+xsktwlvv8fcvdvwq==</latexit> <latexit sha1_base64="rymgtvcskxw5op8/khepejbhpmk=">aaacpnicbvflt9taen64lzb9hhlksmqexcmyq0rtdqsx9ojaigqpjtl1ehjw2ye1oy6nfv+wxstp6r/p2liicr1ppw/m+2bnlzdsoeysp73o2fmxl19tbcc7r9+8fdfffx/ltgu5jlirxl7nzieugkyoumj1aygpxmi4x542/pghwcemvsrvcvpfflrmbwcyqrp+xvzni80kooeeohmamp71b8kway0+bwkhbqsz89luz2ef4zucjvwy5yzpuulum4ucs6jjrhjqmr5kc5geqjkcn/vt9zu9cjgczo0nl/tsrv/n8ew5t1j5ucqgn26ta4l/4yyvzr9mvdblhad5q6f5jska2qycfsicr7kkgherqq+u3zdloiafxwtlhcimg2btlg6aonnwy40kisjnr7xpeh4ioj+qm5p6qc2tbiuuk8pih7wns/htithyudb6deiqmvokhb8lnbjf3zwr3tzou3d1czgmw/ti0+d4pdvcftknh8ghsclncky+knmyipysyc/ym9xhh9fznirgd9ko1+xsktwlvv8fcvdvwq==</latexit> <latexit sha1_base64="rymgtvcskxw5op8/khepejbhpmk=">aaacpnicbvflt9taen64lzb9hhlksmqexcmyq0rtdqsx9ojaigqpjtl1ehjw2ye1oy6nfv+wxstp6r/p2liicr1ppw/m+2bnlzdsoeysp73o2fmxl19tbcc7r9+8fdfffx/ltgu5jlirxl7nzieugkyoumj1aygpxmi4x542/pghwcemvsrvcvpfflrmbwcyqrp+xvzni80kooeeohmamp71b8kway0+bwkhbqsz89luz2ef4zucjvwy5yzpuulum4ucs6jjrhjqmr5kc5geqjkcn/vt9zu9cjgczo0nl/tsrv/n8ew5t1j5ucqgn26ta4l/4yyvzr9mvdblhad5q6f5jska2qycfsicr7kkgherqq+u3zdloiafxwtlhcimg2btlg6aonnwy40kisjnr7xpeh4ioj+qm5p6qc2tbiuuk8pih7wns/htithyudb6deiqmvokhb8lnbjf3zwr3tzou3d1czgmw/ti0+d4pdvcftknh8ghsclncky+knmyipysyc/ym9xhh9fznirgd9ko1+xsktwlvv8fcvdvwq==</latexit> <latexit sha1_base64="rymgtvcskxw5op8/khepejbhpmk=">aaacpnicbvflt9taen64lzb9hhlksmqexcmyq0rtdqsx9ojaigqpjtl1ehjw2ye1oy6nfv+wxstp6r/p2liicr1ppw/m+2bnlzdsoeysp73o2fmxl19tbcc7r9+8fdfffx/ltgu5jlirxl7nzieugkyoumj1aygpxmi4x542/pghwcemvsrvcvpfflrmbwcyqrp+xvzni80kooeeohmamp71b8kway0+bwkhbqsz89luz2ef4zucjvwy5yzpuulum4ucs6jjrhjqmr5kc5geqjkcn/vt9zu9cjgczo0nl/tsrv/n8ew5t1j5ucqgn26ta4l/4yyvzr9mvdblhad5q6f5jska2qycfsicr7kkgherqq+u3zdloiafxwtlhcimg2btlg6aonnwy40kisjnr7xpeh4ioj+qm5p6qc2tbiuuk8pih7wns/htithyudb6deiqmvokhb8lnbjf3zwr3tzou3d1czgmw/ti0+d4pdvcftknh8ghsclncky+knmyipysyc/ym9xhh9fznirgd9ko1+xsktwlvv8fcvdvwq==</latexit> <latexit sha1_base64="0aiwyvh9cufn0xw1xe83llvz+uq=">aaacpxicbvfnb9naen24lrrtafqoxfanejwig1uqt1blug5irwrssneurdetdjx9shbhtnhiv8iv/hl/hrvrqsrlpjxezhuz85wxujhmkj+9agt759nz3rfxy71xr/f7b4djzyrlycsnnpymzw6k0dbcgrjusgtm5rku8+xnhr/+dtyjo69wvcjusyuwc8ezhtcsf5h90ugzcc45owjjzfqdzji0rp+ctamd0tnl7kdns8lwsofglplzkzqpceqzrcel1hfwosgzx7iftalutigb+rb5mr4lkylojq0vtnjg/83wtdm3unlqkoa3bpnrgv/jjhxop0290gwfopldoxklkrrabiiwwgjhuqqacstcr5tfmss4hn3fa2uckkadyg2uboa403dhjqqkwmentc8q7hhrn9zntb3u5k63fdevydop2sbz+oncgpkoal06dnxmkcxc/wicekudh3olm8d5csyfh2kytl8dd87ou8ptkrfkihwgktkhz+scxjir4ese/cs/yo/offq1uorgd9ko1+w8iwswzf4cco3vhq==</latexit> <latexit sha1_base64="0aiwyvh9cufn0xw1xe83llvz+uq=">aaacpxicbvfnb9naen24lrrtafqoxfanejwig1uqt1blug5irwrssneurdetdjx9shbhtnhiv8iv/hl/hrvrqsrlpjxezhuz85wxujhmkj+9agt759nz3rfxy71xr/f7b4djzyrlycsnnpymzw6k0dbcgrjusgtm5rku8+xnhr/+dtyjo69wvcjusyuwc8ezhtcsf5h90ugzcc45owjjzfqdzji0rp+ctamd0tnl7kdns8lwsofglplzkzqpceqzrcel1hfwosgzx7iftalutigb+rb5mr4lkylojq0vtnjg/83wtdm3unlqkoa3bpnrgv/jjhxop0290gwfopldoxklkrrabiiwwgjhuqqacstcr5tfmss4hn3fa2uckkadyg2uboa403dhjqqkwmentc8q7hhrn9zntb3u5k63fdevydop2sbz+oncgpkoal06dnxmkcxc/wicekudh3olm8d5csyfh2kytl8dd87ou8ptkrfkihwgktkhz+scxjir4ese/cs/yo/offq1uorgd9ko1+w8iwswzf4cco3vhq==</latexit> <latexit sha1_base64="0aiwyvh9cufn0xw1xe83llvz+uq=">aaacpxicbvfnb9naen24lrrtafqoxfanejwig1uqt1blug5irwrssneurdetdjx9shbhtnhiv8iv/hl/hrvrqsrlpjxezhuz85wxujhmkj+9agt759nz3rfxy71xr/f7b4djzyrlycsnnpymzw6k0dbcgrjusgtm5rku8+xnhr/+dtyjo69wvcjusyuwc8ezhtcsf5h90ugzcc45owjjzfqdzji0rp+ctamd0tnl7kdns8lwsofglplzkzqpceqzrcel1hfwosgzx7iftalutigb+rb5mr4lkylojq0vtnjg/83wtdm3unlqkoa3bpnrgv/jjhxop0290gwfopldoxklkrrabiiwwgjhuqqacstcr5tfmss4hn3fa2uckkadyg2uboa403dhjqqkwmentc8q7hhrn9zntb3u5k63fdevydop2sbz+oncgpkoal06dnxmkcxc/wicekudh3olm8d5csyfh2kytl8dd87ou8ptkrfkihwgktkhz+scxjir4ese/cs/yo/offq1uorgd9ko1+w8iwswzf4cco3vhq==</latexit> <latexit sha1_base64="0aiwyvh9cufn0xw1xe83llvz+uq=">aaacpxicbvfnb9naen24lrrtafqoxfanejwig1uqt1blug5irwrssneurdetdjx9shbhtnhiv8iv/hl/hrvrqsrlpjxezhuz85wxujhmkj+9agt759nz3rfxy71xr/f7b4djzyrlycsnnpymzw6k0dbcgrjusgtm5rku8+xnhr/+dtyjo69wvcjusyuwc8ezhtcsf5h90ugzcc45owjjzfqdzji0rp+ctamd0tnl7kdns8lwsofglplzkzqpceqzrcel1hfwosgzx7iftalutigb+rb5mr4lkylojq0vtnjg/83wtdm3unlqkoa3bpnrgv/jjhxop0290gwfopldoxklkrrabiiwwgjhuqqacstcr5tfmss4hn3fa2uckkadyg2uboa403dhjqqkwmentc8q7hhrn9zntb3u5k63fdevydop2sbz+oncgpkoal06dnxmkcxc/wicekudh3olm8d5csyfh2kytl8dd87ou8ptkrfkihwgktkhz+scxjir4ese/cs/yo/offq1uorgd9ko1+w8iwswzf4cco3vhq==</latexit> <latexit sha1_base64="ham9yjtkbpcnmr9gfmktov/7fru=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3833jerwvkh6z7hkq3ll77/6dnyfpo8dpnu4o956defs7arnhlxvnbfegpiejslrwvjngulbwwqw+tvzpd3bewvmn1xxmnf8auzccywznhy8y2ooyy5ep8n5ltdlng+l8omrgwwf0nsh7mck9hc/3bogvvtqadarfvz/mwywzwb1koabjwe2h4mlflzcn0hanfha6crr6okzkuraupoo0i/6bebj2fq2lqnqcz/021wb/x01rxhyybwmqgsgi60klwlg0tf0hlaudgwodardoxl6pooeoc4xlszfkendcrmhgkp0aktnwiayoijkwgyywhj+iga6atqzzgxthuoqbyrjqg23rbp10zk26exree7tq51rygx5ftsuyac+vbx/nnjh5n86zcf7l/ejwqd/cdnljxpe3jcf75jb8isdkqgrpyg/yh/xn3izfk+/j9fqadpqc52tdkvikbnpxlg==</latexit> <latexit sha1_base64="ham9yjtkbpcnmr9gfmktov/7fru=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3833jerwvkh6z7hkq3ll77/6dnyfpo8dpnu4o956defs7arnhlxvnbfegpiejslrwvjngulbwwqw+tvzpd3bewvmn1xxmnf8auzccywznhy8y2ooyy5ep8n5ltdlng+l8omrgwwf0nsh7mck9hc/3bogvvtqadarfvz/mwywzwb1koabjwe2h4mlflzcn0hanfha6crr6okzkuraupoo0i/6bebj2fq2lqnqcz/021wb/x01rxhyybwmqgsgi60klwlg0tf0hlaudgwodardoxl6pooeoc4xlszfkendcrmhgkp0aktnwiayoijkwgyywhj+iga6atqzzgxthuoqbyrjqg23rbp10zk26exree7tq51rygx5ftsuyac+vbx/nnjh5n86zcf7l/ejwqd/cdnljxpe3jcf75jb8isdkqgrpyg/yh/xn3izfk+/j9fqadpqc52tdkvikbnpxlg==</latexit> <latexit sha1_base64="ham9yjtkbpcnmr9gfmktov/7fru=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3833jerwvkh6z7hkq3ll77/6dnyfpo8dpnu4o956defs7arnhlxvnbfegpiejslrwvjngulbwwqw+tvzpd3bewvmn1xxmnf8auzccywznhy8y2ooyy5ep8n5ltdlng+l8omrgwwf0nsh7mck9hc/3bogvvtqadarfvz/mwywzwb1koabjwe2h4mlflzcn0hanfha6crr6okzkuraupoo0i/6bebj2fq2lqnqcz/021wb/x01rxhyybwmqgsgi60klwlg0tf0hlaudgwodardoxl6pooeoc4xlszfkendcrmhgkp0aktnwiayoijkwgyywhj+iga6atqzzgxthuoqbyrjqg23rbp10zk26exree7tq51rygx5ftsuyac+vbx/nnjh5n86zcf7l/ejwqd/cdnljxpe3jcf75jb8isdkqgrpyg/yh/xn3izfk+/j9fqadpqc52tdkvikbnpxlg==</latexit> <latexit sha1_base64="ham9yjtkbpcnmr9gfmktov/7fru=">aaacqnicbvflbxmxehawv1ketehagytfhmqbrbsiqdxalqvccijturxfxu8ktelhyp6lrgz/dvf4qf039w5xkkkzydi3833jerwvkh6z7hkq3ll77/6dnyfpo8dpnu4o956defs7arnhlxvnbfegpiejslrwvjngulbwwqw+tvzpd3bewvmn1xxmnf8auzccywznhy8y2ooyy5ep8n5ltdlng+l8omrgwwf0nsh7mck9hc/3bogvvtqadarfvz/mwywzwb1koabjwe2h4mlflzcn0hanfha6crr6okzkuraupoo0i/6bebj2fq2lqnqcz/021wb/x01rxhyybwmqgsgi60klwlg0tf0hlaudgwodardoxl6pooeoc4xlszfkendcrmhgkp0aktnwiayoijkwgyywhj+iga6atqzzgxthuoqbyrjqg23rbp10zk26exree7tq51rygx5ftsuyac+vbx/nnjh5n86zcf7l/ejwqd/cdnljxpe3jcf75jb8isdkqgrpyg/yh/xn3izfk+/j9fqadpqc52tdkvikbnpxlg==</latexit> <latexit sha1_base64="dedvzfqzznzehl+so8ujgscjox8=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9myzhkcc0lr7erjpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbuertpg/83wtdm3uxlqkoaxbpdrgv/jphuups680gwfoplnouulkrraliiwwgjhuqmacstcr5rfmss4hnxfw2uckkadyguuboa407dmrgvf4bnx7toek0t047qpqvfarhvbcvszvn2rbzydn46mkbec1qtdv82cuiz9z8apudtnudld49wfz+9gatjkv7wfhh51h9snl8kr8pak5am5jj/ikzkqttbkmvwiv6m30efoazs5kua9lucf2blo+19vhnsz</latexit> <latexit sha1_base64="dedvzfqzznzehl+so8ujgscjox8=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9myzhkcc0lr7erjpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbuertpg/83wtdm3uxlqkoaxbpdrgv/jphuups680gwfoplnouulkrraliiwwgjhuqmacstcr5rfmss4hnxfw2uckkadyguuboa407dmrgvf4bnx7toek0t047qpqvfarhvbcvszvn2rbzydn46mkbec1qtdv82cuiz9z8apudtnudld49wfz+9gatjkv7wfhh51h9snl8kr8pak5am5jj/ikzkqttbkmvwiv6m30efoazs5kua9lucf2blo+19vhnsz</latexit> <latexit sha1_base64="dedvzfqzznzehl+so8ujgscjox8=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9myzhkcc0lr7erjpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbuertpg/83wtdm3uxlqkoaxbpdrgv/jphuups680gwfoplnouulkrraliiwwgjhuqmacstcr5rfmss4hnxfw2uckkadyguuboa407dmrgvf4bnx7toek0t047qpqvfarhvbcvszvn2rbzydn46mkbec1qtdv82cuiz9z8apudtnudld49wfz+9gatjkv7wfhh51h9snl8kr8pak5am5jj/ikzkqttbkmvwiv6m30efoazs5kua9lucf2blo+19vhnsz</latexit> <latexit sha1_base64="dedvzfqzznzehl+so8ujgscjox8=">aaacphicbvflb9naen64pip5jexizuue4htzcaluqdolltguqdpkcyjw60m6yj6s3tfptpin9aq/ix/d2rvukjlsst/m983oky+lcjgkf3rr3r37dx7up4ofp3n67hl/chdmtgu5tlirxl7kzieugiyoumjfaygpxmj5vjpu+pmfyj0w+htuspgpttriitjdejr3b9myzhkcc0lr7erjpo8pk1hsgr0l0g4mswen80hpz4xhlqknxdlnpmls4swzi4jlqoosclayvmjlmaaomqi3823vnx0digvdgbuertpg/83wtdm3uxlqkoaxbpdrgv/jphuups680gwfoplnouulkrraliiwwgjhuqmacstcr5rfmss4hnxfw2uckkadyguuboa407dmrgvf4bnx7toek0t047qpqvfarhvbcvszvn2rbzydn46mkbec1qtdv82cuiz9z8apudtnudld49wfz+9gatjkv7wfhh51h9snl8kr8pak5am5jj/ikzkqttbkmvwiv6m30efoazs5kua9lucf2blo+19vhnsz</latexit> Consistent Lifting Int. Int Int 6. Bool Int. > unknown is not the top type >6. Int Int.??. Int 100

147 <latexit sha1_base64="zxcoe37s/9r3lmm4zyqua5p2vgy=">aaadcnicbzhnbhmxeme9wz7k0tiujlwsihasitqnkebiqfu5alcinw2loiq8xm9qxr+r9swhcvcnebpuicsvwyf3wbtzqsrhjft/z/zs8cykhrqw4vh3eo7cun3n7u696p7e/ood3uhdc2uqkverm9kulym1xarnryba8sui5fslkl+k8/dn/oill60w+gywbz8ootmif4ycd017cyj0zkuugxcrxuqdvyri65cypgl+i8/8/qzd32hysqmmzimattswpyydfdxbb73o2fu8mvb68sbudw+lpbn91nnp9dbwjdosulwdk9tacrixmhg0bmekrynswv5qnqczpvzsu8xtxludqvft78lwbkq/fbwt998bjiprlyr1pkjwztdjjfn/sxef+zuje7qowpdwlsivjaadm3bjtjscgvx6qvkp/f8xu6ilzecheq2lsvxr7yg1urociql5ghnft505clq7avwralijusmp59osdjtxnftnvmgbw8zlj8big6a91f5xtz1szny1jymrtenknoezlc6hgyqejj9f9y9pushtosfocxqoevqahaop6bsneen/gp1gl9gpv4xfwx/hzxuabt2dr2jnwl9/awl/8o8=</latexit> <latexit sha1_base64="zxcoe37s/9r3lmm4zyqua5p2vgy=">aaadcnicbzhnbhmxeme9wz7k0tiujlwsihasitqnkebiqfu5alcinw2loiq8xm9qxr+r9swhcvcnebpuicsvwyf3wbtzqsrhjft/z/zs8cykhrqw4vh3eo7cun3n7u696p7e/ood3uhdc2uqkverm9kulym1xarnryba8sui5fslkl+k8/dn/oill60w+gywbz8ootmif4ycd017cyj0zkuugxcrxuqdvyri65cypgl+i8/8/qzd32hysqmmzimattswpyydfdxbb73o2fu8mvb68sbudw+lpbn91nnp9dbwjdosulwdk9tacrixmhg0bmekrynswv5qnqczpvzsu8xtxludqvft78lwbkq/fbwt998bjiprlyr1pkjwztdjjfn/sxef+zuje7qowpdwlsivjaadm3bjtjscgvx6qvkp/f8xu6ilzecheq2lsvxr7yg1urociql5ghnft505clq7avwralijusmp59osdjtxnftnvmgbw8zlj8big6a91f5xtz1szny1jymrtenknoezlc6hgyqejj9f9y9pushtosfocxqoevqahaop6bsneen/gp1gl9gpv4xfwx/hzxuabt2dr2jnwl9/awl/8o8=</latexit> <latexit sha1_base64="zxcoe37s/9r3lmm4zyqua5p2vgy=">aaadcnicbzhnbhmxeme9wz7k0tiujlwsihasitqnkebiqfu5alcinw2loiq8xm9qxr+r9swhcvcnebpuicsvwyf3wbtzqsrhjft/z/zs8cykhrqw4vh3eo7cun3n7u696p7e/ood3uhdc2uqkverm9kulym1xarnryba8sui5fslkl+k8/dn/oill60w+gywbz8ootmif4ycd017cyj0zkuugxcrxuqdvyri65cypgl+i8/8/qzd32hysqmmzimattswpyydfdxbb73o2fu8mvb68sbudw+lpbn91nnp9dbwjdosulwdk9tacrixmhg0bmekrynswv5qnqczpvzsu8xtxludqvft78lwbkq/fbwt998bjiprlyr1pkjwztdjjfn/sxef+zuje7qowpdwlsivjaadm3bjtjscgvx6qvkp/f8xu6ilzecheq2lsvxr7yg1urociql5ghnft505clq7avwralijusmp59osdjtxnftnvmgbw8zlj8big6a91f5xtz1szny1jymrtenknoezlc6hgyqejj9f9y9pushtosfocxqoevqahaop6bsneen/gp1gl9gpv4xfwx/hzxuabt2dr2jnwl9/awl/8o8=</latexit> <latexit sha1_base64="zxcoe37s/9r3lmm4zyqua5p2vgy=">aaadcnicbzhnbhmxeme9wz7k0tiujlwsihasitqnkebiqfu5alcinw2loiq8xm9qxr+r9swhcvcnebpuicsvwyf3wbtzqsrhjft/z/zs8cykhrqw4vh3eo7cun3n7u696p7e/ood3uhdc2uqkverm9kulym1xarnryba8sui5fslkl+k8/dn/oill60w+gywbz8ootmif4ycd017cyj0zkuugxcrxuqdvyri65cypgl+i8/8/qzd32hysqmmzimattswpyydfdxbb73o2fu8mvb68sbudw+lpbn91nnp9dbwjdosulwdk9tacrixmhg0bmekrynswv5qnqczpvzsu8xtxludqvft78lwbkq/fbwt998bjiprlyr1pkjwztdjjfn/sxef+zuje7qowpdwlsivjaadm3bjtjscgvx6qvkp/f8xu6ilzecheq2lsvxr7yg1urociql5ghnft505clq7avwralijusmp59osdjtxnftnvmgbw8zlj8big6a91f5xtz1szny1jymrtenknoezlc6hgyqejj9f9y9pushtosfocxqoevqahaop6bsneen/gp1gl9gpv4xfwx/hzxuabt2dr2jnwl9/awl/8o8=</latexit> <latexit sha1_base64="m0+btmm45d6j6r4fyyy1wd/jig0=">aaadehicbzhnbhmxeme9y1e7fdrtj1wsihasitqnkec9tcoh4fyk0lako8jrnu2t+gnle1ui7b4et8mnceunopmiedcrhssmzovvmz89npm0eny6op4dhhfu3rv/ygc3evjo8zo93v7budwlytbiwmhzmvilgisyoe4exbygqewfxktz90384hqm5vp9cyscjplofm85o867pr2acjwdacwgijamh6iufn++xm6a4cm88vuldiews0w+kycj2qchlthsweekjortf191+dietxv9ebc3hrdf0ok+6uxsuh9ujnoslkace9tacrixbljr4zgtueektfbqnqczghupqaq7qdo+1fi592q418yvx0jr/fdgraw1c5l6ulj3ztdjjfn/sxhp8netiquidl6ty0r5kbdtugk6zrgb5stcc8om93/f7ioaypwftbswxokkygnrpxqfretbddo+nyqryhfdeqdfnxpvcd3kvholb1sbcz30zv6xzwhjpvotxqpot7x/vvon4lpq1sckz9pxjzvd2rbnw0esd5lpb/onp93gdtbt9ay9ral6i07qr3sgroihp8fucbacht/c7+gp8ocsdypuzifas/dxx4na8/8=</latexit> <latexit sha1_base64="m0+btmm45d6j6r4fyyy1wd/jig0=">aaadehicbzhnbhmxeme9y1e7fdrtj1wsihasitqnkec9tcoh4fyk0lako8jrnu2t+gnle1ui7b4et8mnceunopmiedcrhssmzovvmz89npm0eny6op4dhhfu3rv/ygc3evjo8zo93v7budwlytbiwmhzmvilgisyoe4exbygqewfxktz90384hqm5vp9cyscjplofm85o867pr2acjwdacwgijamh6iufn++xm6a4cm88vuldiews0w+kycj2qchlthsweekjortf191+dietxv9ebc3hrdf0ok+6uxsuh9ujnoslkace9tacrixbljr4zgtueektfbqnqczghupqaq7qdo+1fi592q418yvx0jr/fdgraw1c5l6ulj3ztdjjfn/sxhp8netiquidl6ty0r5kbdtugk6zrgb5stcc8om93/f7ioaypwftbswxokkygnrpxqfretbddo+nyqryhfdeqdfnxpvcd3kvholb1sbcz30zv6xzwhjpvotxqpot7x/vvon4lpq1sckz9pxjzvd2rbnw0esd5lpb/onp93gdtbt9ay9ral6i07qr3sgroihp8fucbacht/c7+gp8ocsdypuzifas/dxx4na8/8=</latexit> <latexit sha1_base64="m0+btmm45d6j6r4fyyy1wd/jig0=">aaadehicbzhnbhmxeme9y1e7fdrtj1wsihasitqnkec9tcoh4fyk0lako8jrnu2t+gnle1ui7b4et8mnceunopmiedcrhssmzovvmz89npm0eny6op4dhhfu3rv/ygc3evjo8zo93v7budwlytbiwmhzmvilgisyoe4exbygqewfxktz90384hqm5vp9cyscjplofm85o867pr2acjwdacwgijamh6iufn++xm6a4cm88vuldiews0w+kycj2qchlthsweekjortf191+dietxv9ebc3hrdf0ok+6uxsuh9ujnoslkace9tacrixbljr4zgtueektfbqnqczghupqaq7qdo+1fi592q418yvx0jr/fdgraw1c5l6ulj3ztdjjfn/sxhp8netiquidl6ty0r5kbdtugk6zrgb5stcc8om93/f7ioaypwftbswxokkygnrpxqfretbddo+nyqryhfdeqdfnxpvcd3kvholb1sbcz30zv6xzwhjpvotxqpot7x/vvon4lpq1sckz9pxjzvd2rbnw0esd5lpb/onp93gdtbt9ay9ral6i07qr3sgroihp8fucbacht/c7+gp8ocsdypuzifas/dxx4na8/8=</latexit> <latexit sha1_base64="m0+btmm45d6j6r4fyyy1wd/jig0=">aaadehicbzhnbhmxeme9y1e7fdrtj1wsihasitqnkec9tcoh4fyk0lako8jrnu2t+gnle1ui7b4et8mnceunopmiedcrhssmzovvmz89npm0eny6op4dhhfu3rv/ygc3evjo8zo93v7budwlytbiwmhzmvilgisyoe4exbygqewfxktz90384hqm5vp9cyscjplofm85o867pr2acjwdacwgijamh6iufn++xm6a4cm88vuldiews0w+kycj2qchlthsweekjortf191+dietxv9ebc3hrdf0ok+6uxsuh9ujnoslkace9tacrixbljr4zgtueektfbqnqczghupqaq7qdo+1fi592q418yvx0jr/fdgraw1c5l6ulj3ztdjjfn/sxhp8netiquidl6ty0r5kbdtugk6zrgb5stcc8om93/f7ioaypwftbswxokkygnrpxqfretbddo+nyqryhfdeqdfnxpvcd3kvholb1sbcz30zv6xzwhjpvotxqpot7x/vvon4lpq1sckz9pxjzvd2rbnw0esd5lpb/onp93gdtbt9ay9ral6i07qr3sgroihp8fucbacht/c7+gp8ocsdypuzifas/dxx4na8/8=</latexit> Lift Typing RuLes Static Type System Gradual Type System ` t 1 : T 1 ` t 2 : T 2 T 1 = Int T 2 = Int ` t 1 : U 1 ` t 2 : U 2 U 1 Int U 2 Int ` t 1 + t 2 : Int ` t 1 + t 2 : Int 101

148 Dynamic Semantics Static Checking Gradual Language Type-Directed Translation Runtime Checking Instrumentation Language Cast Calculus 102

149 Common Language Runtime Gradual 103

150 Common Language Runtime Gradual Static Types (Type) Gradual Types (GType) T ::= B T! T U ::=? B U! U 103

151 Also Works as a Surface Language! Gradual Static Types (Type) Gradual Types (GType) T ::= B T! T U ::=? B U! U 103

152 Also Works as a Surface Language! Gradual Static Types (Type) T ::= B T! T Gradual Types (GType) U ::=? B U! U Much of the Literature is Written This Way 103

153 Refined Criteria for Gradual Typing ú Jeremy G. Siek 1, Michael M. Vitousek 2, Matteo Cimini 3, and John Tang Boyland Indiana University Bloomington, School of Informatics and Computing Gradual 104

154 Refined Criteria for Gradual Typing ú Jeremy G. Siek 1, Michael M. Vitousek 2, Matteo Cimini 3, and John Tang Boyland Indiana University Bloomington, School of Informatics and Computing Static and Dynamic Gradual Guarantee! Gradual 104

155 Refined Criteria for Gradual Typing ú Jeremy G. Siek 1, Michael M. Vitousek 2, Matteo Cimini 3, and John Tang Boyland Indiana University Bloomington, School of Informatics and Computing Static and Dynamic Gradual Guarantee! Gradual 104

156 Refined Criteria for Gradual Typing ú Jeremy G. Siek 1, Michael M. Vitousek 2, Matteo Cimini 3, and John Tang Boyland Indiana University Bloomington, School of Informatics and Computing Static and Dynamic Gradual Guarantee! Gradual Varying The Type Precision of a Program Monotonically Changes only static and dynamic type errors 104

157 Robust Theoretical Framework Dynamic Gradual Static 105

158 Robust Theoretical Framework Dynamic Gradual Static Unityped [Siek and Taha 06] Simple 105

159 Robust Theoretical Framework Dynamic Gradual Static Unityped Unityped [Siek and Taha 06] [Siek and Taha 08] Simple Subtyping 105

160 Robust Theoretical Framework Dynamic Gradual Static Unityped Unityped [Siek and Taha 06] [Siek and Taha 08] Simple Subtyping Unityped [Siek and Vachharajani 08] Hindley/Milner 105

161 Robust Theoretical Framework Dynamic Gradual Static Unityped Unityped [Siek and Taha 06] [Siek and Taha 08] Simple Subtyping Unityped Simple [Siek and Vachharajani 08] [Lehmann and Tanter 17] Hindley/Milner Refinement 105

162 Robust Theoretical Framework Dynamic Gradual Static Unityped Unityped [Siek and Taha 06] [Siek and Taha 08] Simple Subtyping Unityped Simple Simple [Siek and Vachharajani 08] [Lehmann and Tanter 17] [Bañados et al. 14] Hindley/Milner Refinement Type&Effect 105

163 Robust Theoretical Framework Dynamic Gradual Static Unityped Unityped [Siek and Taha 06] [Siek and Taha 08] Simple Subtyping Unityped Simple Simple [Siek and Vachharajani 08] [Lehmann and Tanter 17] [Bañados et al. 14] Hindley/Milner Refinement Type&Effect Simple [Toro et al. to appear] 105 Security

164 Robust Theoretical Framework Dynamic Gradual Static Unityped [Siek and Taha 06] Simple Unityped Unityped Simple Simple Simple [Siek and Taha 08] [Siek and Vachharajani 08] [Lehmann and Tanter 17] [Bañados et al. 14] [Toro et al. to appear] And More! 105 Subtyping Hindley/Milner Refinement Type&Effect Security

165 Challenge: Dynamics Static Checking Gradual Language Type-Directed Translation Runtime Checking Instrumentation Language Cast Calculus 106

166 Challenge: Dynamics Static Checking Gradual Language Given the name gradual typing, one might think that the most interesting aspect is the type system. It turns out that the dynamic semantics of gradually-typed languages is more complex than the static semantics, with many points in the Type-Directed design space [Wadler and Findler 2009; Siek et al. 2009] and many challenges concerning Translation [Siek and Garcia 2012] Runtime Checking Instrumentation Language Cast Calculus 106

167 Challenge: Dynamics Static Checking Gradual Language Type-Directed Translation Runtime Checking Instrumentation Language Cast Calculus 106

168 static type system & type safety proof interpretation of gradual types Abstracting Gradual Typing Ronald Garcia Alison M. Clark Software Practices Lab Department of Computer Science University of British Columbia, Canada Éric Tanter PLEIAD Laboratory Computer Science Department (DCC) University of Chile, Chile POPL 2016 gradual language TYPE SYSTEM DYNAMIC SEMANTICS 107

169 Breadth of AGT Applications of AGT so far records with subtyping gradual rows (à la row polymorphism) security typing effect typing refinement types set-theoretic types parametric polymorphism POPL 16 TOPLAS 18 ICFP 14 (statics) POPL 17 ICFP 17 (statics) ongoing work

170 Outline Motivating Example (In Two Acts) Gradual Typing For All! Typing in Small Pieces Meat Strands and Related Works 109

171 Gradual Typing for Functional Languages Jeremy G. Siek University of Colorado Walid Taha Rice University Scheme

172 Interlanguage Migration: From Scripts to Programs Sam Tobin-Hochstadt Northeastern University Boston, MA Matthias Felleisen Northeastern University Boston, MA DLS

173 Interlanguage Migration: From Scripts to Programs Sam Tobin-Hochstadt Northeastern University Boston, MA Matthias Felleisen Northeastern University Boston, MA DLS 2006 Dynamic 111

174 Interlanguage Migration: From Scripts to Programs Sam Tobin-Hochstadt Northeastern University Boston, MA Matthias Felleisen Northeastern University Boston, MA DLS 2006 Dynamic 111

175 Interlanguage Migration: From Scripts to Programs Sam Tobin-Hochstadt Northeastern University Boston, MA Matthias Felleisen Northeastern University Boston, MA DLS 2006 Dynamic Mixed 111

176 Interlanguage Migration: From Scripts to Programs Sam Tobin-Hochstadt Northeastern University Boston, MA Matthias Felleisen Northeastern University Boston, MA DLS 2006 Dynamic Mixed 111

177 Retrospective Migratory Typing: Ten Years Later Sam Tobin-Hochstadt, Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Ben Greenman, Andrew M. Kent, Vincent St-Amour, T. Stephen Strickland, Asumu Takikawa 1 1 PLT *@racket-lang.org Abstract In this day and age, many developers work on large, untyped code repositories. Even if they are the creators of the code, they notice that they have to figure out the equivalent of method signatures every time they work on old code. This step is time consuming and error prone. Ten years ago, the two lead authors outlined a linguistic solution to this problem. Specifically they proposed the creation of typed twins for untyped programming languages so that developers could migrate scripts from the untyped world to a typed one in an incremental manner. Their programmatic paper also spelled out three guiding design principles concerning the acceptance of grown idioms, the soundness of mixed-typed programs, and the units of migration. This paper revisits this idea of a migratory type system as implemented for Racket. It explains how the design principles have been used to produce the Typed Racket twin and presents an assessment of the project s status, highlighting successes and failures ACM Subject Classification D.3 Language Design, F.3.3 Type Structure 112

178 Ben Greenman Matthias Felleisen 113

179 Soft Typing PLDI 1991 A Practical Soft Type System for Scheme ANDREW K. WRIGHT NEC Research Institute and ROBERT CARTWRIGHT Rice University TOPLAS

180 Soft Typing PLDI 1991 A Practical Soft Type System for Scheme ANDREW K. WRIGHT NEC Research Institute and ROBERT CARTWRIGHT Rice University TOPLAS 1997 Idea: Use H/M Type Inference to Migrate Dynamic Programs 114

181 Set-Based Analysis PLDI96 TOPLAS99 Not Types! 115

182 Set-Based Analysis PLDI96 TOPLAS99 Not Types! 116

183 Set-Based Analysis William Bowman PLDI96 TOPLAS99 Not Types! 116

184 Migration By Inference The Ins and Outs of Gradual Type Inference Aseem Rastogi Stony Brook University Avik Chaudhuri Basil Hosmer Advanced Technology Labs, Adobe Systems POPL

185 Migration By Inference The Ins and Outs of Gradual Type Inference Aseem Rastogi Stony Brook University Avik Chaudhuri Basil Hosmer Advanced Technology Labs, Adobe Systems POPL 2012 Migrating Gradual Types JOHN PETER CAMPORA III, SHENG CHEN, MARTIN ERWIG, ERIC WALKINGSHAW, 117 University of Louisiana at Lafayette University of Louisiana at Lafayette Oregon State University Oregon State University

186 John Campora Sheng Chen Eric Walkingshaw 118

187 Dynamic Typing Dynamic typing: syntax and proof theory* Fritz Henglein** University of Copenhagen, Universitetsparken 1, 2100 Copenhagen 0, Denmark Received July 1992; revised March

188 Dynamic Typing Dynamic typing: syntax and proof theory* Fritz Henglein** University of Copenhagen, Universitetsparken 1, 2100 Copenhagen 0, Denmark Received July 1992; revised March

189 Influence Herman, et al. [TFP 2007] Siek, Garcia, Taha [ESOP 2008] Siek and Wadler [POPL 2010] Garcia [ICFP 2013] Siek et al. [PLDI 2015] 120

190 Fresh Influence Max New Amal Ahmed 121

191 Outline Motivating Example (In Two Acts) Gradual Typing For All! Typing in Small Pieces Meat Strands and Related Works 122

192 123

193 Gratitude 124

194 125

195 It Takes a Village Andy Lumsdaine Dan Friedman Frank Pfenning Amr Sabry 126

196 It Takes a Village Andy Lumsdaine Dan Friedman Frank Pfenning Amr Sabry 126

197 It Takes a Village Andy Lumsdaine Dan Friedman Frank Pfenning Amr Sabry 126

198 It Takes a Village Andy Lumsdaine Dan Friedman Frank Pfenning Amr Sabry 126

199 It Takes a Village Andy Lumsdaine Dan Friedman Frank Pfenning Amr Sabry 126

200 It Takes a Village Me Andy Lumsdaine Dan Friedman Frank Pfenning Amr Sabry 126

201 127

202 127

203 127

204 127

205 Students 128

206 Students 128

207 Common Language Runtime Gradual Type Structure Determines Appropriate Linking Gradual `G e : e T Dynamic Static ` e X ` e : T Mixed 129

208 Dear Today Ron, You went one slide too far. Go back one slide. Yesterday Ron 130

209 Bonus Tracks 131

210 Common Language Runtime Gradual `G e : e T 132

211 Common Language Runtime Gradual `G e : e T Injection Static ` e : T 132

212 Common Language Runtime Gradual Compositional Translation `G e : e T Injection ` e X Dynamic Static ` e : T 132

213 Common Language Runtime Gradual Type Structure Determines Appropriate Linking Gradual Compositional Translation `G e : e T Injection ` e X Dynamic Static ` e : T Mixed 132

214 Refined Criteria for Gradual Typing ú Jeremy G. Siek 1, Michael M. Vitousek 2, Matteo Cimini 3, and John Tang Boyland Indiana University Bloomington, School of Informatics and Computing Static and Dynamic Gradual Guarantee! Gradual Varying The Type Precision of a Program Monotonically Changes only static and dynamic type errors 133

215 Blame 134

216 Theorems about Blame Tobin-Hochstadt and Felleisen 2006 Wadler and Findler 2008 Dimoulas et al. Dimoulas Takikawa 135

217 Racket Contract Blame point-in?: contract violation expected: real? given: #f in: the 2nd argument of (-> pict? real? real? boolean?) contract from: point-in-module blaming: top-level (assuming the contract is correct) Robby Findler 172 Findler 136

218 Wherein Shriram Unwittingly Writes My Blame Schpiel For Me 137

219 138

220 139

221 140

222 Racket Contract Blame point-in?: contract violation expected: real? given: #f in: the 2nd argument of (-> pict? real? real? boolean?) contract from: point-in-module blaming: top-level (assuming the contract is correct) Robby Findler 172 Findler 141

Consistent Subtyping for All

Consistent Subtyping for All Consistent Subtyping for All Ningning Xie Xuan Bi Bruno C. d. S. Oliveira 11 May, 2018 The University of Hong Kong 1 Background There has been ongoing debate about which language paradigm, static typing

More information

A Practical Optional Type System for Clojure. Ambrose Bonnaire-Sergeant

A Practical Optional Type System for Clojure. Ambrose Bonnaire-Sergeant A Practical Optional Type System for Clojure Ambrose Bonnaire-Sergeant Statically typed vs. Dynamically typed Traditional distinction Dynamically typed Statically typed eg. Java, C, Haskell eg. Javascript,

More information

COS 320. Compiling Techniques

COS 320. Compiling Techniques Topic 5: Types COS 320 Compiling Techniques Princeton University Spring 2016 Lennart Beringer 1 Types: potential benefits (I) 2 For programmers: help to eliminate common programming mistakes, particularly

More information

Type assignment for intersections and unions in call-by-value languages

Type assignment for intersections and unions in call-by-value languages Type assignment for intersections and unions in call-by-value languages Joshua Dunfield and Frank Pfenning Triple Project Carnegie Mellon University 8 April 2003 FOSSACS 03, Warsaw, Poland Type assignment

More information

Type Systems Winter Semester 2006

Type Systems Winter Semester 2006 Type Systems Winter Semester 2006 Week 9 December 13 December 13, 2006 - version 1.0 Plan PREVIOUSLY: unit, sequencing, let, pairs, sums TODAY: 1. recursion 2. state 3.??? NEXT: exceptions? NEXT: polymorphic

More information

Programming Languages

Programming Languages CSE 230: Winter 2008 Principles of Programming Languages Ocaml/HW #3 Q-A Session Push deadline = Mar 10 Session Mon 3pm? Lecture 15: Type Systems Ranjit Jhala UC San Diego Why Typed Languages? Development

More information

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Statically vs. Dynamically typed languages

More information

At build time, not application time. Types serve as statically checkable invariants.

At build time, not application time. Types serve as statically checkable invariants. Static Typing Thus far we have only considered statically typed languages. CMPSCI 630: Programming Languages Static and Dynamic Typing Spring 2008 (with thanks to Robert Harper) Type system is based on

More information

Chapter 13: Reference. Why reference Typing Evaluation Store Typings Safety Notes

Chapter 13: Reference. Why reference Typing Evaluation Store Typings Safety Notes Chapter 13: Reference Why reference Typing Evaluation Store Typings Safety Notes References Computational Effects Also known as side effects. A function or expression is said to have a side effect if,

More information

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors

More information

A formal derivation of an executable Krivine machine

A formal derivation of an executable Krivine machine A formal derivation of an executable Krivine machine Wouter Swierstra Universiteit Utrecht IFIP WG 2.1 Meeting 68; Rome, Italy 1 β reduction (λx. t0) t1 t0 {t1/x} 2 Motivation Implementing β-reduction

More information

Costly software bugs that could have been averted with type checking

Costly software bugs that could have been averted with type checking Type Checking Class Notes from Lectures 6 and 7 Lahav Yeffet and Ori Folger The material in these lectures is based on the textbook Types and Programming Languages by Benjamin Pierce. Here is a list of

More information

Subtyping. Lecture 13 CS 565 3/27/06

Subtyping. Lecture 13 CS 565 3/27/06 Subtyping Lecture 13 CS 565 3/27/06 Polymorphism Different varieties of polymorphism: Parametric (ML) type variables are abstract, and used to encode the fact that the same term can be used in many different

More information

Mutable References. Chapter 1

Mutable References. Chapter 1 Chapter 1 Mutable References In the (typed or untyped) λ-calculus, or in pure functional languages, a variable is immutable in that once bound to a value as the result of a substitution, its contents never

More information

Functional Programming

Functional Programming The Meta Language (ML) and Functional Programming Daniel S. Fava danielsf@ifi.uio.no Department of informatics University of Oslo, Norway Motivation ML Demo Which programming languages are functional?

More information

Programming Languages Fall 2014

Programming Languages Fall 2014 Programming Languages Fall 2014 Lecture 7: Simple Types and Simply-Typed Lambda Calculus Prof. Liang Huang huang@qc.cs.cuny.edu 1 Types stuck terms? how to fix it? 2 Plan First I For today, we ll go back

More information

CSCI-GA Scripting Languages

CSCI-GA Scripting Languages CSCI-GA.3033.003 Scripting Languages 12/02/2013 OCaml 1 Acknowledgement The material on these slides is based on notes provided by Dexter Kozen. 2 About OCaml A functional programming language All computation

More information

From Math to Machine A formal derivation of an executable Krivine Machine Wouter Swierstra Brouwer Seminar

From Math to Machine A formal derivation of an executable Krivine Machine Wouter Swierstra Brouwer Seminar From Math to Machine A formal derivation of an executable Krivine Machine Wouter Swierstra Brouwer Seminar β reduction (λx. t0) t1 t0 {t1/x} Substitution Realizing β-reduction through substitution is a

More information

The role of semantic analysis in a compiler

The role of semantic analysis in a compiler Semantic Analysis Outline The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors

More information

The design of a programming language for provably correct programs: success and failure

The design of a programming language for provably correct programs: success and failure The design of a programming language for provably correct programs: success and failure Don Sannella Laboratory for Foundations of Computer Science School of Informatics, University of Edinburgh http://homepages.inf.ed.ac.uk/dts

More information

Gradual Typing for Functional Languages. Jeremy Siek and Walid Taha (presented by Lindsey Kuper)

Gradual Typing for Functional Languages. Jeremy Siek and Walid Taha (presented by Lindsey Kuper) Gradual Typing for Functional Languages Jeremy Siek and Walid Taha (presented by Lindsey Kuper) 1 Introduction 2 What we want Static and dynamic typing: both are useful! (If you re here, I assume you agree.)

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Fall 2016 Lecture 7a Andrew Tolmach Portland State University 1994-2016 Values and Types We divide the universe of values according to types A type is a set of values and a

More information

Types. Type checking. Why Do We Need Type Systems? Types and Operations. What is a type? Consensus

Types. Type checking. Why Do We Need Type Systems? Types and Operations. What is a type? Consensus Types Type checking What is a type? The notion varies from language to language Consensus A set of values A set of operations on those values Classes are one instantiation of the modern notion of type

More information

Pierce Ch. 3, 8, 11, 15. Type Systems

Pierce Ch. 3, 8, 11, 15. Type Systems Pierce Ch. 3, 8, 11, 15 Type Systems Goals Define the simple language of expressions A small subset of Lisp, with minor modifications Define the type system of this language Mathematical definition using

More information

CS131 Typed Lambda Calculus Worksheet Due Thursday, April 19th

CS131 Typed Lambda Calculus Worksheet Due Thursday, April 19th CS131 Typed Lambda Calculus Worksheet Due Thursday, April 19th Name: CAS ID (e.g., abc01234@pomona.edu): I encourage you to collaborate. collaborations below. Please record your Each question is worth

More information

Lesson 4 Typed Arithmetic Typed Lambda Calculus

Lesson 4 Typed Arithmetic Typed Lambda Calculus Lesson 4 Typed Arithmetic Typed Lambda 1/28/03 Chapters 8, 9, 10 Outline Types for Arithmetic types the typing relation safety = progress + preservation The simply typed lambda calculus Function types

More information

Type Systems. Today. 1. Organizational Matters. 1. Organizational Matters. Lecture 1 Oct. 20th, 2004 Sebastian Maneth. 1. Organizational Matters

Type Systems. Today. 1. Organizational Matters. 1. Organizational Matters. Lecture 1 Oct. 20th, 2004 Sebastian Maneth. 1. Organizational Matters Today Type Systems 1. Organizational Matters 2. What is this course about? 3. Where do types come from? 4. Def. of the small language Expr. Its syntax and semantics. Lecture 1 Oct. 20th, 2004 Sebastian

More information

Simply-Typed Lambda Calculus

Simply-Typed Lambda Calculus #1 Simply-Typed Lambda Calculus #2 Back to School What is operational semantics? When would you use contextual (small-step) semantics? What is denotational semantics? What is axiomatic semantics? What

More information

Programming Languages Lecture 14: Sum, Product, Recursive Types

Programming Languages Lecture 14: Sum, Product, Recursive Types CSE 230: Winter 200 Principles of Programming Languages Lecture 4: Sum, Product, Recursive Types The end is nigh HW 3 No HW 4 (= Final) Project (Meeting + Talk) Ranjit Jhala UC San Diego Recap Goal: Relate

More information

Lecture 1: Overview

Lecture 1: Overview 15-150 Lecture 1: Overview Lecture by Stefan Muller May 21, 2018 Welcome to 15-150! Today s lecture was an overview that showed the highlights of everything you re learning this semester, which also meant

More information

Type Inference Systems. Type Judgments. Deriving a Type Judgment. Deriving a Judgment. Hypothetical Type Judgments CS412/CS413

Type Inference Systems. Type Judgments. Deriving a Type Judgment. Deriving a Judgment. Hypothetical Type Judgments CS412/CS413 Type Inference Systems CS412/CS413 Introduction to Compilers Tim Teitelbaum Type inference systems define types for all legal programs in a language Type inference systems are to type-checking: As regular

More information

Typing & Static Analysis of Multi-Staged Programs

Typing & Static Analysis of Multi-Staged Programs Typing & Static Analysis of Multi-Staged Programs School of Computer Science & Engineering Seoul National University 6/7/2011 @ Oxford U (co-work with I. Kim, W. Choi, B. Aktemur, C. Calcagno, M. Tatsuda)

More information

Part III. Chapter 15: Subtyping

Part III. Chapter 15: Subtyping Part III Chapter 15: Subtyping Subsumption Subtype relation Properties of subtyping and typing Subtyping and other features Intersection and union types Subtyping Motivation With the usual typing rule

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Winter 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Values and Types We divide the universe of values according to types A type is a set of values and

More information

Meta-programming with Names and Necessity p.1

Meta-programming with Names and Necessity p.1 Meta-programming with Names and Necessity Aleksandar Nanevski Carnegie Mellon University ICFP, Pittsburgh, 05 October 2002 Meta-programming with Names and Necessity p.1 Meta-programming Manipulation of

More information

Lambda Calculus. Type Systems, Lectures 3. Jevgeni Kabanov Tartu,

Lambda Calculus. Type Systems, Lectures 3. Jevgeni Kabanov Tartu, Lambda Calculus Type Systems, Lectures 3 Jevgeni Kabanov Tartu, 13.02.2006 PREVIOUSLY ON TYPE SYSTEMS Arithmetical expressions and Booleans Evaluation semantics Normal forms & Values Getting stuck Safety

More information

CSCI B522 Lecture 11 Naming and Scope 8 Oct, 2009

CSCI B522 Lecture 11 Naming and Scope 8 Oct, 2009 CSCI B522 Lecture 11 Naming and Scope 8 Oct, 2009 Lecture notes for CS 6110 (Spring 09) taught by Andrew Myers at Cornell; edited by Amal Ahmed, Fall 09. 1 Static vs. dynamic scoping The scope of a variable

More information

Part III Chapter 15: Subtyping

Part III Chapter 15: Subtyping Part III Chapter 15: Subtyping Subsumption Subtype relation Properties of subtyping and typing Subtyping and other features Intersection and union types Subtyping Motivation With the usual typing rule

More information

Typed Lambda Calculus. Chapter 9 Benjamin Pierce Types and Programming Languages

Typed Lambda Calculus. Chapter 9 Benjamin Pierce Types and Programming Languages Typed Lambda Calculus Chapter 9 Benjamin Pierce Types and Programming Languages t ::= x x. t t t Call-by-value small step perational Semantics terms variable v ::= values abstraction x. t abstraction values

More information

References. ( pointers )

References. ( pointers ) References ( pointers ) Basic Examples like C pointers r = ref 5!r r := 7 malloc *r *r = 7 (r:=succ(!r);!r) (r:=succ(!r); r:=succ(!r); r:=succ(!r); r:=succ(!r);!r) Basic Examples i.e., r = ref 5!r r :=

More information

Tracing Ambiguity in GADT Type Inference

Tracing Ambiguity in GADT Type Inference Tracing Ambiguity in GADT Type Inference ML Workshop 2012, Copenhagen Jacques Garrigue & Didier Rémy Nagoya University / INRIA Garrigue & Rémy Tracing ambiguity 1 Generalized Algebraic Datatypes Algebraic

More information

CIS 500 Software Foundations Fall October 2

CIS 500 Software Foundations Fall October 2 CIS 500 Software Foundations Fall 2006 October 2 Preliminaries Homework Results of my email survey: There was one badly misdesigned (PhD) problem and a couple of others that were less well thought through

More information

Propositional Logic Formal Syntax and Semantics. Computability and Logic

Propositional Logic Formal Syntax and Semantics. Computability and Logic Propositional Logic Formal Syntax and Semantics Computability and Logic Syntax and Semantics Syntax: The study of how expressions are structured (think: grammar) Semantics: The study of the relationship

More information

1 Introduction. 3 Syntax

1 Introduction. 3 Syntax CS 6110 S18 Lecture 19 Typed λ-calculus 1 Introduction Type checking is a lightweight technique for proving simple properties of programs. Unlike theorem-proving techniques based on axiomatic semantics,

More information

Formal Semantics. Chapter Twenty-Three Modern Programming Languages, 2nd ed. 1

Formal Semantics. Chapter Twenty-Three Modern Programming Languages, 2nd ed. 1 Formal Semantics Chapter Twenty-Three Modern Programming Languages, 2nd ed. 1 Formal Semantics At the beginning of the book we saw formal definitions of syntax with BNF And how to make a BNF that generates

More information

CS4215 Programming Language Implementation. Martin Henz

CS4215 Programming Language Implementation. Martin Henz CS4215 Programming Language Implementation Martin Henz Thursday 26 January, 2012 2 Chapter 4 The Language simpl In this chapter, we are exting the language epl in order to provide a more powerful programming

More information

Supplementary Notes on Exceptions

Supplementary Notes on Exceptions Supplementary Notes on Exceptions 15-312: Foundations of Programming Languages Frank Pfenning Lecture 9 September 25, 2002 In this lecture we first give an implementation of the C-machine for the fragment

More information

Formal Systems and their Applications

Formal Systems and their Applications Formal Systems and their Applications Dave Clarke (Dave.Clarke@cs.kuleuven.be) Acknowledgment: these slides are based in part on slides from Benjamin Pierce and Frank Piessens 1 Course Overview Introduction

More information

The Lambda Calculus. 27 September. Fall Software Foundations CIS 500. The lambda-calculus. Announcements

The Lambda Calculus. 27 September. Fall Software Foundations CIS 500. The lambda-calculus. Announcements CIS 500 Software Foundations Fall 2004 27 September IS 500, 27 September 1 The Lambda Calculus IS 500, 27 September 3 Announcements Homework 1 is graded. Pick it up from Cheryl Hickey (Levine 502). We

More information

Type Systems Winter Semester 2006

Type Systems Winter Semester 2006 Type Systems Winter Semester 2006 Week 4 November 8 November 15, 2006 - version 1.1 The Lambda Calculus The lambda-calculus If our previous language of arithmetic expressions was the simplest nontrivial

More information

Supplementary Notes on Abstract Syntax

Supplementary Notes on Abstract Syntax Supplementary Notes on Abstract Syntax 15-312: Foundations of Programming Languages Frank Pfenning Lecture 3 September 3, 2002 Grammars, as we have discussed them so far, define a formal language as a

More information

Type Systems. Pierce Ch. 3, 8, 11, 15 CSE

Type Systems. Pierce Ch. 3, 8, 11, 15 CSE Type Systems Pierce Ch. 3, 8, 11, 15 CSE 6341 1 A Simple Language ::= true false if then else 0 succ pred iszero Simple untyped expressions Natural numbers encoded as succ succ

More information

Reasoning About Programs Panagiotis Manolios

Reasoning About Programs Panagiotis Manolios Reasoning About Programs Panagiotis Manolios Northeastern University February 26, 2017 Version: 100 Copyright c 2017 by Panagiotis Manolios All rights reserved. We hereby grant permission for this publication

More information

Towards efficient, typed LR parsers

Towards efficient, typed LR parsers roduction An automaton An ML implementation Beyond ML Conclusion 1 rançois Pottier and Yann Régis-Gianas June 2005 rançois Pottier and Yann Régis-Gianas roduction An automaton An ML implementation Beyond

More information

CITS5501 Software Testing and Quality Assurance Formal methods

CITS5501 Software Testing and Quality Assurance Formal methods CITS5501 Software Testing and Quality Assurance Formal methods Unit coordinator: Arran Stewart May 1, 2018 1 / 49 Sources Pressman, R., Software Engineering: A Practitioner s Approach, McGraw-Hill, 2005

More information

CIS 500 Software Foundations Fall September 25

CIS 500 Software Foundations Fall September 25 CIS 500 Software Foundations Fall 2006 September 25 The Lambda Calculus The lambda-calculus If our previous language of arithmetic expressions was the simplest nontrivial programming language, then the

More information

Types and Static Type Checking (Introducing Micro-Haskell)

Types and Static Type Checking (Introducing Micro-Haskell) Types and Static (Introducing Micro-Haskell) Informatics 2A: Lecture 13 Alex Simpson School of Informatics University of Edinburgh als@inf.ed.ac.uk 16 October, 2012 1 / 21 1 Types 2 3 4 2 / 21 Thus far

More information

A Type System for Functional Traversal-Based Aspects

A Type System for Functional Traversal-Based Aspects A Type System for Functional Traversal-Based Aspects Bryan Chadwick College of Computer & Information Science Northeastern University, 360 Huntington Avenue Boston, Massachusetts 02115 USA chadwick@ccs.neu.edu

More information

CMSC 336: Type Systems for Programming Languages Lecture 5: Simply Typed Lambda Calculus Acar & Ahmed January 24, 2008

CMSC 336: Type Systems for Programming Languages Lecture 5: Simply Typed Lambda Calculus Acar & Ahmed January 24, 2008 CMSC 336: Type Systems for Programming Languages Lecture 5: Simply Typed Lambda Calculus Acar & Ahmed January 24, 2008 Contents 1 Solution to the Exercise 1 1.1 Semantics for lambda calculus.......................

More information

15 150: Principles of Functional Programming. Exceptions

15 150: Principles of Functional Programming. Exceptions 15 150: Principles of Functional Programming Exceptions Michael Erdmann Spring 2018 1 Topics Exceptions Referential transparency, revisited Examples to be discussed: Dealing with arithmetic errors Making

More information

Goal. CS152: Programming Languages. Lecture 15 Parametric Polymorphism. What the Library Likes. What The Client Likes. Start simpler.

Goal. CS152: Programming Languages. Lecture 15 Parametric Polymorphism. What the Library Likes. What The Client Likes. Start simpler. Goal Understand what this interface means and why it matters: CS152: Programming Languages Lecture 15 Parametric Polymorphism Dan Grossman Spring 2011 type a mylist; val mt_list : a mylist val cons : a

More information

Lecture Notes on Program Equivalence

Lecture Notes on Program Equivalence Lecture Notes on Program Equivalence 15-312: Foundations of Programming Languages Frank Pfenning Lecture 24 November 30, 2004 When are two programs equal? Without much reflection one might say that two

More information

Lecture 9: Typed Lambda Calculus

Lecture 9: Typed Lambda Calculus Advanced Topics in Programming Languages Spring Semester, 2012 Lecture 9: Typed Lambda Calculus May 8, 2012 Lecturer: Mooly Sagiv Scribe: Guy Golan Gueta and Shachar Itzhaky 1 Defining a Type System for

More information

Verifying Program Invariants with Refinement Types

Verifying Program Invariants with Refinement Types Verifying Program Invariants with Refinement Types Rowan Davies and Frank Pfenning Carnegie Mellon University Princeton and Yale Colloquium Talks February, 2001 Acknowledgments: Robert Harper 1 Overview

More information

CSCE 314 Programming Languages. Type System

CSCE 314 Programming Languages. Type System CSCE 314 Programming Languages Type System Dr. Hyunyoung Lee 1 Names Names refer to different kinds of entities in programs, such as variables, functions, classes, templates, modules,.... Names can be

More information

Programming in Omega Part 1. Tim Sheard Portland State University

Programming in Omega Part 1. Tim Sheard Portland State University Programming in Omega Part 1 Tim Sheard Portland State University Tim Sheard Computer Science Department Portland State University Portland, Oregon PSU PL Research at Portland State University The Programming

More information

Assistant for Language Theory. SASyLF: An Educational Proof. Corporation. Microsoft. Key Shin. Workshop on Mechanizing Metatheory

Assistant for Language Theory. SASyLF: An Educational Proof. Corporation. Microsoft. Key Shin. Workshop on Mechanizing Metatheory SASyLF: An Educational Proof Assistant for Language Theory Jonathan Aldrich Robert J. Simmons Key Shin School of Computer Science Carnegie Mellon University Microsoft Corporation Workshop on Mechanizing

More information

CSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341)

CSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) CSE 413 Languages & Implementation Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341) 1 Goals Representing programs as data Racket structs as a better way to represent

More information

2 Introduction to operational semantics

2 Introduction to operational semantics 2 Introduction to operational semantics This chapter presents the syntax of a programming language, IMP, a small language of while programs. IMP is called an "imperative" language because program execution

More information

Lecture 3: Recursion; Structural Induction

Lecture 3: Recursion; Structural Induction 15-150 Lecture 3: Recursion; Structural Induction Lecture by Dan Licata January 24, 2012 Today, we are going to talk about one of the most important ideas in functional programming, structural recursion

More information

Tradeoffs. CSE 505: Programming Languages. Lecture 15 Subtyping. Where shall we add useful completeness? Where shall we add completeness?

Tradeoffs. CSE 505: Programming Languages. Lecture 15 Subtyping. Where shall we add useful completeness? Where shall we add completeness? Tradeoffs CSE 505: Programming Languages Lecture 15 Subtyping Zach Tatlock Autumn 2017 Desirable type system properties (desiderata): soundness - exclude all programs that get stuck completeness - include

More information

Subtyping (cont) Lecture 15 CS 565 4/3/08

Subtyping (cont) Lecture 15 CS 565 4/3/08 Subtyping (cont) Lecture 15 CS 565 4/3/08 Formalization of Subtyping Inversion of the subtype relation: If σ

More information

4.5 Pure Linear Functional Programming

4.5 Pure Linear Functional Programming 4.5 Pure Linear Functional Programming 99 4.5 Pure Linear Functional Programming The linear λ-calculus developed in the preceding sections can serve as the basis for a programming language. The step from

More information

Chapter 22: Type Reconstruction (Type Inference)

Chapter 22: Type Reconstruction (Type Inference) Chapter 22: Type Reconstruction (Type Inference) Calculating a Principal Type for a Term Constraint based Typing Unification and Principle Types Extension with let-polymorphism Type Variables and Type

More information

CIS 500 Software Foundations Fall December 6

CIS 500 Software Foundations Fall December 6 CIS 500 Software Foundations Fall 2006 December 6 Administrivia Administrivia No recitations this week Extra office hours will be posted to the class mailing list Exam: Wednesday, Dec 20, 9 11 Location:

More information

Administrivia. Existential Types. CIS 500 Software Foundations Fall December 6. Administrivia. Motivation. Motivation

Administrivia. Existential Types. CIS 500 Software Foundations Fall December 6. Administrivia. Motivation. Motivation CIS 500 Software Foundations Fall 2006 Administrivia December 6 Administrivia No recitations this week Extra office hours will be posted to the class mailing list Exam: Wednesday, Dec 20, 9 11 Location:

More information

Assuring Software Protection in Virtual Machines

Assuring Software Protection in Virtual Machines Assuring Software Protection in Virtual Machines Andrew W. Appel Princeton University 1 Software system built from components Less-trusted components More-trusted components (non-core functions) INTERFACE

More information

Introduction to Lexical Analysis

Introduction to Lexical Analysis Introduction to Lexical Analysis Outline Informal sketch of lexical analysis Identifies tokens in input string Issues in lexical analysis Lookahead Ambiguities Specifying lexers Regular expressions Examples

More information

Introduction to ML. Mooly Sagiv. Cornell CS 3110 Data Structures and Functional Programming

Introduction to ML. Mooly Sagiv. Cornell CS 3110 Data Structures and Functional Programming Introduction to ML Mooly Sagiv Cornell CS 3110 Data Structures and Functional Programming Typed Lambda Calculus Chapter 9 Benjamin Pierce Types and Programming Languages Call-by-value Operational Semantics

More information

Gradual Typing with Union and Intersection Types

Gradual Typing with Union and Intersection Types Gradual Typing with Union and Intersection Types Giuseppe Castagna, Victor Lanvin ICFP 17 September 6, 2017 1 / 14 Outline 1 Motivating Example 2 Types and Subtyping 3 Function Types and Operators 4 Conclusion

More information

Lecture 13: Subtyping

Lecture 13: Subtyping Lecture 13: Subtyping Polyvios Pratikakis Computer Science Department, University of Crete Type Systems and Programming Languages Pratikakis (CSD) Subtyping CS546, 2018-2019 1 / 15 Subtyping Usually found

More information

The University of Nottingham SCHOOL OF COMPUTER SCIENCE A LEVEL 4 MODULE, SPRING SEMESTER MATHEMATICAL FOUNDATIONS OF PROGRAMMING ANSWERS

The University of Nottingham SCHOOL OF COMPUTER SCIENCE A LEVEL 4 MODULE, SPRING SEMESTER MATHEMATICAL FOUNDATIONS OF PROGRAMMING ANSWERS The University of Nottingham SCHOOL OF COMPUTER SCIENCE A LEVEL 4 MODULE, SPRING SEMESTER 2012 2013 MATHEMATICAL FOUNDATIONS OF PROGRAMMING ANSWERS Time allowed TWO hours Candidates may complete the front

More information

CIS 500 Software Foundations Midterm I

CIS 500 Software Foundations Midterm I CIS 500 Software Foundations Midterm I October 11, 2006 Name: Student ID: Email: Status: Section: registered for the course not registered: sitting in to improve a previous grade not registered: just taking

More information

Subtyping and Objects

Subtyping and Objects Subtyping and Objects Massimo Merro 20 November 2017 Massimo Merro Data and Mutable Store 1 / 22 Polymorphism So far, our type systems are very rigid: there is little support to code reuse. Polymorphism

More information

Operational Semantics. One-Slide Summary. Lecture Outline

Operational Semantics. One-Slide Summary. Lecture Outline Operational Semantics #1 One-Slide Summary Operational semantics are a precise way of specifying how to evaluate a program. A formal semantics tells you what each expression means. Meaning depends on context:

More information

Scope and Introduction to Functional Languages. Review and Finish Scoping. Announcements. Assignment 3 due Thu at 11:55pm. Website has SML resources

Scope and Introduction to Functional Languages. Review and Finish Scoping. Announcements. Assignment 3 due Thu at 11:55pm. Website has SML resources Scope and Introduction to Functional Languages Prof. Evan Chang Meeting 7, CSCI 3155, Fall 2009 Announcements Assignment 3 due Thu at 11:55pm Submit in pairs Website has SML resources Text: Harper, Programming

More information

Lecture Notes on Aggregate Data Structures

Lecture Notes on Aggregate Data Structures Lecture Notes on Aggregate Data Structures 15-312: Foundations of Programming Languages Frank Pfenning Lecture 8 September 23, 2004 In this lecture we discuss various language extensions which make MinML

More information

CS152: Programming Languages. Lecture 11 STLC Extensions and Related Topics. Dan Grossman Spring 2011

CS152: Programming Languages. Lecture 11 STLC Extensions and Related Topics. Dan Grossman Spring 2011 CS152: Programming Languages Lecture 11 STLC Extensions and Related Topics Dan Grossman Spring 2011 Review e ::= λx. e x e e c v ::= λx. e c τ ::= int τ τ Γ ::= Γ, x : τ (λx. e) v e[v/x] e 1 e 1 e 1 e

More information

Formal Semantics. Prof. Clarkson Fall Today s music: Down to Earth by Peter Gabriel from the WALL-E soundtrack

Formal Semantics. Prof. Clarkson Fall Today s music: Down to Earth by Peter Gabriel from the WALL-E soundtrack Formal Semantics Prof. Clarkson Fall 2015 Today s music: Down to Earth by Peter Gabriel from the WALL-E soundtrack Review Previously in 3110: simple interpreter for expression language: abstract syntax

More information

Type Checking and Type Equality

Type Checking and Type Equality Type Checking and Type Equality Type systems are the biggest point of variation across programming languages. Even languages that look similar are often greatly different when it comes to their type systems.

More information

Subtyping (cont) Formalization of Subtyping. Lecture 15 CS 565. Inversion of the subtype relation:

Subtyping (cont) Formalization of Subtyping. Lecture 15 CS 565. Inversion of the subtype relation: Subtyping (cont) Lecture 15 CS 565 Formalization of Subtyping Inversion of the subtype relation:! If "

More information

Types and Static Type Checking (Introducing Micro-Haskell)

Types and Static Type Checking (Introducing Micro-Haskell) Types and Static (Introducing Micro-Haskell) Informatics 2A: Lecture 14 John Longley School of Informatics University of Edinburgh jrl@inf.ed.ac.uk 17 October 2017 1 / 21 1 Types 2 3 4 2 / 21 So far in

More information

XDI Link Contract Deep Dive

XDI Link Contract Deep Dive XDI Link Contract Deep Dive August 25-27, 2014 (Document by Dan Blum, slightly edited for Aug 29 XDI TC call by Markus) Introduction I learned that this is the second- or third XDI retreat, and for some

More information

Introduction to SML Getting Started

Introduction to SML Getting Started Introduction to SML Getting Started Michael R. Hansen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark c Michael R. Hansen, Fall 2004 p.1/15 Background Standard Meta

More information

Refined typechecking with Stardust

Refined typechecking with Stardust Refined typechecking with Stardust Joshua Dunfield Carnegie Mellon University (current affiliation: McGill University) PLPV 2007 Freiburg, Germany 5 October 2007 1 Conventional Static Typing ML, Haskell,...

More information

Lecture Notes on Compiler Design: Overview

Lecture Notes on Compiler Design: Overview Lecture Notes on Compiler Design: Overview 15-411: Compiler Design Frank Pfenning Lecture 1 August 26, 2014 1 Introduction This course is a thorough introduction to compiler design, focusing on more lowlevel

More information

Subsumption. Principle of safe substitution

Subsumption. Principle of safe substitution Recap on Subtyping Subsumption Some types are better than others, in the sense that a value of one can always safely be used where a value of the other is expected. Which can be formalized as by introducing:

More information

Goals: Define the syntax of a simple imperative language Define a semantics using natural deduction 1

Goals: Define the syntax of a simple imperative language Define a semantics using natural deduction 1 Natural Semantics Goals: Define the syntax of a simple imperative language Define a semantics using natural deduction 1 1 Natural deduction is an instance of first-order logic; that is, it is the formal

More information

CSE-321 Programming Languages 2010 Final

CSE-321 Programming Languages 2010 Final Name: Hemos ID: CSE-321 Programming Languages 2010 Final Prob 1 Prob 2 Prob 3 Prob 4 Prob 5 Prob 6 Total Score Max 18 28 16 12 36 40 150 There are six problems on 16 pages, including two work sheets, in

More information

Outline. What is semantics? Denotational semantics. Semantics of naming. What is semantics? 2 / 21

Outline. What is semantics? Denotational semantics. Semantics of naming. What is semantics? 2 / 21 Semantics 1 / 21 Outline What is semantics? Denotational semantics Semantics of naming What is semantics? 2 / 21 What is the meaning of a program? Recall: aspects of a language syntax: the structure of

More information