Programming with Invariants through Targeted Synthesis. John Sarracino
|
|
- Tadeusz Urban
- 5 lat temu
- Przeglądów:
Transkrypt
1 Programming with Invariants through Targeted Synthesis John Sarracino 1
2 Programming is Hard
3 Programming is Hard Therac
4 Programming is Hard Ariane
5 Programming is Hard Maersk 2017
6 Programming is Hard Windows 2018
7 Programming is Hard Windows always
8 Computers are a Sadness and I am the cure
9 Programs are a Sadness and I am the cure
10 Software Invariants ubi_assert(e->num!= e1->num); if (keyproto.getkeyvalue().size()!= Ed25519Verify.PUBLIC_KEY_LEN) { throw new GeneralSecurityException( invalid Ed25519 public key: incorrect key length ); ensure cat_set : has_category(cat) end
11 Software Invariants ubi_assert(e->num!= e1->num); C if (keyproto.getkeyvalue().size()!= Ed25519Verify.PUBLIC_KEY_LEN) { throw new GeneralSecurityException( invalid Ed25519 public key: incorrect key length ); ensure cat_set : has_category(cat) end
12 Software Invariants ubi_assert(e->num!= e1->num); C if (keyproto.getkeyvalue().size()!= Ed25519Verify.PUBLIC_KEY_LEN) { throw new GeneralSecurityException( invalid Ed25519 public key: incorrect key length ); Java ensure cat_set : has_category(cat) end
13 Software Invariants ubi_assert(e->num!= e1->num); C if (keyproto.getkeyvalue().size()!= Ed25519Verify.PUBLIC_KEY_LEN) { throw new GeneralSecurityException( invalid Ed25519 public key: incorrect key length ); Java ensure cat_set : has_category(cat) end Eiffel
14 Software Invariants ubi_assert(e->num!= e1->num); C if (keyproto.getkeyvalue().size()!= Ed25519Verify.PUBLIC_KEY_LEN) { throw new GeneralSecurityException( invalid Ed25519 public key: incorrect key length ); Language agnostic, Manually maintained. Java ensure cat_set : has_category(cat) end Eiffel
15 Manual Invariant Programming Invariants Algorithm
16 Manual Invariant Programming Invariants Algorithm Code
17 Manual Invariant Programming Invariants Algorithm Code
18 Why are Manual Invariants difficult? Code changes => Programmer checks, maintains invariant Invariant changes => Programmer checks, maintains code
19 The code change problem: Maintaining Invariants Invariant: All urls are in the urlset
20 The code change problem: Maintaining Invariants Invariant: All urls are in the urlset
21 The code change problem: Maintaining Invariants Invariant: All urls are in the urlset
22 The code change problem: Maintaining Invariants Tedious and error-prone, particularly with a large codebase Invariant: All urls are in the urlset
23 The invariant change problem: Maintaining Code Invariant: All urls are in the urlset
24 The invariant change problem: Maintaining Code Invariant: All urls are in the urlset The allocset contains the urlset
25 The invariant change problem: Maintaining Code Even more tedious and error-prone Invariant: All urls are in the urlset The allocset contains the urlset
26 My thesis statement Compiling and generating invariants is useful, novel, and broadly applicable.
27 My thesis proposal Compiling and generating invariants is useful, novel, and broadly applicable. I propose a general framework for maintaining invariants
28 Proposed Work Data invariant calculus Extensions Invariants for Security GUI invariants
29 Outline Data invariant calculus Extensions Invariants for Security GUI invariants
30 Outline Data invariant calculus Extensions Invariants for Security GUI invariants
31 Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i]
32 Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i]
33 Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i]
34 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i] 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black
35 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i] 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black
36 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i] 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black
37 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i] 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black 8i.i 8i.i mod 2 = 0 =) bkg[i] =evenc mod 2 = 1 =) bkg[i] =oddc
38 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i] 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black 8i.i 8i.i mod 2 = 0 =) bkg[i] =evenc mod 2 = 1 =) bkg[i] =oddc
39 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i] 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black 8i.i 8i.i mod 2 = 0 =) bkg[i] =evenc mod 2 = 1 =) bkg[i] =oddc
40 Budgeting Code for (let index = 0; index!= week.length; ++index) { week[index].oninput = () => { let w = parsefloat(week[index].textcontent); month[index].textcontent = w * 4; year[index].textcontent = w * 12 * 4; refreshcolors(index); month[index].oninput = () => { let m = parsefloat(month[index].textcontent); week[index].textcontent = m / 4; year[index].textcontent = m * 12; refreshcolors(index); year[index].oninput = () => { let y = parsefloat(year[index].textcontent); week[index].textcontent = y / (4 * 12); month[index].textcontent = y / 12; refreshcolors(index); document.getelementbyid('evenpicker').oninput = () => { evencolor = document.getelementbyid('evenpicker').value; for (let index = 0; index!= week.length; ++index) { if (index % 2 == 0) { week[index].style.backgroundcolor = evencolor; month[index].style.backgroundcolor = evencolor; year[index].style.backgroundcolor = evencolor; else { week[index].style.backgroundcolor = oddcolor; month[index].style.backgroundcolor = oddcolor; year[index].style.backgroundcolor = oddcolor; document.getelementbyid('oddpicker').oninput = () => { oddcolor = document.getelementbyid('oddpicker').value; for (let index = 0; index!= week.length; ++index) { if (index % 2 == 0) { week[index].style.backgroundcolor = evencolor; month[index].style.backgroundcolor = evencolor; year[index].style.backgroundcolor = evencolor; else { week[index].style.backgroundcolor = oddcolor; month[index].style.backgroundcolor = oddcolor; year[index].style.backgroundcolor = oddcolor;
41 Budgeting Code document.getelementbyid('evenpicker').oninput = () => { evencolor = document.getelementbyid('evenpicker').value; for (let index = 0; index!= week.length; ++index) { for (let index = 0; index!= week.length; ++index) { if (index % 2 == 0) { week[index].oninput = () => { week[index].style.backgroundcolor = evencolor; let w = parsefloat(week[index].textcontent); month[index].style.backgroundcolor = evencolor; month[index].textcontent = w * 4; year[index].style.backgroundcolor = evencolor; year[index].textcontent = w * 12 * 4; else { refreshcolors(index); week[index].style.backgroundcolor = oddcolor; month[index].style.backgroundcolor = oddcolor; Tedious even for this year[index].style.backgroundcolor simple example = oddcolor; month[index].oninput = () => { let m = parsefloat(month[index].textcontent); week[index].textcontent = m / 4; year[index].textcontent = m * 12; refreshcolors(index); document.getelementbyid('oddpicker').oninput = () => { oddcolor = document.getelementbyid('oddpicker').value; for (let index = 0; index!= week.length; ++index) { year[index].oninput = () => { if (index % 2 == 0) { let y = parsefloat(year[index].textcontent); week[index].style.backgroundcolor = evencolor; week[index].textcontent = y / (4 * 12); month[index].style.backgroundcolor = evencolor; month[index].textcontent = y / 12; year[index].style.backgroundcolor = evencolor; refreshcolors(index); else { week[index].style.backgroundcolor = oddcolor; month[index].style.backgroundcolor = oddcolor; year[index].style.backgroundcolor = oddcolor;
42 Budgeting Code Invariants Algorithm for (let index = 0; index!= week.length; ++index) { week[index].oninput = () => { let w = parsefloat(week[index].textcontent); month[index].textcontent = w * 4; year[index].textcontent = w * 12 * 4; refreshcolors(index); month[index].oninput = () => { let m = parsefloat(month[index].textcontent); week[index].textcontent = m / 4; year[index].textcontent = m * 12; refreshcolors(index); year[index].oninput = () => { let y = parsefloat(year[index].textcontent); week[index].textcontent = y / (4 * 12); month[index].textcontent = y / 12; refreshcolors(index); document.getelementbyid('evenpicker').oninput = () => { evencolor = document.getelementbyid('evenpicker').value; for (let index = 0; index!= week.length; ++index) { if (index % 2 == 0) { week[index].style.backgroundcolor = evencolor; month[index].style.backgroundcolor = evencolor; year[index].style.backgroundcolor = evencolor; else { week[index].style.backgroundcolor = oddcolor; month[index].style.backgroundcolor = oddcolor; year[index].style.backgroundcolor = oddcolor; document.getelementbyid('oddpicker').oninput = () => { oddcolor = document.getelementbyid('oddpicker').value; for (let index = 0; index!= week.length; ++index) { if (index % 2 == 0) { week[index].style.backgroundcolor = evencolor; month[index].style.backgroundcolor = evencolor; year[index].style.backgroundcolor = evencolor; else { week[index].style.backgroundcolor = oddcolor; month[index].style.backgroundcolor = oddcolor; year[index].style.backgroundcolor = oddcolor;
43 Budgeting Code Invariants Algorithm for (let index = 0; index!= week.length; ++index) { week[index].oninput = () => { let w = parsefloat(week[index].textcontent); month[index].textcontent = w * 4; year[index].textcontent = w * 12 * 4; refreshcolors(index); month[index].oninput = () => { let m = parsefloat(month[index].textcontent); week[index].textcontent = m / 4; year[index].textcontent = m * 12; refreshcolors(index); year[index].oninput = () => { let y = parsefloat(year[index].textcontent); week[index].textcontent = y / (4 * 12); month[index].textcontent = y / 12; refreshcolors(index); document.getelementbyid('evenpicker').oninput = () => { evencolor = document.getelementbyid('evenpicker').value; for (let index = 0; index!= week.length; ++index) { if (index % 2 == 0) { week[index].style.backgroundcolor = evencolor; month[index].style.backgroundcolor = evencolor; year[index].style.backgroundcolor = evencolor; else { week[index].style.backgroundcolor = oddcolor; month[index].style.backgroundcolor = oddcolor; year[index].style.backgroundcolor = oddcolor; document.getelementbyid('oddpicker').oninput = () => { oddcolor = document.getelementbyid('oddpicker').value; for (let index = 0; index!= week.length; ++index) { if (index % 2 == 0) { week[index].style.backgroundcolor = evencolor; month[index].style.backgroundcolor = evencolor; year[index].style.backgroundcolor = evencolor; else { week[index].style.backgroundcolor = oddcolor; month[index].style.backgroundcolor = oddcolor; year[index].style.backgroundcolor = oddcolor;
44 Budgeting Code Invariants Algorithm document.getelementbyid('evenpicker').oninput = () => { evencolor = document.getelementbyid('evenpicker').value; for (let index = 0; index!= week.length; ++index) { for (let index = 0; index!= week.length; ++index) { if (index % 2 == 0) { week[index].oninput = () => { week[index].style.backgroundcolor = evencolor; let w = parsefloat(week[index].textcontent); month[index].style.backgroundcolor = evencolor; month[index].textcontent = w * 4; year[index].style.backgroundcolor = evencolor; year[index].textcontent = w * 12 * 4; refreshcolors(index); Vast majority else of { code week[index].style.backgroundcolor = oddcolor; month[index].style.backgroundcolor = oddcolor; year[index].style.backgroundcolor = oddcolor; month[index].oninput manually = () => { maintains invariant let m = parsefloat(month[index].textcontent); week[index].textcontent = m / 4; year[index].textcontent = m * 12; refreshcolors(index); document.getelementbyid('oddpicker').oninput = () => { oddcolor = document.getelementbyid('oddpicker').value; for (let index = 0; index!= week.length; ++index) { year[index].oninput = () => { if (index % 2 == 0) { let y = parsefloat(year[index].textcontent); week[index].style.backgroundcolor = evencolor; week[index].textcontent = y / (4 * 12); month[index].style.backgroundcolor = evencolor; month[index].textcontent = y / 12; year[index].style.backgroundcolor = evencolor; refreshcolors(index); else { week[index].style.backgroundcolor = oddcolor; month[index].style.backgroundcolor = oddcolor; year[index].style.backgroundcolor = oddcolor;
45 Manual Invariant Programming Invariants Algorithm Code
46 Invariant Synthesis Invariants Algorithm Code
47 Language Design Goals Programmer thinks about invariants once Compiler automatically handles invariants
48 Compiling Invariants Program Synthesis compiles invariants* Inputs: 1) program with holes e.g. x :=??(y, x) 2) precondition e.g. y = 15 3) requirement e.g. x = y
49 Compiling Invariants Program Synthesis compiles invariants* Inputs: expression 1) program using with holes x and e.g. y x :=??(y, x) 2) precondition e.g. y = 15 3) requirement e.g. x = y
50 Language Design Goals Programmer thinks about invariants once Compiler automatically handles invariants
51 Naive Algorithm Synthesize at the end of every function. Use invariants as preconditions, requirements.
52 Naive Algorithm function updateweeks(value, i) { weeks[i] = value; Pre Req 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] weeks[i] = value; months[i] =??(value, i, weeks[i]); years[i] =??(value, i, weeks[i]); 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i]
53 Naive Algorithm function updateweeks(value, i) { weeks[i] = value; Pre Req 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] weeks[i] = value; months[i] = 4*weeks[i]; years[i] = 4*12*weeks[i]; 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i]
54 Naive Algorithm function updateweeks(value, i) { weeks[i] = value; Does not scale to realistic programs Pre Req 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] weeks[i] = value; months[i] =??(value, i, weeks[i]); years[i] =??(value, i, weeks[i]); 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i]
55 Problem: Loops don t scale function adjustforinflation(scale) { for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; Pre 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; for (let i = 0; i < weeks.length; ++i) { months[i] =??(scale, i, weeks[i]); years[i] =??(scale, i, weeks[i]); Req 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i]
56 Problem: Loops don t scale function adjustforinflation(scale) { for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; Timeout even for this simple example Pre 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; for (let i = 0; i < weeks.length; ++i) { months[i] =??(scale, i, weeks[i]); years[i] =??(scale, i, weeks[i]); Req 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i]
57 Key insight: move hole inside loop function adjustforinflation(scale) { for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; Pre 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; for (let i = 0; i < weeks.length; ++i) { months[i] =??(scale, i, weeks[i]); years[i] =??(scale, i, weeks[i]); Req 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i]
58 Key insight: move hole inside loop function adjustforinflation(scale) { for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; Pre Req 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; months[i] =??(scale, i, weeks[i]); years[i] =??(scale, i, weeks[i]); 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i]
59 Simplification: No quantification!! function adjustforinflation(scale) { for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; Pre Req 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; months[i] =??(scale, i, weeks[i]); years[i] =??(scale, i, weeks[i]); 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i]
60 Simplification: No quantification!! function adjustforinflation(scale) { for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; Pre Req 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; months[i] =??(scale, i, weeks[i]); years[i] =??(scale, i, weeks[i]); 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i]
61 Simplification: No quantification!! function adjustforinflation(scale) { for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; Pre Req 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] weeks[i] = weeks[i] * scale; months[i] =??(scale, i, weeks[i]); years[i] =??(scale, i, weeks[i]); 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i]
62 Simplification: No quantification!! function adjustforinflation(scale) { for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; Targeted Synthesis! Pre Req 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] weeks[i] = weeks[i] * scale; months[i] =??(scale, i, weeks[i]); years[i] =??(scale, i, weeks[i]); 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i]
63 Simplification: No quantification!! function adjustforinflation(scale) { for (let i = 0; i < weeks.length; ++i) { weeks[i] = weeks[i] * scale; Pre Req 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] weeks[i] = weeks[i] * scale; months[i] = months[i] * scale; years[i] = years[i] * scale; 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i]
64 Spyder Separate invariant, imperative programs Compiler combines with targeted synthesis
65 Spyder Automatic Invariant maintenance Separate invariant, imperative programs Compiler combines with targeted synthesis
66 Imperative Language for (w: int) with idx in (weeks) { if (idx == i) { w = val;
67 Imperative Language for (w: int) with idx in (weeks) { if (idx == i) { w = val; Loops and Arrays
68 Imperative Language for (w: int) with idx in (weeks) { if (idx == i) { w = val; In-out iterators
69 Imperative AST
70 Invariant Language foreach (week, month) in (weeks, months) { week = 4 * month
71 Invariant Language foreach (week, month) in (weeks, months) { week = 4 * month Elementwise Quantification
72 Invariant AST
73 Compilation Algorithm
74 Language Design Goals Programmer thinks about invariants once Compiler automatically handles invariants
75 Compilation Algorithm 1) bring necessary variables into scope 2) specialize invariants to loops 3)??? (find template) 4) profit (synthesize)
76 Compilation Algorithm 1) bring necessary variables into scope 2) specialize invariants to loops 3)??? (find template) 4) profit (synthesize)
77 Format Invariants Code Explanatory Caption Problem/Result
78 Simple Example x > 2 * y y = y + 1;
79 Simple Example x > 2 * y y = y + 1; X ~ Y
80 Simple Example x > 2 * y y = y + 1; X ~ Y Y edited
81 Simple Example x > 2 * y y = y + 1; X ~ Y Y edited x =??(x, y);
82 Simple Example x > 2 * y y = y + 1; X, Y in scope x =??(x, y);
83 Simple Example x > 2 * y y = y + 1; x =??(x, y);
84 Simple Example x > 2 * y y = y + 1; x = x + 2;
85 Compilation Algorithm 1) bring necessary variables into scope 2) specialize invariants to loops 3)??? (find template) 4) profit (synthesize)
86 Compilation Algorithm 1) bring necessary variables into scope 2) specialize invariants to loops 3)??? (find template) 4) profit (synthesize)
87 Extending Loops foreach (w, m) in (weeks, months){ w = 4 * m for (w: int) in (weeks) { w = w * 1.05;
88 Extending Loops foreach (w, m) in (weeks, months){ w = 4 * m for (w: int) in (weeks) { w = w * 1.05; weeks ~ months
89 Extending Loops foreach (w, m) in (weeks, months){ w = 4 * m for (w: int) in (weeks) { w = w * 1.05; weeks ~ months need months
90 Extending Loops foreach (w, m) in (weeks, months){ w = 4 * m for (w: int) in (weeks) { w = w * 1.05; weeks ~ months need months
91 Extending Loops foreach (w, m) in (weeks, months){ w = 4 * m for (w: int, m: int) in (weeks, months){ w = w * 1.05; weeks ~ months need months
92 Compilation Algorithm 1) bring necessary variables into scope 2) specialize invariants to loops 3)??? (find template) 4) profit (synthesize)
93 Compilation Algorithm 1) bring necessary variables into scope 2) specialize invariants to loops 3)??? (find template) 4) profit (synthesize)
94 Simplifying Invariants foreach (w, m) in (weeks, months){ w = 4 * m for (w: int, m: int) in (weeks, months){ w = w * 1.05;
95 Simplifying Invariants foreach (w, m) in (weeks, months){ w = 4 * m for (w: int, m: int) in (weeks, months){ w = w * 1.05; Key insight: foreach body <=> for invariant
96 Simplifying Invariants foreach (w, m) in (weeks, months){ w = 4 * m for (w: int, m: int) in (weeks, months){ w = w * 1.05; Key insight: foreach body <=> for invariant m =??(m, w);
97 Simplifying Invariants foreach (w, m) in (weeks, months){ w = 4 * m for (w: int, m: int) in (weeks, months){ w = w * 1.05; Key insight: foreach body <=> for invariant m = m * 1.05;
98 Compilation Algorithm 1) bring necessary variables into scope 2) specialize invariants to loops 3)??? (find template) 4) profit (synthesize)
99 Compilation Algorithm 1) bring necessary variables into scope 2) specialize invariants to loops 3)??? (find template) 4) profit (synthesize)
100 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i] 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black 8i.i 8i.i mod 2 = 0 =) bkg[i] =evenc mod 2 = 1 =) bkg[i] =oddc
101 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i] 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black 8i.i 8i.i mod 2 = 0 =) bkg[i] =evenc mod 2 = 1 =) bkg[i] =oddc
102 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i] Need to synthesize loops, conditionals 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black 8i.i 8i.i mod 2 = 0 =) bkg[i] =evenc mod 2 = 1 =) bkg[i] =oddc
103 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i] Need to synthesize loops, conditionals 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black 8i.i 8i.i mod 2 = 0 =) bkg[i] =evenc mod 2 = 1 =) bkg[i] =oddc
104 Synthesizing Loops foreach (color) in (bkgcolors) { color = bkg bkg = blue;
105 Synthesizing Loops foreach (color) in (bkgcolors) { color = bkg bkg = blue; bkg ~ bkgcolors bkg edited
106 Synthesizing Loops foreach (color) in (bkgcolors) { color = bkg bkg = blue; bkg ~ bkgcolors bkg edited for (color: int) in (bkgcolors){ color =??(bkg, blue);
107 Loops foreach (color) in (bkgcolors) { color = bkg That s the skeleton bkg = blue; What about the invariant? for (color: int) in (bkgcolors){ color =??(bkg, blue);
108 Synthesizing Loops foreach (color) in (bkgcolors) { color = bkg bkg = blue; for (color: int) in (bkgcolors){ color =??(bkg, blue);
109 Synthesizing Loops foreach (color) in (bkgcolors) { color = bkg bkg = blue; Use foreach spec for body for (color: int) in (bkgcolors){ color =??(bkg, blue);
110 Synthesizing Loops foreach (color) in (bkgcolors) { color = bkg bkg = blue; for (color: int) in (bkgcolors){ color =??(bkg, blue);
111 Synthesizing Loops foreach (color) in (bkgcolors) { color = bkg bkg = blue; for (color: int) in (bkgcolors){ color = blue;
112 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i] Need to synthesize loops, conditionals 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black 8i.i 8i.i mod 2 = 0 =) bkg[i] =evenc mod 2 = 1 =) bkg[i] =oddc
113 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Example Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] =years[i] Need to synthesize loops, conditionals 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black 8i.i 8i.i mod 2 = 0 =) bkg[i] =evenc mod 2 = 1 =) bkg[i] =oddc
114 Synthesizing Conditionals (idx % 2 = 0) ==> color = even even = red;
115 Synthesizing Conditionals (idx % 2 = 0) ==> color = even even = red; Implications as conditionals
116 Synthesizing Conditionals (idx % 2 = 0) ==> color = even even = red; Implications as conditionals if (idx % 2 == 0) { color =??(even, red, idx);
117 Synthesizing Conditionals (idx % 2 = 0) ==> color = even even = red; if (idx % 2 == 0) { color =??(even, red, idx);
118 Synthesizing Conditionals (idx % 2 = 0) ==> color = even even = red; if (idx % 2 == 0) { color = even;
119 Case studies* Game of Life (1d, 2d) Budgeting calculator Split expenses spreadsheet *
120 <latexit sha1_base64="tr8s+q96aeq/uprhjs8lwyt4d/o=">aaacr3icfva9swnbfnylx/h8orw0wq2cvbgtqrshagmzwxxa7gx7m5dkye7dsbuxeel+ny2tnx/bxkirszfjfterbxagew94sxmmncntuq9wbmv1bx0jv2lvbe/s7jn7b1uvp5jchcy8lvwqkoasgopmmkm9kubeykew9m4n81ofpgjx9kchcqscdclwzproizwdr78ds8i5zkwmrdwc3mab9pkwx0hhpopbrljgise0h33fnjmc/2cydjmgplnwi+4uejl4gsmgdowm8+k3ypokidtlrkmg5yy6gbgpgeuwtv1uqwkska40di2iabwmpj2m8alrwtjkmy/sekroo0zekduuodkurhfv4mwi/jvrplp9fyxylkqaijo71e451jgelipbtalvfggiozkzrjh2isrum+ptu4k3+ovluj0vem7ru78olg6yovlocj2gm+shs1rcd6imkoiij/sgptcn9wy9w1/w92w1z2weq/qloesh+vkwmw==</latexit> <latexit sha1_base64="tr8s+q96aeq/uprhjs8lwyt4d/o=">aaacr3icfva9swnbfnylx/h8orw0wq2cvbgtqrshagmzwxxa7gx7m5dkye7dsbuxeel+ny2tnx/bxkirszfjfterbxagew94sxmmncntuq9wbmv1bx0jv2lvbe/s7jn7b1uvp5jchcy8lvwqkoasgopmmkm9kubeykew9m4n81ofpgjx9kchcqscdclwzproizwdr78ds8i5zkwmrdwc3mab9pkwx0hhpopbrljgise0h33fnjmc/2cydjmgplnwi+4uejl4gsmgdowm8+k3ypokidtlrkmg5yy6gbgpgeuwtv1uqwkska40di2iabwmpj2m8alrwtjkmy/sekroo0zekduuodkurhfv4mwi/jvrplp9fyxylkqaijo71e451jgelipbtalvfggiozkzrjh2isrum+ptu4k3+ovluj0vem7ru78olg6yovlocj2gm+shs1rcd6imkoiij/sgptcn9wy9w1/w92w1z2weq/qloesh+vkwmw==</latexit> <latexit sha1_base64="tr8s+q96aeq/uprhjs8lwyt4d/o=">aaacr3icfva9swnbfnylx/h8orw0wq2cvbgtqrshagmzwxxa7gx7m5dkye7dsbuxeel+ny2tnx/bxkirszfjfterbxagew94sxmmncntuq9wbmv1bx0jv2lvbe/s7jn7b1uvp5jchcy8lvwqkoasgopmmkm9kubeykew9m4n81ofpgjx9kchcqscdclwzproizwdr78ds8i5zkwmrdwc3mab9pkwx0hhpopbrljgise0h33fnjmc/2cydjmgplnwi+4uejl4gsmgdowm8+k3ypokidtlrkmg5yy6gbgpgeuwtv1uqwkska40di2iabwmpj2m8alrwtjkmy/sekroo0zekduuodkurhfv4mwi/jvrplp9fyxylkqaijo71e451jgelipbtalvfggiozkzrjh2isrum+ptu4k3+ovluj0vem7ru78olg6yovlocj2gm+shs1rcd6imkoiij/sgptcn9wy9w1/w92w1z2weq/qloesh+vkwmw==</latexit> <latexit sha1_base64="tr8s+q96aeq/uprhjs8lwyt4d/o=">aaacr3icfva9swnbfnylx/h8orw0wq2cvbgtqrshagmzwxxa7gx7m5dkye7dsbuxeel+ny2tnx/bxkirszfjfterbxagew94sxmmncntuq9wbmv1bx0jv2lvbe/s7jn7b1uvp5jchcy8lvwqkoasgopmmkm9kubeykew9m4n81ofpgjx9kchcqscdclwzproizwdr78ds8i5zkwmrdwc3mab9pkwx0hhpopbrljgise0h33fnjmc/2cydjmgplnwi+4uejl4gsmgdowm8+k3ypokidtlrkmg5yy6gbgpgeuwtv1uqwkska40di2iabwmpj2m8alrwtjkmy/sekroo0zekduuodkurhfv4mwi/jvrplp9fyxylkqaijo71e451jgelipbtalvfggiozkzrjh2isrum+ptu4k3+ovluj0vem7ru78olg6yovlocj2gm+shs1rcd6imkoiij/sgptcn9wy9w1/w92w1z2weq/qloesh+vkwmw==</latexit> Game of Life Invariants 8i.model[i] =) view[i] =black 8i.!model[i] =) view[i] =white running () start enabled <latexit sha1_base64="xvg5tdsq10kirbnjgu7jdffp6pi=">aaacbhicbvc7tsmwfhxkq5rxglglryxevcuiccykfsyi0yfurjhj3lrwhseyhaqq6sdcr7awgbarh8hg3+c2gadlsjaozrnh9j1hxpnsjvntvdbwnza3qtu1nd29/qp78kir0lxs6ncup7ifegwccehopjn0mwkkctn0wvhnzo89gfqsffd6kogfkkfgmanegymw6zixgokh9lgcy6wj1f4agph8fngnp+nmgvejw5igkteo7c8vsmmegncue6ugrpnpvzb3msphwvnybrmhyzkegagcjkd8yr7efj8ajcjxks0rgs/v34mcjepnktbmjksp1li3e//zbrmor/yciszxiojiotjnwkd41giomasq+cqqqiuzf8v0rcsh2vrwmyw4yyuvku5503wa7t1fo3vd1lffdxsczpclllel3ai26ickhtezekvv1pp1yr1bh4vrilvmjtefwj8/6iyypw==</latexit> <latexit sha1_base64="xvg5tdsq10kirbnjgu7jdffp6pi=">aaacbhicbvc7tsmwfhxkq5rxglglryxevcuiccykfsyi0yfurjhj3lrwhseyhaqq6sdcr7awgbarh8hg3+c2gadlsjaozrnh9j1hxpnsjvntvdbwnza3qtu1nd29/qp78kir0lxs6ncup7ifegwccehopjn0mwkkctn0wvhnzo89gfqsffd6kogfkkfgmanegymw6zixgokh9lgcy6wj1f4agph8fngnp+nmgvejw5igkteo7c8vsmmegncue6ugrpnpvzb3msphwvnybrmhyzkegagcjkd8yr7efj8ajcjxks0rgs/v34mcjepnktbmjksp1li3e//zbrmor/yciszxiojiotjnwkd41giomasq+cqqqiuzf8v0rcsh2vrwmyw4yyuvku5503wa7t1fo3vd1lffdxsczpclllel3ai26ickhtezekvv1pp1yr1bh4vrilvmjtefwj8/6iyypw==</latexit> <latexit sha1_base64="xvg5tdsq10kirbnjgu7jdffp6pi=">aaacbhicbvc7tsmwfhxkq5rxglglryxevcuiccykfsyi0yfurjhj3lrwhseyhaqq6sdcr7awgbarh8hg3+c2gadlsjaozrnh9j1hxpnsjvntvdbwnza3qtu1nd29/qp78kir0lxs6ncup7ifegwccehopjn0mwkkctn0wvhnzo89gfqsffd6kogfkkfgmanegymw6zixgokh9lgcy6wj1f4agph8fngnp+nmgvejw5igkteo7c8vsmmegncue6ugrpnpvzb3msphwvnybrmhyzkegagcjkd8yr7efj8ajcjxks0rgs/v34mcjepnktbmjksp1li3e//zbrmor/yciszxiojiotjnwkd41giomasq+cqqqiuzf8v0rcsh2vrwmyw4yyuvku5503wa7t1fo3vd1lffdxsczpclllel3ai26ickhtezekvv1pp1yr1bh4vrilvmjtefwj8/6iyypw==</latexit> <latexit sha1_base64="xvg5tdsq10kirbnjgu7jdffp6pi=">aaacbhicbvc7tsmwfhxkq5rxglglryxevcuiccykfsyi0yfurjhj3lrwhseyhaqq6sdcr7awgbarh8hg3+c2gadlsjaozrnh9j1hxpnsjvntvdbwnza3qtu1nd29/qp78kir0lxs6ncup7ifegwccehopjn0mwkkctn0wvhnzo89gfqsffd6kogfkkfgmanegymw6zixgokh9lgcy6wj1f4agph8fngnp+nmgvejw5igkteo7c8vsmmegncue6ugrpnpvzb3msphwvnybrmhyzkegagcjkd8yr7efj8ajcjxks0rgs/v34mcjepnktbmjksp1li3e//zbrmor/yciszxiojiotjnwkd41giomasq+cqqqiuzf8v0rcsh2vrwmyw4yyuvku5503wa7t1fo3vd1lffdxsczpclllel3ai26ickhtezekvv1pp1yr1bh4vrilvmjtefwj8/6iyypw==</latexit> Code State transition Interactive display Start/Stop toggle * By Kieff - Own work, CC BY-SA 3.0,
121 <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="4zi68pjubg9qod0oec37qfpgx9m=">aaacg3icbvc7tsmwfhxkq5rxgzhfokjiqpikczaichbgitgh1esv4960vu0ksh1qffu/wpgvfgyqykji4g9w0g7qcqajc+61zz1+zjnstv1tfvzw19y3ipulre2d3b3y/kfbrymk0kirj2txjwo4c6glmebqjsuq4xpo+oprzo/cg1qscu/0jazpkghiakajnlk/xhodsblomcnv/aawvj3m4cs6trhlhekacgdrqdo1jn1o6lhfrthvowdejs6cvnaczx750x1enbeqasqjuj3hjrwxeqkz5tatuymc2dxmhtazncqcljfmt03xivegjolmy+bc/b2reqhurphmuha9uotejv7n9ridxhgpc+neq0hnhwujxzrcwvf4wcrqzsegecqzyyrpiehctamzzepwfk9eju1a1bgrzu1zpxe1r6oijtaxokuookcndioaqiuoektp6bw9wu/wi/vufcxgc9z85xd9gfx1a/tqn34=</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="l1v+nvwnndd8x8c8v2qztoniuwe=">aaachhicbvdlssnafj3uv62vqes3g0vwfziq6eyounfzwt4gcwuymbrdzzjhziku0g9x46+4cagigxecf+m0zujbd1w4nhpvzl0nyhhv2nw/rcrk6tr6rnwztrw9s7tn7x90lmgljm0smjc9ccncaerammpgepkkieemdkprzczvphcpqejv9tgjiuedlcyui22kvn0wjeiixicfjqmaixg24bx0yec5wyaogi0gpg2njuk4elbv113hlqcxivesoijr6tufqsxwzkmqmunk+z6b6xccpkaykwktybxjeb6hafentrenkpwux03hivfialy0lwpyql8njogrnear6erid9winxp/8/xcj5fhhkzzrkmk5x8loynawflsmkasym3ghiasqdkv4igscgutz82e4c2evew6dcdzhe/uvn68luooginwde6bby5ae9ycfmgddb7bm3gfb9at9wk9wx/z1opvzhycp7c+fgcxfp84</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="c5tq+pzsrkxuddn5byednlyolcm=">aaachxicbvbnswmxem3wr1q/vj16crbbu9ktbb0irs8ek9hw6c4lm07b0cs7jnlckf0jxvwrxjwo4sgl+g9mt3vq1gcdj/dmkpkxjzxp43nftmftfwnzq7hd2tnd2z9wd49aok4vhsaneaweiqkbmwlnwwyhh0qberghdjs6mfvtmsjnynlvjgmeggwk6znkjjw6bi3ox4pwjhmu2ape3mnvfiu9hdbhfwcno9ggw0krwrhk9mlxlxsvlwnejx5oyihho+t+br2ypgkkozxo3fg9xirtogyjhgalinwqedoia+hykokahu6z62b4zco9bne0jq3o1n8tuyk0nojidgpihnrzm4v/ez3u9c/dkznjakdsxuf9lgmt43luumcuummnlhcqmn0v0yfrhbobammg4c+fvepa1yrvvfy7wrl+ncdrrcfofj0jh12gorpfddrefd2iz/sk3pwn58v5dz4wrqunnzlgf+b8/qcamp+4</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> <latexit sha1_base64="p4jtto0v5ou49ox5jwon3hnwr44=">aaacghicbvdlssnafj3uv62vqks3g0vwfrmrdkfqdooygn1agspkctmonuzczeqpoz/hxl9x40irt935n07tlrr6vodz7uwee4kum6ud58sqls2vrk6v1ysbm1vbo9xdvzzkmkmhsroeye5afhamokmz5tbjjza44naohjdtv/0aurfe3otrcn5m+ojfjbjtpf71pbslkncogbbxi8bqeczhl9jbxrabakbwlag9fa+whlbxrtm2uwd/je6c1nacjv510g0tmsugnovekc91uu3nrgpgoywr3uxbsuiq9mezvjaylj8xj43xkvfce0awixch/tzisazuka7mzez0qc16u/e/z8t0dohntkszbkfnh6kmy53gaus4zbko5indcjxmzmv0qcsh2nrzmsw4iy//ja1t23vs9+6svr+e11fgb+gqhsmxnam6ukun1equpaex9iberwfr1fqwpmejjwu+s49+wzp8a9ehnl8=</latexit> Budgeting Invariants 8i.4 weeks[i] =months[i] 8i.12 months[i] = years[i] 8i.weeks[i] < 0 =) font[i] =red 8i.weeks[i] >= 0 =) font[i] =black 8i.i 8i.i mod 2 = 0 =) bkg[i] =evenc mod 2 = 1 =) bkg[i] =oddc Code Interactive cells Inflation Backgrounds *
122 <latexit sha1_base64="ytonubwk7z5fmdpm5iu7okouxp8=">aaacnnicfvhbssqwee3rfb2t+ujl4cki4tkkoa8qxkbeervcxdiwju1nnzi0jumfzfgz/bhf/bvtbr+8d4qczs5hzsxemedaen67446mjo1pte7vpmdm5+brc4t3os0vwxzlraraeduoeiitw43adqaqykjgffr0uttvn1fpnia3pp9hkoldwnucuwnt3fpr0esvfqj4e7zghsspozyefzby/bvqt/mcbehtezpgyfs0kr/5p28ppai4taohhqhpuh0jyp7+0bzs/yfsghfrda/pdqn+ar8cdvlfdbf+fsqpyyumhgmqdcf3mhmoqdkccxypbbngzhqhd9ixmkesdtgynn2bvzujwtq0lzgllc+kazva92vkmzkar/29vir/q3vy09snbzzjcomjkxv1cgemhejwehofzii+bzqpbr0ce6skmmmvwrnl8l+p/bpcbtv9r+nfbdcoj6t1tjjlsklwie92yce5i9ekrziz7bw5586fc+6pe+lelvtxqtrl5eu47q8o6sxy</latexit> <latexit sha1_base64="ytonubwk7z5fmdpm5iu7okouxp8=">aaacnnicfvhbssqwee3rfb2t+ujl4cki4tkkoa8qxkbeervcxdiwju1nnzi0jumfzfgz/bhf/bvtbr+8d4qczs5hzsxemedaen67446mjo1pte7vpmdm5+brc4t3os0vwxzlraraeduoeiitw43adqaqykjgffr0uttvn1fpnia3pp9hkoldwnucuwnt3fpr0esvfqj4e7zghsspozyefzby/bvqt/mcbehtezpgyfs0kr/5p28ppai4taohhqhpuh0jyp7+0bzs/yfsghfrda/pdqn+ar8cdvlfdbf+fsqpyyumhgmqdcf3mhmoqdkccxypbbngzhqhd9ixmkesdtgynn2bvzujwtq0lzgllc+kazva92vkmzkar/29vir/q3vy09snbzzjcomjkxv1cgemhejwehofzii+bzqpbr0ce6skmmmvwrnl8l+p/bpcbtv9r+nfbdcoj6t1tjjlsklwie92yce5i9ekrziz7bw5586fc+6pe+lelvtxqtrl5eu47q8o6sxy</latexit> <latexit sha1_base64="ytonubwk7z5fmdpm5iu7okouxp8=">aaacnnicfvhbssqwee3rfb2t+ujl4cki4tkkoa8qxkbeervcxdiwju1nnzi0jumfzfgz/bhf/bvtbr+8d4qczs5hzsxemedaen67446mjo1pte7vpmdm5+brc4t3os0vwxzlraraeduoeiitw43adqaqykjgffr0uttvn1fpnia3pp9hkoldwnucuwnt3fpr0esvfqj4e7zghsspozyefzby/bvqt/mcbehtezpgyfs0kr/5p28ppai4taohhqhpuh0jyp7+0bzs/yfsghfrda/pdqn+ar8cdvlfdbf+fsqpyyumhgmqdcf3mhmoqdkccxypbbngzhqhd9ixmkesdtgynn2bvzujwtq0lzgllc+kazva92vkmzkar/29vir/q3vy09snbzzjcomjkxv1cgemhejwehofzii+bzqpbr0ce6skmmmvwrnl8l+p/bpcbtv9r+nfbdcoj6t1tjjlsklwie92yce5i9ekrziz7bw5586fc+6pe+lelvtxqtrl5eu47q8o6sxy</latexit> <latexit sha1_base64="ytonubwk7z5fmdpm5iu7okouxp8=">aaacnnicfvhbssqwee3rfb2t+ujl4cki4tkkoa8qxkbeervcxdiwju1nnzi0jumfzfgz/bhf/bvtbr+8d4qczs5hzsxemedaen67446mjo1pte7vpmdm5+brc4t3os0vwxzlraraeduoeiitw43adqaqykjgffr0uttvn1fpnia3pp9hkoldwnucuwnt3fpr0esvfqj4e7zghsspozyefzby/bvqt/mcbehtezpgyfs0kr/5p28ppai4taohhqhpuh0jyp7+0bzs/yfsghfrda/pdqn+ar8cdvlfdbf+fsqpyyumhgmqdcf3mhmoqdkccxypbbngzhqhd9ixmkesdtgynn2bvzujwtq0lzgllc+kazva92vkmzkar/29vir/q3vy09snbzzjcomjkxv1cgemhejwehofzii+bzqpbr0ce6skmmmvwrnl8l+p/bpcbtv9r+nfbdcoj6t1tjjlsklwie92yce5i9ekrziz7bw5586fc+6pe+lelvtxqtrl5eu47q8o6sxy</latexit> Split expenses Invariants 8i.2 mid[i] =me[i]+you[i] 8i.debt[i] =mid[i] you[i] 8i.debt[i] < 0 =) color[i] =black 8i.debt[i] >= 0 =) color[i] =red Code Interactive cells Backgrounds *
123 Outline Data invariant calculus Extensions Invariants for Security GUI invariants
124 Outline Data invariant calculus Extensions Invariants for Security GUI invariants
125 Formalisms
126 Formalisms
127 Formalisms Interesting Translation Rule
128 Formalisms What we need Formal problem definition Full translation semantics Proof of correctness
129 Formal Correctness Problem: Correctness:
130 Formal Correctness Problem: Given a program with arrays and invariants Correctness:
131 Formal Correctness Problem: Given a program with arrays and invariants Correctness: We find a program with augmented semantics
132 Formal Correctness Problem: Given a program with arrays and invariants Thank you, Reviewer A!!! Correctness: We find a program with augmented semantics
133 <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> Stronger Invariants 8i, j. i < j =) sorted[i] <sorted[j] Consider Sortedness
134 <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> Stronger Invariants 8i, j. i < j =) sorted[i] <sorted[j]
135 <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> Stronger Invariants 8i, j. i < j =) sorted[i] <sorted[j] Limited to maplike properties
136 <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> Stronger Invariants 8i, j. i < j =) sorted[i] <sorted[j] Cannot express :(
137 <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> Stronger Invariants 8i, j. i < j =) sorted[i] <sorted[j] Key insight: change of perspective!! Cannot express :(
138 <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> <latexit sha1_base64="w/rt8x1midbnkxmdveacwkmailc=">aaachnicbvbns8naen3ur1q/oh69lbbbg5refd14khrxwmf+qbrkzjntt91swu5gkkx9i178k148kcj40n/jts1bwx8mpn6bywzekhcmton8w7ml5zxvtfx6ywnza3vh3t2rqtivfko05rfsbeqbzwkqmmkojuqciqio9ab/m/hrdyavi8w9hitgr6qjwjtroo3uss+b7vgszje7wb0sho8xw1e4h5ssmutbyrvldahhfcnnvoe37kjtcqbai8tnsbflqltsz2yy0zqcosknsnmuk2h/skrmlmoo0ewvjit2sqc8qwwjqpnd6xsjfgsuejs7tqmnp+rvisgjlbpegemmio6qew8i/ud5qw5f+kmmklsdolnf7zrjhenjvjhkeqjma0milczcimmxsek1sbrgqndnx14ktdos65tcu7ni+tqli48o0ce6ri66qgv0iyqoiih6rm/ofb1zt9al9w59zfpzvjazj/7a+vobsv+haq==</latexit> Stronger Invariants 8i, j. i < j =) sorted[i] <sorted[j]
139 <latexit sha1_base64="qq0fpwg5lceds6ddut6clsgrw9k=">aaacdnicbzbps8mwgmbt+w/of1wpxojjiailfuephozepe5wm9cvkabpfpymjumfubyv4mwv4swdil49e/pbmg1fdpobwi/nfv/yvk+ymqq0635zpaxlldw18nply3nre8fe3wspkulmmlgwie9cpaijndq11yzcpzkgjgskhq6ujvx2pzgkcn6rhykjettjnkyyawn17vonfhixbqkdx2oohnqk8mkal3742au6dtv13kngingfveghrtf+7eqczwnhgjoklo+5qq5yjdxfjiwqnuyrfoeb6hhfiecjuue+pwcea8ajonnlpk7h1p09kaneqwesms4e6b6ar03m/2p+pupzikc8ztthepzrndgobzxkaymqcdzsaabhsc2ueperrfibbcsmbg/+5evontie63g3p9x6zrfhgryaq3aephag6uaaneatypaansaleluerwfrzxqftzasymyf/jh18q2v5zso</latexit> <latexit sha1_base64="qq0fpwg5lceds6ddut6clsgrw9k=">aaacdnicbzbps8mwgmbt+w/of1wpxojjiailfuephozepe5wm9cvkabpfpymjumfubyv4mwv4swdil49e/pbmg1fdpobwi/nfv/yvk+ymqq0635zpaxlldw18nply3nre8fe3wspkulmmlgwie9cpaijndq11yzcpzkgjgskhq6ujvx2pzgkcn6rhykjettjnkyyawn17vonfhixbqkdx2oohnqk8mkal3742au6dtv13kngingfveghrtf+7eqczwnhgjoklo+5qq5yjdxfjiwqnuyrfoeb6hhfiecjuue+pwcea8ajonnlpk7h1p09kaneqwesms4e6b6ar03m/2p+pupzikc8ztthepzrndgobzxkaymqcdzsaabhsc2ueperrfibbcsmbg/+5evontie63g3p9x6zrfhgryaq3aephag6uaaneatypaansaleluerwfrzxqftzasymyf/jh18q2v5zso</latexit> <latexit sha1_base64="qq0fpwg5lceds6ddut6clsgrw9k=">aaacdnicbzbps8mwgmbt+w/of1wpxojjiailfuephozepe5wm9cvkabpfpymjumfubyv4mwv4swdil49e/pbmg1fdpobwi/nfv/yvk+ymqq0635zpaxlldw18nply3nre8fe3wspkulmmlgwie9cpaijndq11yzcpzkgjgskhq6ujvx2pzgkcn6rhykjettjnkyyawn17vonfhixbqkdx2oohnqk8mkal3742au6dtv13kngingfveghrtf+7eqczwnhgjoklo+5qq5yjdxfjiwqnuyrfoeb6hhfiecjuue+pwcea8ajonnlpk7h1p09kaneqwesms4e6b6ar03m/2p+pupzikc8ztthepzrndgobzxkaymqcdzsaabhsc2ueperrfibbcsmbg/+5evontie63g3p9x6zrfhgryaq3aephag6uaaneatypaansaleluerwfrzxqftzasymyf/jh18q2v5zso</latexit> <latexit sha1_base64="qq0fpwg5lceds6ddut6clsgrw9k=">aaacdnicbzbps8mwgmbt+w/of1wpxojjiailfuephozepe5wm9cvkabpfpymjumfubyv4mwv4swdil49e/pbmg1fdpobwi/nfv/yvk+ymqq0635zpaxlldw18nply3nre8fe3wspkulmmlgwie9cpaijndq11yzcpzkgjgskhq6ujvx2pzgkcn6rhykjettjnkyyawn17vonfhixbqkdx2oohnqk8mkal3742au6dtv13kngingfveghrtf+7eqczwnhgjoklo+5qq5yjdxfjiwqnuyrfoeb6hhfiecjuue+pwcea8ajonnlpk7h1p09kaneqwesms4e6b6ar03m/2p+pupzikc8ztthepzrndgobzxkaymqcdzsaabhsc2ueperrfibbcsmbg/+5evontie63g3p9x6zrfhgryaq3aephag6uaaneatypaansaleluerwfrzxqftzasymyf/jh18q2v5zso</latexit> <latexit sha1_base64="qzfx2szoil8eexwtgl/a7rtix+o=">aaacinicbvdjsgnbeo2jw4zbqecvjueqlgfgbbu8bl14jgawmblct6esdnkz0n0jhch5fs/+ihcpinos/bg7i6cjdwoe71vrvs9iojpktj+n3mli0vjkfrwwtr6xuwvu71rlnaokfrrzwnqdiogzccqkkq71raajaw61ohc98mv3icslozvvt8apsttiluaj0lldvpbassccy3bctfbwibm+xf3ssvbvb4k9d8tykgi6znfodz9y/izztc17ddxpnckpoinkdfpda8y0dsfslbmpxcdolj8rorjlmch4qyse0b5pg6tprekqfjz+cyaptnle+lzdkcjj9fderkip+2ggo0oionlwg4n/ew6qwud+xqikvrdryajwyrgk8sgv3gqcqoj9tqgvtn+kayciqpvotabdcgzfnifve8uxlef2tfi6msarr3tohx0ib52herpbzvrbfd2gj/scxo1h49l4mz4mrtljorol/sd4+gy4nqi8</latexit> <latexit sha1_base64="qzfx2szoil8eexwtgl/a7rtix+o=">aaacinicbvdjsgnbeo2jw4zbqecvjueqlgfgbbu8bl14jgawmblct6esdnkz0n0jhch5fs/+ihcpinos/bg7i6cjdwoe71vrvs9iojpktj+n3mli0vjkfrwwtr6xuwvu71rlnaokfrrzwnqdiogzccqkkq71raajaw61ohc98mv3icslozvvt8apsttiluaj0lldvpbassccy3bctfbwibm+xf3ssvbvb4k9d8tykgi6znfodz9y/izztc17ddxpnckpoinkdfpda8y0dsfslbmpxcdolj8rorjlmch4qyse0b5pg6tprekqfjz+cyaptnle+lzdkcjj9fderkip+2ggo0oionlwg4n/ew6qwud+xqikvrdryajwyrgk8sgv3gqcqoj9tqgvtn+kayciqpvotabdcgzfnifve8uxlef2tfi6msarr3tohx0ib52herpbzvrbfd2gj/scxo1h49l4mz4mrtljorol/sd4+gy4nqi8</latexit> <latexit sha1_base64="qzfx2szoil8eexwtgl/a7rtix+o=">aaacinicbvdjsgnbeo2jw4zbqecvjueqlgfgbbu8bl14jgawmblct6esdnkz0n0jhch5fs/+ihcpinos/bg7i6cjdwoe71vrvs9iojpktj+n3mli0vjkfrwwtr6xuwvu71rlnaokfrrzwnqdiogzccqkkq71raajaw61ohc98mv3icslozvvt8apsttiluaj0lldvpbassccy3bctfbwibm+xf3ssvbvb4k9d8tykgi6znfodz9y/izztc17ddxpnckpoinkdfpda8y0dsfslbmpxcdolj8rorjlmch4qyse0b5pg6tprekqfjz+cyaptnle+lzdkcjj9fderkip+2ggo0oionlwg4n/ew6qwud+xqikvrdryajwyrgk8sgv3gqcqoj9tqgvtn+kayciqpvotabdcgzfnifve8uxlef2tfi6msarr3tohx0ib52herpbzvrbfd2gj/scxo1h49l4mz4mrtljorol/sd4+gy4nqi8</latexit> <latexit sha1_base64="qzfx2szoil8eexwtgl/a7rtix+o=">aaacinicbvdjsgnbeo2jw4zbqecvjueqlgfgbbu8bl14jgawmblct6esdnkz0n0jhch5fs/+ihcpinos/bg7i6cjdwoe71vrvs9iojpktj+n3mli0vjkfrwwtr6xuwvu71rlnaokfrrzwnqdiogzccqkkq71raajaw61ohc98mv3icslozvvt8apsttiluaj0lldvpbassccy3bctfbwibm+xf3ssvbvb4k9d8tykgi6znfodz9y/izztc17ddxpnckpoinkdfpda8y0dsfslbmpxcdolj8rorjlmch4qyse0b5pg6tprekqfjz+cyaptnle+lzdkcjj9fderkip+2ggo0oionlwg4n/ew6qwud+xqikvrdryajwyrgk8sgv3gqcqoj9tqgvtn+kayciqpvotabdcgzfnifve8uxlef2tfi6msarr3tohx0ib52herpbzvrbfd2gj/scxo1h49l4mz4mrtljorol/sd4+gy4nqi8</latexit> 8i, j. i < j =) sorted[i] <sorted[i + 1] 8i. sorted[i] <sorted[i + 1]
140 <latexit sha1_base64="qq0fpwg5lceds6ddut6clsgrw9k=">aaacdnicbzbps8mwgmbt+w/of1wpxojjiailfuephozepe5wm9cvkabpfpymjumfubyv4mwv4swdil49e/pbmg1fdpobwi/nfv/yvk+ymqq0635zpaxlldw18nply3nre8fe3wspkulmmlgwie9cpaijndq11yzcpzkgjgskhq6ujvx2pzgkcn6rhykjettjnkyyawn17vonfhixbqkdx2oohnqk8mkal3742au6dtv13kngingfveghrtf+7eqczwnhgjoklo+5qq5yjdxfjiwqnuyrfoeb6hhfiecjuue+pwcea8ajonnlpk7h1p09kaneqwesms4e6b6ar03m/2p+pupzikc8ztthepzrndgobzxkaymqcdzsaabhsc2ueperrfibbcsmbg/+5evontie63g3p9x6zrfhgryaq3aephag6uaaneatypaansaleluerwfrzxqftzasymyf/jh18q2v5zso</latexit> <latexit sha1_base64="qq0fpwg5lceds6ddut6clsgrw9k=">aaacdnicbzbps8mwgmbt+w/of1wpxojjiailfuephozepe5wm9cvkabpfpymjumfubyv4mwv4swdil49e/pbmg1fdpobwi/nfv/yvk+ymqq0635zpaxlldw18nply3nre8fe3wspkulmmlgwie9cpaijndq11yzcpzkgjgskhq6ujvx2pzgkcn6rhykjettjnkyyawn17vonfhixbqkdx2oohnqk8mkal3742au6dtv13kngingfveghrtf+7eqczwnhgjoklo+5qq5yjdxfjiwqnuyrfoeb6hhfiecjuue+pwcea8ajonnlpk7h1p09kaneqwesms4e6b6ar03m/2p+pupzikc8ztthepzrndgobzxkaymqcdzsaabhsc2ueperrfibbcsmbg/+5evontie63g3p9x6zrfhgryaq3aephag6uaaneatypaansaleluerwfrzxqftzasymyf/jh18q2v5zso</latexit> <latexit sha1_base64="qq0fpwg5lceds6ddut6clsgrw9k=">aaacdnicbzbps8mwgmbt+w/of1wpxojjiailfuephozepe5wm9cvkabpfpymjumfubyv4mwv4swdil49e/pbmg1fdpobwi/nfv/yvk+ymqq0635zpaxlldw18nply3nre8fe3wspkulmmlgwie9cpaijndq11yzcpzkgjgskhq6ujvx2pzgkcn6rhykjettjnkyyawn17vonfhixbqkdx2oohnqk8mkal3742au6dtv13kngingfveghrtf+7eqczwnhgjoklo+5qq5yjdxfjiwqnuyrfoeb6hhfiecjuue+pwcea8ajonnlpk7h1p09kaneqwesms4e6b6ar03m/2p+pupzikc8ztthepzrndgobzxkaymqcdzsaabhsc2ueperrfibbcsmbg/+5evontie63g3p9x6zrfhgryaq3aephag6uaaneatypaansaleluerwfrzxqftzasymyf/jh18q2v5zso</latexit> <latexit sha1_base64="qq0fpwg5lceds6ddut6clsgrw9k=">aaacdnicbzbps8mwgmbt+w/of1wpxojjiailfuephozepe5wm9cvkabpfpymjumfubyv4mwv4swdil49e/pbmg1fdpobwi/nfv/yvk+ymqq0635zpaxlldw18nply3nre8fe3wspkulmmlgwie9cpaijndq11yzcpzkgjgskhq6ujvx2pzgkcn6rhykjettjnkyyawn17vonfhixbqkdx2oohnqk8mkal3742au6dtv13kngingfveghrtf+7eqczwnhgjoklo+5qq5yjdxfjiwqnuyrfoeb6hhfiecjuue+pwcea8ajonnlpk7h1p09kaneqwesms4e6b6ar03m/2p+pupzikc8ztthepzrndgobzxkaymqcdzsaabhsc2ueperrfibbcsmbg/+5evontie63g3p9x6zrfhgryaq3aephag6uaaneatypaansaleluerwfrzxqftzasymyf/jh18q2v5zso</latexit> <latexit sha1_base64="qzfx2szoil8eexwtgl/a7rtix+o=">aaacinicbvdjsgnbeo2jw4zbqecvjueqlgfgbbu8bl14jgawmblct6esdnkz0n0jhch5fs/+ihcpinos/bg7i6cjdwoe71vrvs9iojpktj+n3mli0vjkfrwwtr6xuwvu71rlnaokfrrzwnqdiogzccqkkq71raajaw61ohc98mv3icslozvvt8apsttiluaj0lldvpbassccy3bctfbwibm+xf3ssvbvb4k9d8tykgi6znfodz9y/izztc17ddxpnckpoinkdfpda8y0dsfslbmpxcdolj8rorjlmch4qyse0b5pg6tprekqfjz+cyaptnle+lzdkcjj9fderkip+2ggo0oionlwg4n/ew6qwud+xqikvrdryajwyrgk8sgv3gqcqoj9tqgvtn+kayciqpvotabdcgzfnifve8uxlef2tfi6msarr3tohx0ib52herpbzvrbfd2gj/scxo1h49l4mz4mrtljorol/sd4+gy4nqi8</latexit> <latexit sha1_base64="qzfx2szoil8eexwtgl/a7rtix+o=">aaacinicbvdjsgnbeo2jw4zbqecvjueqlgfgbbu8bl14jgawmblct6esdnkz0n0jhch5fs/+ihcpinos/bg7i6cjdwoe71vrvs9iojpktj+n3mli0vjkfrwwtr6xuwvu71rlnaokfrrzwnqdiogzccqkkq71raajaw61ohc98mv3icslozvvt8apsttiluaj0lldvpbassccy3bctfbwibm+xf3ssvbvb4k9d8tykgi6znfodz9y/izztc17ddxpnckpoinkdfpda8y0dsfslbmpxcdolj8rorjlmch4qyse0b5pg6tprekqfjz+cyaptnle+lzdkcjj9fderkip+2ggo0oionlwg4n/ew6qwud+xqikvrdryajwyrgk8sgv3gqcqoj9tqgvtn+kayciqpvotabdcgzfnifve8uxlef2tfi6msarr3tohx0ib52herpbzvrbfd2gj/scxo1h49l4mz4mrtljorol/sd4+gy4nqi8</latexit> <latexit sha1_base64="qzfx2szoil8eexwtgl/a7rtix+o=">aaacinicbvdjsgnbeo2jw4zbqecvjueqlgfgbbu8bl14jgawmblct6esdnkz0n0jhch5fs/+ihcpinos/bg7i6cjdwoe71vrvs9iojpktj+n3mli0vjkfrwwtr6xuwvu71rlnaokfrrzwnqdiogzccqkkq71raajaw61ohc98mv3icslozvvt8apsttiluaj0lldvpbassccy3bctfbwibm+xf3ssvbvb4k9d8tykgi6znfodz9y/izztc17ddxpnckpoinkdfpda8y0dsfslbmpxcdolj8rorjlmch4qyse0b5pg6tprekqfjz+cyaptnle+lzdkcjj9fderkip+2ggo0oionlwg4n/ew6qwud+xqikvrdryajwyrgk8sgv3gqcqoj9tqgvtn+kayciqpvotabdcgzfnifve8uxlef2tfi6msarr3tohx0ib52herpbzvrbfd2gj/scxo1h49l4mz4mrtljorol/sd4+gy4nqi8</latexit> <latexit sha1_base64="qzfx2szoil8eexwtgl/a7rtix+o=">aaacinicbvdjsgnbeo2jw4zbqecvjueqlgfgbbu8bl14jgawmblct6esdnkz0n0jhch5fs/+ihcpinos/bg7i6cjdwoe71vrvs9iojpktj+n3mli0vjkfrwwtr6xuwvu71rlnaokfrrzwnqdiogzccqkkq71raajaw61ohc98mv3icslozvvt8apsttiluaj0lldvpbassccy3bctfbwibm+xf3ssvbvb4k9d8tykgi6znfodz9y/izztc17ddxpnckpoinkdfpda8y0dsfslbmpxcdolj8rorjlmch4qyse0b5pg6tprekqfjz+cyaptnle+lzdkcjj9fderkip+2ggo0oionlwg4n/ew6qwud+xqikvrdryajwyrgk8sgv3gqcqoj9tqgvtn+kayciqpvotabdcgzfnifve8uxlef2tfi6msarr3tohx0ib52herpbzvrbfd2gj/scxo1h49l4mz4mrtljorol/sd4+gy4nqi8</latexit> 8i, j. i < j =) Hard sorted[i] <sorted[i + 1] Easy 8i. sorted[i] <sorted[i + 1]
141 <latexit sha1_base64="9j1rtaqqu6p8b0ow3gywf5fy8kq=">aaacahicbvbns8naej34wetx1imhl4tfqfbcioiei148vraf0iay2w7abtebslsrsmkp/huvhhtx6s/w5r9x2+agrq8ghu/nmdmvsdht2nw/rzxvtfwnzdxwfntnd2/fpjisqtivhfzjzgpzclcinala1uxz2kgkxvhaat0y3e79+iovisxiqq8t6ke4k1jicnzgatvhrtcwmhpesn0htsaoumql1d9v2wxxcwday8tlsaeyvnr2v6stkzsiqhoolwp6bql9ezaaeu7h+vaqailjahdp01cbi6r80eybmtozsgezs0wjjwbq74krjpqarohpjlduquvvkv7nnvmdxvsjjpjuu0hmi8kuix2jarqowyqlmg8nwuqycysipswx0sazvanbw3x5mdquhm91vpvlqvkmiymhj3akrfdgcspwbxwoaoexpmmrvflp1ov1bn3mw1esboyi/sd6/aecs5s2</latexit> <latexit sha1_base64="9j1rtaqqu6p8b0ow3gywf5fy8kq=">aaacahicbvbns8naej34wetx1imhl4tfqfbcioiei148vraf0iay2w7abtebslsrsmkp/huvhhtx6s/w5r9x2+agrq8ghu/nmdmvsdht2nw/rzxvtfwnzdxwfntnd2/fpjisqtivhfzjzgpzclcinala1uxz2kgkxvhaat0y3e79+iovisxiqq8t6ke4k1jicnzgatvhrtcwmhpesn0htsaoumql1d9v2wxxcwday8tlsaeyvnr2v6stkzsiqhoolwp6bql9ezaaeu7h+vaqailjahdp01cbi6r80eybmtozsgezs0wjjwbq74krjpqarohpjlduquvvkv7nnvmdxvsjjpjuu0hmi8kuix2jarqowyqlmg8nwuqycysipswx0sazvanbw3x5mdquhm91vpvlqvkmiymhj3akrfdgcspwbxwoaoexpmmrvflp1ov1bn3mw1esboyi/sd6/aecs5s2</latexit> <latexit sha1_base64="9j1rtaqqu6p8b0ow3gywf5fy8kq=">aaacahicbvbns8naej34wetx1imhl4tfqfbcioiei148vraf0iay2w7abtebslsrsmkp/huvhhtx6s/w5r9x2+agrq8ghu/nmdmvsdht2nw/rzxvtfwnzdxwfntnd2/fpjisqtivhfzjzgpzclcinala1uxz2kgkxvhaat0y3e79+iovisxiqq8t6ke4k1jicnzgatvhrtcwmhpesn0htsaoumql1d9v2wxxcwday8tlsaeyvnr2v6stkzsiqhoolwp6bql9ezaaeu7h+vaqailjahdp01cbi6r80eybmtozsgezs0wjjwbq74krjpqarohpjlduquvvkv7nnvmdxvsjjpjuu0hmi8kuix2jarqowyqlmg8nwuqycysipswx0sazvanbw3x5mdquhm91vpvlqvkmiymhj3akrfdgcspwbxwoaoexpmmrvflp1ov1bn3mw1esboyi/sd6/aecs5s2</latexit> <latexit sha1_base64="9j1rtaqqu6p8b0ow3gywf5fy8kq=">aaacahicbvbns8naej34wetx1imhl4tfqfbcioiei148vraf0iay2w7abtebslsrsmkp/huvhhtx6s/w5r9x2+agrq8ghu/nmdmvsdht2nw/rzxvtfwnzdxwfntnd2/fpjisqtivhfzjzgpzclcinala1uxz2kgkxvhaat0y3e79+iovisxiqq8t6ke4k1jicnzgatvhrtcwmhpesn0htsaoumql1d9v2wxxcwday8tlsaeyvnr2v6stkzsiqhoolwp6bql9ezaaeu7h+vaqailjahdp01cbi6r80eybmtozsgezs0wjjwbq74krjpqarohpjlduquvvkv7nnvmdxvsjjpjuu0hmi8kuix2jarqowyqlmg8nwuqycysipswx0sazvanbw3x5mdquhm91vpvlqvkmiymhj3akrfdgcspwbxwoaoexpmmrvflp1ov1bn3mw1esboyi/sd6/aecs5s2</latexit> <latexit sha1_base64="/u9z2c+nkvumm7lkdb869+4hdso=">aaab/xicbvdlssnafl2pr1pf8bfzm1ieihisexrzdooygn1ag8pkommhtizhziluupwvny4ucet/upnvnlzzaoubgcm593lpncdhtgnx/byks8srq2vf9dlg5tb2jr2711bxkgmtk5jhshvgrtkttk6z5rsvsiqjgnnmmlyz+m0hkhwlxb0ejdspcf+wkbgsjds1dzphldhnidmovmfnij16j1277drufgiredkpq45a1/7q9gksrlrowrfsbc9ntj9hqrnhdfzqpiommaxxn7ynftiiys+m6cfo2cg9zgkyjzsaqr83mhwpnyocmxlhpvdz3kt8z2unorzymyasvfnbzofclcmdo0kvqmckjzqpdmfempmvkqgwmghtwmmu4m1/eze0zh3pdby7i3l1oq+jcidwbbxw4bkqcas1qaobr3igv3iznqwx6936mi0wrhxnh/7a+vwbc4stqq==</latexit> <latexit sha1_base64="/u9z2c+nkvumm7lkdb869+4hdso=">aaab/xicbvdlssnafl2pr1pf8bfzm1ieihisexrzdooygn1ag8pkommhtizhziluupwvny4ucet/upnvnlzzaoubgcm593lpncdhtgnx/byks8srq2vf9dlg5tb2jr2711bxkgmtk5jhshvgrtkttk6z5rsvsiqjgnnmmlyz+m0hkhwlxb0ejdspcf+wkbgsjds1dzphldhnidmovmfnij16j1277drufgiredkpq45a1/7q9gksrlrowrfsbc9ntj9hqrnhdfzqpiommaxxn7ynftiiys+m6cfo2cg9zgkyjzsaqr83mhwpnyocmxlhpvdz3kt8z2unorzymyasvfnbzofclcmdo0kvqmckjzqpdmfempmvkqgwmghtwmmu4m1/eze0zh3pdby7i3l1oq+jcidwbbxw4bkqcas1qaobr3igv3iznqwx6936mi0wrhxnh/7a+vwbc4stqq==</latexit> <latexit sha1_base64="/u9z2c+nkvumm7lkdb869+4hdso=">aaab/xicbvdlssnafl2pr1pf8bfzm1ieihisexrzdooygn1ag8pkommhtizhziluupwvny4ucet/upnvnlzzaoubgcm593lpncdhtgnx/byks8srq2vf9dlg5tb2jr2711bxkgmtk5jhshvgrtkttk6z5rsvsiqjgnnmmlyz+m0hkhwlxb0ejdspcf+wkbgsjds1dzphldhnidmovmfnij16j1277drufgiredkpq45a1/7q9gksrlrowrfsbc9ntj9hqrnhdfzqpiommaxxn7ynftiiys+m6cfo2cg9zgkyjzsaqr83mhwpnyocmxlhpvdz3kt8z2unorzymyasvfnbzofclcmdo0kvqmckjzqpdmfempmvkqgwmghtwmmu4m1/eze0zh3pdby7i3l1oq+jcidwbbxw4bkqcas1qaobr3igv3iznqwx6936mi0wrhxnh/7a+vwbc4stqq==</latexit> <latexit sha1_base64="/u9z2c+nkvumm7lkdb869+4hdso=">aaab/xicbvdlssnafl2pr1pf8bfzm1ieihisexrzdooygn1ag8pkommhtizhziluupwvny4ucet/upnvnlzzaoubgcm593lpncdhtgnx/byks8srq2vf9dlg5tb2jr2711bxkgmtk5jhshvgrtkttk6z5rsvsiqjgnnmmlyz+m0hkhwlxb0ejdspcf+wkbgsjds1dzphldhnidmovmfnij16j1277drufgiredkpq45a1/7q9gksrlrowrfsbc9ntj9hqrnhdfzqpiommaxxn7ynftiiys+m6cfo2cg9zgkyjzsaqr83mhwpnyocmxlhpvdz3kt8z2unorzymyasvfnbzofclcmdo0kvqmckjzqpdmfempmvkqgwmghtwmmu4m1/eze0zh3pdby7i3l1oq+jcidwbbxw4bkqcas1qaobr3igv3iznqwx6936mi0wrhxnh/7a+vwbc4stqq==</latexit> Hard 8i, j. P (i, j) Easy 8i.P (i, i + 1)
142 <latexit sha1_base64="9j1rtaqqu6p8b0ow3gywf5fy8kq=">aaacahicbvbns8naej34wetx1imhl4tfqfbcioiei148vraf0iay2w7abtebslsrsmkp/huvhhtx6s/w5r9x2+agrq8ghu/nmdmvsdht2nw/rzxvtfwnzdxwfntnd2/fpjisqtivhfzjzgpzclcinala1uxz2kgkxvhaat0y3e79+iovisxiqq8t6ke4k1jicnzgatvhrtcwmhpesn0htsaoumql1d9v2wxxcwday8tlsaeyvnr2v6stkzsiqhoolwp6bql9ezaaeu7h+vaqailjahdp01cbi6r80eybmtozsgezs0wjjwbq74krjpqarohpjlduquvvkv7nnvmdxvsjjpjuu0hmi8kuix2jarqowyqlmg8nwuqycysipswx0sazvanbw3x5mdquhm91vpvlqvkmiymhj3akrfdgcspwbxwoaoexpmmrvflp1ov1bn3mw1esboyi/sd6/aecs5s2</latexit> <latexit sha1_base64="9j1rtaqqu6p8b0ow3gywf5fy8kq=">aaacahicbvbns8naej34wetx1imhl4tfqfbcioiei148vraf0iay2w7abtebslsrsmkp/huvhhtx6s/w5r9x2+agrq8ghu/nmdmvsdht2nw/rzxvtfwnzdxwfntnd2/fpjisqtivhfzjzgpzclcinala1uxz2kgkxvhaat0y3e79+iovisxiqq8t6ke4k1jicnzgatvhrtcwmhpesn0htsaoumql1d9v2wxxcwday8tlsaeyvnr2v6stkzsiqhoolwp6bql9ezaaeu7h+vaqailjahdp01cbi6r80eybmtozsgezs0wjjwbq74krjpqarohpjlduquvvkv7nnvmdxvsjjpjuu0hmi8kuix2jarqowyqlmg8nwuqycysipswx0sazvanbw3x5mdquhm91vpvlqvkmiymhj3akrfdgcspwbxwoaoexpmmrvflp1ov1bn3mw1esboyi/sd6/aecs5s2</latexit> <latexit sha1_base64="9j1rtaqqu6p8b0ow3gywf5fy8kq=">aaacahicbvbns8naej34wetx1imhl4tfqfbcioiei148vraf0iay2w7abtebslsrsmkp/huvhhtx6s/w5r9x2+agrq8ghu/nmdmvsdht2nw/rzxvtfwnzdxwfntnd2/fpjisqtivhfzjzgpzclcinala1uxz2kgkxvhaat0y3e79+iovisxiqq8t6ke4k1jicnzgatvhrtcwmhpesn0htsaoumql1d9v2wxxcwday8tlsaeyvnr2v6stkzsiqhoolwp6bql9ezaaeu7h+vaqailjahdp01cbi6r80eybmtozsgezs0wjjwbq74krjpqarohpjlduquvvkv7nnvmdxvsjjpjuu0hmi8kuix2jarqowyqlmg8nwuqycysipswx0sazvanbw3x5mdquhm91vpvlqvkmiymhj3akrfdgcspwbxwoaoexpmmrvflp1ov1bn3mw1esboyi/sd6/aecs5s2</latexit> <latexit sha1_base64="9j1rtaqqu6p8b0ow3gywf5fy8kq=">aaacahicbvbns8naej34wetx1imhl4tfqfbcioiei148vraf0iay2w7abtebslsrsmkp/huvhhtx6s/w5r9x2+agrq8ghu/nmdmvsdht2nw/rzxvtfwnzdxwfntnd2/fpjisqtivhfzjzgpzclcinala1uxz2kgkxvhaat0y3e79+iovisxiqq8t6ke4k1jicnzgatvhrtcwmhpesn0htsaoumql1d9v2wxxcwday8tlsaeyvnr2v6stkzsiqhoolwp6bql9ezaaeu7h+vaqailjahdp01cbi6r80eybmtozsgezs0wjjwbq74krjpqarohpjlduquvvkv7nnvmdxvsjjpjuu0hmi8kuix2jarqowyqlmg8nwuqycysipswx0sazvanbw3x5mdquhm91vpvlqvkmiymhj3akrfdgcspwbxwoaoexpmmrvflp1ov1bn3mw1esboyi/sd6/aecs5s2</latexit> <latexit sha1_base64="/u9z2c+nkvumm7lkdb869+4hdso=">aaab/xicbvdlssnafl2pr1pf8bfzm1ieihisexrzdooygn1ag8pkommhtizhziluupwvny4ucet/upnvnlzzaoubgcm593lpncdhtgnx/byks8srq2vf9dlg5tb2jr2711bxkgmtk5jhshvgrtkttk6z5rsvsiqjgnnmmlyz+m0hkhwlxb0ejdspcf+wkbgsjds1dzphldhnidmovmfnij16j1277drufgiredkpq45a1/7q9gksrlrowrfsbc9ntj9hqrnhdfzqpiommaxxn7ynftiiys+m6cfo2cg9zgkyjzsaqr83mhwpnyocmxlhpvdz3kt8z2unorzymyasvfnbzofclcmdo0kvqmckjzqpdmfempmvkqgwmghtwmmu4m1/eze0zh3pdby7i3l1oq+jcidwbbxw4bkqcas1qaobr3igv3iznqwx6936mi0wrhxnh/7a+vwbc4stqq==</latexit> <latexit sha1_base64="/u9z2c+nkvumm7lkdb869+4hdso=">aaab/xicbvdlssnafl2pr1pf8bfzm1ieihisexrzdooygn1ag8pkommhtizhziluupwvny4ucet/upnvnlzzaoubgcm593lpncdhtgnx/byks8srq2vf9dlg5tb2jr2711bxkgmtk5jhshvgrtkttk6z5rsvsiqjgnnmmlyz+m0hkhwlxb0ejdspcf+wkbgsjds1dzphldhnidmovmfnij16j1277drufgiredkpq45a1/7q9gksrlrowrfsbc9ntj9hqrnhdfzqpiommaxxn7ynftiiys+m6cfo2cg9zgkyjzsaqr83mhwpnyocmxlhpvdz3kt8z2unorzymyasvfnbzofclcmdo0kvqmckjzqpdmfempmvkqgwmghtwmmu4m1/eze0zh3pdby7i3l1oq+jcidwbbxw4bkqcas1qaobr3igv3iznqwx6936mi0wrhxnh/7a+vwbc4stqq==</latexit> <latexit sha1_base64="/u9z2c+nkvumm7lkdb869+4hdso=">aaab/xicbvdlssnafl2pr1pf8bfzm1ieihisexrzdooygn1ag8pkommhtizhziluupwvny4ucet/upnvnlzzaoubgcm593lpncdhtgnx/byks8srq2vf9dlg5tb2jr2711bxkgmtk5jhshvgrtkttk6z5rsvsiqjgnnmmlyz+m0hkhwlxb0ejdspcf+wkbgsjds1dzphldhnidmovmfnij16j1277drufgiredkpq45a1/7q9gksrlrowrfsbc9ntj9hqrnhdfzqpiommaxxn7ynftiiys+m6cfo2cg9zgkyjzsaqr83mhwpnyocmxlhpvdz3kt8z2unorzymyasvfnbzofclcmdo0kvqmckjzqpdmfempmvkqgwmghtwmmu4m1/eze0zh3pdby7i3l1oq+jcidwbbxw4bkqcas1qaobr3igv3iznqwx6936mi0wrhxnh/7a+vwbc4stqq==</latexit> <latexit sha1_base64="/u9z2c+nkvumm7lkdb869+4hdso=">aaab/xicbvdlssnafl2pr1pf8bfzm1ieihisexrzdooygn1ag8pkommhtizhziluupwvny4ucet/upnvnlzzaoubgcm593lpncdhtgnx/byks8srq2vf9dlg5tb2jr2711bxkgmtk5jhshvgrtkttk6z5rsvsiqjgnnmmlyz+m0hkhwlxb0ejdspcf+wkbgsjds1dzphldhnidmovmfnij16j1277drufgiredkpq45a1/7q9gksrlrowrfsbc9ntj9hqrnhdfzqpiommaxxn7ynftiiys+m6cfo2cg9zgkyjzsaqr83mhwpnyocmxlhpvdz3kt8z2unorzymyasvfnbzofclcmdo0kvqmckjzqpdmfempmvkqgwmghtwmmu4m1/eze0zh3pdby7i3l1oq+jcidwbbxw4bkqcas1qaobr3igv3iznqwx6936mi0wrhxnh/7a+vwbc4stqq==</latexit> Hard 8i, j. P (i, j) Thanks Nadia!! Easy 8i.P (i, i + 1)
143 Synthesizing Insert adjacent (lo, hi) in (sorted) { lo < hi
144 Synthesizing Insert adjacent (lo, hi) in (sorted) { lo < hi sorted = sorted + newelem
145 Synthesizing Insert adjacent (lo, hi) in (sorted) { lo < hi sorted = sorted + newelem sorted = foldl adder ([], false) sorted adder (es, d) next =...
146 Synthesizing Insert adjacent (lo, hi) in (sorted) { lo < hi sorted = sorted + newelem But in imperative language sorted = foldl adder ([], false) sorted adder (es, d) next =...
147 Implications Not clear need to adjust at least 1) loop translation 2) synthesis Formal correctness would help!!
148 Outline Data invariant calculus Extensions Invariants for Security GUI invariants
149 Outline Data invariant calculus Extensions Invariants for Security GUI invariants
150 Security is really hard
151
152
153 Hot off the presses!! September 28
154 Manual Security Invariants Invariant: All urls are in the urlset
155 Manual Security Invariants Invariant: All urls are in the urlset All connections use the urlset
156 Manual Security Invariants Invariant: All urls are in the urlset All connections use the urlset
Machine Learning for Data Science (CS4786) Lecture11. Random Projections & Canonical Correlation Analysis
Machine Learning for Data Science (CS4786) Lecture11 5 Random Projections & Canonical Correlation Analysis The Tall, THE FAT AND THE UGLY n X d The Tall, THE FAT AND THE UGLY d X > n X d n = n d d The
Bardziej szczegółowoNew Roads to Cryptopia. Amit Sahai. An NSF Frontier Center
New Roads to Cryptopia Amit Sahai An NSF Frontier Center OPACity Panel, May 19, 2019 New Roads to Cryptopia What about all this space? Cryptography = Hardness* PKE RSA MPC DDH ZK Signatures Factoring IBE
Bardziej szczegółowoAnalysis of Movie Profitability STAT 469 IN CLASS ANALYSIS #2
Analysis of Movie Profitability STAT 469 IN CLASS ANALYSIS #2 aaaklnictzzjb9tgfmcnadpg7oy0lxa9edva9kkapdarhyk2k7gourinlwsweyzikuyiigvyleiv/cv767fpf/5crc1xt9va5mx7w3m/ecuqw1kuztpx/rl3/70h73/w4cog9dhhn3z62d6jzy+yzj766txpoir9nzszisjynetqr+rvlfvyoozu5xbybpsxb1wahul8phczdt2v4zgchb7uecwphlyigrgkjcyiflfyci0kxnmr4z6kw0jsokvot8isntpa3gbknlcufiv/h+hh+eur4fomd417rvtfjoit5pfju6yxiab2fmwk0y/feuybobqk+axnke8xzjjhfyd8kkpl9zdoddkazd5j6bzpemjb64smjb6vb4xmehysu08lsrszopxftlzee130jcb0zjxy7r5wa2f1s2off2+dyatrughnrtpkuprlcpu55zlxpss/yqe2eamjkcf0jye8w8yas0paf6t0t2i9stmcua+inbi2rt01tz22tubbqwidypvgz6piynkpobirkxgu54ibzoti4pkw2i5ow9lnuaoabhuxfxqhvnrj6w15tb3furnbm+scyxobjhr5pmj5j/w5ix9wsa2tlwx9alpshlunzjgnrwvqbpwzjl9wes+ptyn+ypy/jgskavtl8j0hz1djdhzwtpjbbvpr1zj7jpg6ve7zxfngj75zee0vmp9qm2uvgu/9zdofq6r+g8l4xctvo+v+xdrfr8oxiwutycu0qgyf8icuyvp/sixfi9zxe11vp6mrjjovpmxm6acrtbia+wjr9bevlgjwlz5xd3rfna9g06qytaoofk8olxbxc7xby2evqjmmk6pjvvzxmpbnct6+036xp5vdbrnbdqph8brlfn/n/khnfumhf6z1v7h/80yieukkd5j0un82t9mynxzmk0s/bzn4tacdziszdhwrl8x5ako8qp1n1zn0k6w2em0km9zj1i4yt1pt3xiprw85jmc2m1ut2geum6y6es2fwx6c+wlrpykblopbuj5nnr2byygfy5opllv4+jmm7s6u+tvhywbnb0kv2lt5th4xipmiij+y1toiyo7bo0d+vzvovjkp6aoejsubhj3qrp3fjd/m23pay8h218ibvx3nicofvd1xi86+kh6nb/b+hgsjp5+qwpurzlir15np66vmdehh6tyazdm1k/5ejtuvurgcqux6yc+qw/sbsaj7lkt4x9qmtp7euk6zbdedyuzu6ptsu2eeu3rxcz06uf6g8wyuveznhkbzynajbb7r7cbmla+jbtrst0ow2v6ntkwv8svnwqnu5pa3oxfeexf93739p93chq/fv+jr8r0d9brhpcxr2w88bvqbr41j6wvrb+u5dzjpvx+veoaxwptzp/8cen+xbg==
Bardziej szczegółowoTesty jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz
Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 http://www.junit.org/ Zofia Kruczkiewicz 1. Aby utworzyć test dla jednej klasy, należy kliknąć prawym przyciskiem myszy w oknie Projects na wybraną
Bardziej szczegółowoPreviously on CSCI 4622
More Naïve Bayes aaace3icbvfba9rafj7ew423vr998obg2gpzkojyh4rcx3ys4lafzbjmjifdototmhoilml+hf/mn3+kl+jkdwtr64gbj+8yl2/ywklhsfircg/dvnp33s796mhdr4+fdj4+o3fvywvorkuqe5zzh0oanjakhwe1ra5zhaf5xvgvn35f62rlvtcyxpnm50awundy1hzwi46jbmgprbtrrvidrg4jre4g07kak+picee6xfgiwvfaltorirucni64eeigkqhpegbwaxglabftpyq4gjbls/hw2ci7tr2xj5ddfmfzwtazj6ubmyddgchbzpf88dmrktfonct6vazputos5zakunhfweow5ukcn+puq8m1ulm7kq+d154pokysx4zgxw4nwq6dw+rcozwnhbuu9et/tgld5cgslazuci1yh1q2ynca/u9ais0kukspulds3xxegvtyfycu8iwk1598e0z2xx/g6ef94ehbpo0d9ok9yiowsvfskh1ix2zcbpsdvaxgww7wj4zdn+he2hogm8xz9s+e7/4cuf/ata==
Bardziej szczegółowoEaglePCB_2_FreeCAD (beta)
EaglePCB_2_FreeCAD (beta) Import your boards to FreeCAD marmni (marmni@onet.eu) Copyright 2013, 2014 http://sourceforge.net/projects/eaglepcb2freecad/ [ENG] Mod EaglePCB_2_FreeCAD allow you to import PCB
Bardziej szczegółowoTowards Stability Analysis of Data Transport Mechanisms: a Fluid Model and an Application
Towards Stability Analysis of Data Transport Mechanisms: a Fluid Model and an Application Gayane Vardoyan *, C. V. Hollot, Don Towsley* * College of Information and Computer Sciences, Department of Electrical
Bardziej szczegółowoInstallation of EuroCert software for qualified electronic signature
Installation of EuroCert software for qualified electronic signature for Microsoft Windows systems Warsaw 28.08.2019 Content 1. Downloading and running the software for the e-signature... 3 a) Installer
Bardziej szczegółowoRelaxation of the Cosmological Constant
Relaxation of the Cosmological Constant with Peter Graham and David E. Kaplan The Born Again Universe + Work in preparation + Work in progress aaab7nicdvbns8nafhypx7v+vt16wsycp5kioseifw8ekthwaepzbf7apztn2n0ipfrhepggifd/jzf/jzs2brudwbhm5rhvtzakro3rfjqlpewv1bxyemvjc2t7p7q719zjphi2wcisdr9qjyjlbblubn6ncmkccoweo6vc7zyg0jyrd2acoh/tgeqrz9ryqdo7sdgq9qs1t37m5ibu3v2qqvekpqyfmv3qry9mwbajnexqrbuemxp/qpxhtoc00ss0ppsn6ac7lkoao/yns3wn5mgqiykszz80zkz+n5jqwotxhnhktm1q//zy8s+vm5nowp9wmwygjzt/fgwcmitkt5oqk2rgjc2hthg7k2fdqigztqgklwfxkfmfte/qnuw3p7xgzvfhgq7gei7bg3nowdu0oqumrvaiz/dipm6t8+q8zamlp5jzhx9w3r8agjmpzw==
Bardziej szczegółowoMachine Learning for Data Science (CS4786) Lecture 11. Spectral Embedding + Clustering
Machine Learning for Data Science (CS4786) Lecture 11 Spectral Embedding + Clustering MOTIVATING EXAMPLE What can you say from this network? MOTIVATING EXAMPLE How about now? THOUGHT EXPERIMENT For each
Bardziej szczegółowoLicense Certificate. Autodesk License Certificate Terms and Conditions
v053013 License Certificate Certificate Date: Serial #: Product key: Maximum Concurrent Authorized Users: Customer #: Contact E-Mail: Contact Phone: Product Description: Language: SAP Material #: License:
Bardziej szczegółowoRevenue Maximization. Sept. 25, 2018
Revenue Maximization Sept. 25, 2018 Goal So Far: Ideal Auctions Dominant-Strategy Incentive Compatible (DSIC) b i = v i is a dominant strategy u i 0 x is welfare-maximizing x and p run in polynomial time
Bardziej szczegółowodeep learning for NLP (5 lectures)
TTIC 31210: Advanced Natural Language Processing Kevin Gimpel Spring 2019 Lecture 6: Finish Transformers; Sequence- to- Sequence Modeling and AJenKon 1 Roadmap intro (1 lecture) deep learning for NLP (5
Bardziej szczegółowoSG-MICRO... SPRĘŻYNY GAZOWE P.103
SG-MICRO... SG-MICRO 19 SG-MICRO SG-MICRO H SG-MICRO R SG-MICRO 32 SG-MICRO 32H SG-MICRO 32R SG-MICRO SG-MICRO H SG-MICRO R SG-MICRO 45 SG-MICRO SG-MICRO SG-MICRO 75 SG-MICRO 95 SG-MICRO 0 cylindra body
Bardziej szczegółowoTTIC 31190: Natural Language Processing
TTIC 31190: Natural Language Processing Kevin Gimpel Spring 2018 Lecture 17: Machine TranslaDon; SemanDcs Roadmap words, morphology, lexical semandcs text classificadon simple neural methods for NLP language
Bardziej szczegółowoMixed-integer Convex Representability
Mixed-integer Convex Representability Juan Pablo Vielma Massachuse=s Ins?tute of Technology Joint work with Miles Lubin and Ilias Zadik INFORMS Annual Mee?ng, Phoenix, AZ, November, 2018. Mixed-Integer
Bardziej szczegółowoSG-R... SPRĘŻYNY GAZOWE P (2 x S) 60+(2 x S) 42/45+(2 x S) 50+(2 x S) 32+(2 x S) 38+(2 x S) P.67 P.68 P.69 P.70 P.71 P.72
SG-R... cylindra body Fa La Strona mm Page SG-R16 SG-R24 SG-R28 SG-R SG-R45 SG-R M16 x 1,5 M24 x 1,5 M28 x 1,5 M x 1,5 M45 x 1,5 M x 1,5 10- -1 28-0 2 7 0 +(2 x S) +(2 x S) 42/45+(2 x S) +(2 x S) 32+(2
Bardziej szczegółowoWstęp do Programowania potok funkcyjny
Wstęp do Programowania potok funkcyjny Marcin Kubica 2010/2011 Outline Wyszukiwanie wzorców w tekście 1 Wyszukiwanie wzorców w tekście Problem wyszukiwania wzorca w tekście Na tym wykładzie zajmiemy się
Bardziej szczegółowoGradient Coding using the Stochastic Block Model
Gradient Coding using the Stochastic Block Model Zachary Charles (UW-Madison) Joint work with Dimitris Papailiopoulos (UW-Madison) aaacaxicbvdlssnafj3uv62vqbvbzwarxjsqikaboelgzux7gcaeywtsdp1mwsxeaepd+ctuxcji1r9w5984bbpq1gmxdufcy733bcmjutn2t1fawl5zxsuvvzy2t7z3zn29lkwyguktjywrnqbjwigntuuvi51uebqhjlsdwfxebz8qiwnc79uwjv6mepxgfcoljd88uiox0m1hvlnzwzgowymjn7tjyzertmvpareju5aqkndwzs83thawe64wq1j2httvxo6eopirccxnjekrhqae6wrkuuykl08/gmnjryqwsoqurubu/t2ro1jkyrzozhipvpz3juj/xjdt0ywxu55mina8wxrldkoetukairuekzbubgfb9a0q95fawonqkjoez/7lrdi6trzbcm7pqvwrio4yoarh4aq44bzuwq1ogcba4be8g1fwzjwzl8a78tfrlrnfzd74a+pzb2h+lzm=
Bardziej szczegółowoy = The Chain Rule Show all work. No calculator unless otherwise stated. If asked to Explain your answer, write in complete sentences.
The Chain Rule Show all work. No calculator unless otherwise stated. If asked to Eplain your answer, write in complete sentences. 1. Find the derivative of the functions y 7 (b) (a) ( ) y t 1 + t 1 (c)
Bardziej szczegółowoHard-Margin Support Vector Machines
Hard-Margin Support Vector Machines aaacaxicbzdlssnafiyn9vbjlepk3ay2gicupasvu4iblxuaw2hjmuwn7ddjjmxm1bkcg1/fjqsvt76fo9/gazqfvn8y+pjpozw5vx8zkpvtfxmlhcwl5zxyqrm2vrg5zw3vxmsoezi4ogkr6phieky5crvvjhriqvdom9l2xxftevuwcekj3lktmhghgniauiyutvrwxtvme34a77kbvg73gtygpjsrfati1+xc8c84bvraowbf+uwnipyehcvmkjrdx46vlykhkgykm3ujjdhcyzqkxy0chur6ax5cbg+1m4bbjptjcubuz4kuhvjoql93hkin5hxtav5x6yyqopnsyuneey5ni4keqrxbar5wqaxbik00icyo/iveiyqqvjo1u4fgzj/8f9x67bzmxnurjzmijtlybwfgcdjgfdtajwgcf2dwaj7ac3g1ho1n4814n7wwjgjmf/ys8fenfycuzq==
Bardziej szczegółowoProjekt: Mikro zaprogramowane na sukces!
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Projekt: Mikro zaprogramowane na sukces! Opis autoryzowanych szkoleń Oracle planowanych do realizacji w ramach
Bardziej szczegółowoTest-Driven Development
Test-Driven Development droga od podstaw do biegłości w rozwijaniu dużych aplikacji Krzysztof Jelski O mnie Szkolenia Software TDD Odcinek 1 TDD newbie TDD C#.NET CF Ciekawość Oczekiwania TDD C#.NET CF
Bardziej szczegółowoPrzykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu)
Dr inż. Wojciech Koziński maj 2007 ZS ISEP WE PW Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu) Opis systemu (wzorca Mediator):
Bardziej szczegółowowww.irs.gov/form990. If "Yes," complete Schedule A Schedule B, Schedule of Contributors If "Yes," complete Schedule C, Part I If "Yes," complete Schedule C, Part II If "Yes," complete Schedule C, Part
Bardziej szczegółowoInstrukcja obsługi User s manual
Instrukcja obsługi User s manual Konfigurator Lanberg Lanberg Configurator E-mail: support@lanberg.pl support@lanberg.eu www.lanberg.pl www.lanberg.eu Lanberg 2015-2018 WERSJA VERSION: 2018/11 Instrukcja
Bardziej szczegółowoStargard Szczecinski i okolice (Polish Edition)
Stargard Szczecinski i okolice (Polish Edition) Janusz Leszek Jurkiewicz Click here if your download doesn"t start automatically Stargard Szczecinski i okolice (Polish Edition) Janusz Leszek Jurkiewicz
Bardziej szczegółowoKatowice, plan miasta: Skala 1: = City map = Stadtplan (Polish Edition)
Katowice, plan miasta: Skala 1:20 000 = City map = Stadtplan (Polish Edition) Polskie Przedsiebiorstwo Wydawnictw Kartograficznych im. Eugeniusza Romera Click here if your download doesn"t start automatically
Bardziej szczegółowoLEARNING AGREEMENT FOR STUDIES
LEARNING AGREEMENT FOR STUDIES The Student First and last name(s) Nationality E-mail Academic year 2014/2015 Study period 1 st semester 2 nd semester Study cycle Bachelor Master Doctoral Subject area,
Bardziej szczegółowoStrona główna > Produkty > Systemy regulacji > System regulacji EASYLAB - LABCONTROL > Program konfiguracyjny > Typ EasyConnect.
Typ EasyConnect FOR THE COMMISSIONING AND DIAGNOSIS OF EASYLAB COMPONENTS, FSE, AND FMS Software for the configuration and diagnosis of controllers Type TCU3, adapter modules TAM, automatic sash device
Bardziej szczegółowoMachine Learning for Data Science (CS4786) Lecture 24. Differential Privacy and Re-useable Holdout
Machine Learning for Data Science (CS4786) Lecture 24 Differential Privacy and Re-useable Holdout Defining Privacy Defining Privacy Dataset + Defining Privacy Dataset + Learning Algorithm Distribution
Bardziej szczegółowoZarządzanie sieciami telekomunikacyjnymi
SNMP Protocol The Simple Network Management Protocol (SNMP) is an application layer protocol that facilitates the exchange of management information between network devices. It is part of the Transmission
Bardziej szczegółowoNie musisz odnosić sukcesów ciągle, lecz tylko wystarczająco często
Nie musisz odnosić sukcesów ciągle, lecz tylko wystarczająco często Współpracuj z nami O FIRMIE Hutchinson Institute to nowoczesna organizacja szkoleniowa zajmująca się kształceniem dorosłych w zakresie
Bardziej szczegółowoEnglish Challenge: 13 Days With Real-Life English. Agnieszka Biały Kamil Kondziołka
English Challenge: 13 Days With Real-Life English Agnieszka Biały Kamil Kondziołka www.jezykipodroze.pl WYZWANIE: 13 dni z PRAKTYCZNYM Angielskim - Tego Nie Było w Szkole! Agnieszka Biały Kamil Kondziołka
Bardziej szczegółowoBardzo formalny, odbiorca posiada specjalny tytuł, który jest używany zamiast nazwiska
- Wstęp Dear Mr. President, Dear Mr. President, Bardzo formalny, odbiorca posiada specjalny tytuł, który jest używany zamiast nazwiska Dear Sir, Dear Sir, Formalny, odbiorcą jest mężczyzna, którego nazwiska
Bardziej szczegółowoTTIC 31210: Advanced Natural Language Processing. Kevin Gimpel Spring Lecture 9: Inference in Structured Prediction
TTIC 31210: Advanced Natural Language Processing Kevin Gimpel Spring 2019 Lecture 9: Inference in Structured Prediction 1 intro (1 lecture) Roadmap deep learning for NLP (5 lectures) structured prediction
Bardziej szczegółowowww.irs.gov/form990. If "Yes," complete Schedule A Schedule B, Schedule of Contributors If "Yes," complete Schedule C, Part I If "Yes," complete Schedule C, Part II If "Yes," complete Schedule C, Part
Bardziej szczegółowoU3000/U3100 Mini (Dla Komputera Eee na systemie operacyjnym Linux) Krótka Instrukcja
U3000/U3100 Mini (Dla Komputera Eee na systemie operacyjnym Linux) Krótka Instrukcja ASUS_U3000_U3100_mini.indd 1 2/2/08 4:01:51 PM PL3656 Pierwsza edycja Styczeń 2008 Copyright 2008 ASUSTeK COMPUTER INC.
Bardziej szczegółowoUSB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian
1 / 9 Content list / Spis Treści 1. Hardware and software requirements, preparing device to upgrade Wymagania sprzętowe i programowe, przygotowanie urządzenia do aktualizacji 2. Installing drivers and
Bardziej szczegółowoArrays -II. Arrays. Outline ECE Cal Poly Pomona Electrical & Computer Engineering. Introduction
ECE 114-9 Arrays -II Dr. Z. Aliyazicioglu Electrical & Computer Engineering Electrical & Computer Engineering 1 Outline Introduction Arrays Declaring and Allocation Arrays Examples Using Arrays Passing
Bardziej szczegółowoTTIC 31210: Advanced Natural Language Processing. Kevin Gimpel Spring Lecture 8: Structured PredicCon 2
TTIC 31210: Advanced Natural Language Processing Kevin Gimpel Spring 2019 Lecture 8: Structured PredicCon 2 1 Roadmap intro (1 lecture) deep learning for NLP (5 lectures) structured predic+on (4 lectures)
Bardziej szczegółowoNew method for the conformal bootstrap with OPE truncations
New method for the conformal bootstrap with OPE truncations Wenliang LI Kyung Hee University, Seoul, South Korea Symposium: "Bootstrap Approach to Conformal Field Theories and Applications, OIST, March19-23,
Bardziej szczegółowoStół Regolo. 100% Made in Italy. Może być używany w wersji zamkniętej lub otwartej na dowolnej wysokości It can be used open or closed, at any height
Spis treści Stół Regolo... 2 Stół Basic quadrato... 8 Stół Basic rettangolare... 9 Stół Easy... 10 Stół Facile... 11 Stół Kubo... 12 Stół Piccolo... 13 Stoliki Piego... 14 Stół kwadratowy Trendy quadrato...
Bardziej szczegółowoZaawansowane aplikacje internetowe laboratorium
Zaawansowane aplikacje internetowe laboratorium Web Services (część 2). Celem ćwiczenia jest przygotowanie prostej aplikacji prezentującej technologię usług sieciowych (ang. Web Services). Przygotowana
Bardziej szczegółowoRev Źródło:
KamPROG for AVR Rev. 20190119192125 Źródło: http://wiki.kamamilabs.com/index.php/kamprog_for_avr Spis treści Introdcution... 1 Features... 2 Standard equipment... 4 Installation... 5 Software... 6 AVR
Bardziej szczegółowoUSB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian
1 / 12 Content list / Spis Treści 1. Hardware and software requirements, preparing device to upgrade Wymagania sprzętowe i programowe, przygotowanie urządzenia do aktualizacji 2. Installing drivers needed
Bardziej szczegółowoHotel, restaurant and retail trade services
Hotel, restaurant and retail trade services Info Version 2 Url http://com.mercell.com/permalink/31985142.aspx External tender id 161047-2012 Tender type Contract Award Document type Contract award Procurement
Bardziej szczegółowoWojewodztwo Koszalinskie: Obiekty i walory krajoznawcze (Inwentaryzacja krajoznawcza Polski) (Polish Edition)
Wojewodztwo Koszalinskie: Obiekty i walory krajoznawcze (Inwentaryzacja krajoznawcza Polski) (Polish Edition) Robert Respondowski Click here if your download doesn"t start automatically Wojewodztwo Koszalinskie:
Bardziej szczegółowoProposal of thesis topic for mgr in. (MSE) programme in Telecommunications and Computer Science
Proposal of thesis topic for mgr in (MSE) programme 1 Topic: Monte Carlo Method used for a prognosis of a selected technological process 2 Supervisor: Dr in Małgorzata Langer 3 Auxiliary supervisor: 4
Bardziej szczegółowo03 April 2015 03 kwietnia 2015 r. Zmiana satelity dostarczającego sygnał Animal Planet HD. Change of Delivery Satellite for Animal Planet HD
03 April 2015 03 kwietnia 2015 r. Dear Sirs, Change of Delivery Satellite for Animal Planet HD We refer to the Affiliation Agreement with a Commencement Date of 01/11/2009 between ( DCEL / we ) and you,
Bardziej szczegółowoWykorzystanie możliwości serwerów Online Judge w przygotowaniu drużyny oraz w organizacji zawodów w programowaniu
Wykorzystanie możliwości serwerów Online w przygotowaniu drużyny oraz w organizacji zawodów w programowaniu Alexander Denisjuk Elbląska Uczelnia Humanistyczno-Ekonomiczna mailto:denisjuk@matman.uwm.edu.pl
Bardziej szczegółowoThis is CS 50. Harvard College s Introduction to Computer Science I \ DAVID J. MALAN 99 WEEK 2
This is CS 50. Harvard College s Introduction to Computer Science I COMPUTER \ SCIENCE 50 WEEK 2 DAVID J. MALAN 99 malan@post.harvard.edu 1 Or fher gb qevax lbhe binygvar! Image from http://www.questexperiences.com/quest2/movieadventures/default.asp.
Bardziej szczegółowoWsparcie dyplomacji ekonomicznej dla strategii surowcowej
Wsparcie dyplomacji ekonomicznej dla strategii surowcowej dr Stanisław Cios, Departament Współpracy Ekonomicznej seminarium: Strategia Surowcowa Polski 26 maja 2014 r., Pałac Staszica, Warszawa Wsparcie
Bardziej szczegółowoOd wymagań do Javy w mgnieniu oka
Od wymagań do Javy w mgnieniu oka Michał Śmiałek Politechnika Warszawska RE-Challenge, Warszawa, 15.05.2015 Prelegent Czym się zajmowałem (od ok. 1991 r.) Profesor (informatyka) Politechnika Warszawska;
Bardziej szczegółowoOPTYMALIZACJA PUBLICZNEGO TRANSPORTU ZBIOROWEGO W GMINIE ŚRODA WIELKOPOLSKA
Politechnika Poznańska Wydział Maszyn Roboczych i Transportu Inż. NATALIA LEMTIS OPTYMALIZACJA PUBLICZNEGO TRANSPORTU ZBIOROWEGO W GMINIE ŚRODA WIELKOPOLSKA Promotor: DR INŻ. MARCIN KICIŃSKI Poznań, 2016
Bardziej szczegółowoKnovel Math: Jakość produktu
Knovel Math: Jakość produktu Knovel jest agregatorem materiałów pełnotekstowych dostępnych w formacie PDF i interaktywnym. Narzędzia interaktywne Knovel nie są stworzone wokół specjalnych algorytmów wymagających
Bardziej szczegółowoKierunek: Informatyka rev rev jrn Stacjonarny EN 1 / 6
Wydział Informatyki i Komunikacji Wizualnej Kierunek: Informatyka w języku angielskim studia pierwszego stopnia - inżynierskie tryb: stacjonarny rok rozpoczęcia 2018/2019 A. Moduły międzykierunkowe obligatoryjne
Bardziej szczegółowoITIL 4 Certification
4 Certification ITIL 3 Certification ITIL Master scheme ITIL Expert 5 Managing across the lifecycle 5 3 SS 3 SD 3 ST 3 SO 3 CS1 4 OSA 4 PPO 4 RCV 4 SOA Ścieżka lifecycle Ścieżka Capability 3 ITIL Practitioner
Bardziej szczegółowoFig 5 Spectrograms of the original signal (top) extracted shaft-related GAD components (middle) and
Fig 4 Measured vibration signal (top). Blue original signal. Red component related to periodic excitation of resonances and noise. Green component related. Rotational speed profile used for experiment
Bardziej szczegółowoInformatyka. Wy-02 Tablice, wskaźniki, warunki i pętle. mgr inż. Krzysztof Kołodziejczyk
Informatyka Wy-02 Tablice, wskaźniki, warunki i pętle mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 06.03.2019 Strona kursu http://w12.pwr.wroc.pl/inf/ Konspekt 1 if-else 2 do-while
Bardziej szczegółowoLinear Classification and Logistic Regression. Pascal Fua IC-CVLab
Linear Classification and Logistic Regression Pascal Fua IC-CVLab 1 aaagcxicbdtdbtmwfafwdgxlhk8orha31ibqycvkdgpshdqxtwotng2pxtvqujmok1qlky5xllzrnobbediegwcap4votk2kqkf+/y/tnphdschtadu/giv3vtea99cfma8fpx7ytlxx7ckns4sylo3doom7jguhj1hxchmy/irhrlgh67lxb5x3blis8jjqynmedqujiu5zsqqagrx+yjcfpcrydusshmzeluzsg7tttiew5khhcuzm5rv0gn1unw6zl3gbzlpr3liwncyr6aaqinx4wnc/rpg6ix5szd86agoftuu0g/krjxdarph62enthdey3zn/+mi5zknou2ap+tclvhob9sxhwvhaqketnde7geqjp21zvjsfrcnkfhtejoz23vq97elxjlpbtmxpl6qxtl1sgfv1ptpy/yq9mgacrzkgje0hjj2rq7vtywnishnnkzsqekucnlblrarlh8x8szxolrrxkb8n6o4kmo/e7siisnozcfvsedlol60a/j8nmul/gby8mmssrfr2it8lkyxr9dirxxngzthtbaejv
Bardziej szczegółowoPRESENT TENSES IN ENGLISH by
PRESENT TENSES IN ENGLISH by Present Tenses Present Continuous Zastosowanie Czasu Present Continuous używamy, gdy mówimy: o czynności, którą wykonujemy w momencie mówienia, o czynności, w trakcie wykonywania
Bardziej szczegółowoOpenPoland.net API Documentation
OpenPoland.net API Documentation Release 1.0 Michał Gryczka July 11, 2014 Contents 1 REST API tokens: 3 1.1 How to get a token............................................ 3 2 REST API : search for assets
Bardziej szczegółowoLabel-Noise Robust Generative Adversarial Networks
Label-Noise Robust Generative Adversarial Networks Training data rcgan Noisy labeled Conditioned on clean labels Takuhiro Kaneko1 Yoshitaka Ushiku1 Tatsuya Harada1, 2 1The University of Tokyo 2RIKEN Talk
Bardziej szczegółowoTEORIA CZASU PRESENT SIMPLE I PRESENT CONTINUOUS
TEORIA CZASU PRESENT SIMPLE I PRESENT CONTINUOUS Present Simple-czas teraźniejszy prosty Present Continuous-czas teraźniejszy ciągły UŻYWAMY: gdy mówimy o rutynie gdy mówimy o harmonogramach gdy mówimy
Bardziej szczegółowog]bbvd`cyw>[ealyb^vwvvzo]^vwp`[[ab]cfwxyzy[v\]^]bvwvazovf
WXYZ[\X] TUVWXYZY[V\]^W_`ab\Yc]`bWUYdWeVVbW^`bcZY^cV\WefWcUVWg]bbVd`cYWhViYZc[VbcW`jWkVYlcUWc`W^ZVYcVWY c``lm]cw\vd]nbv\wc`wydd]dcwg]bbvd`cywy[ealyb^vwdvzo]^vdw]bwy\`ic]bnwcuvwp`[[ab]cfwxyzy[v\]^]bv g`
Bardziej szczegółowoModelowanie numeryczne w fizyce atmosfery Ćwiczenia 3
Modelowanie numeryczne w fizyce atmosfery Sylwester Arabas (ćwiczenia do wykładu dr. hab. inż. Lecha Łobockiego) Instytut Geofizyki, Wydział Fizyki Uniwersytetu Warszawskiego 3. listopada 2011 r. Schemat
Bardziej szczegółowoPobieranie argumentów wiersza polecenia
Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:
Bardziej szczegółowoHas the heat wave frequency or intensity changed in Poland since 1950?
Has the heat wave frequency or intensity changed in Poland since 1950? Joanna Wibig Department of Meteorology and Climatology, University of Lodz, Poland OUTLINE: Motivation Data Heat wave frequency measures
Bardziej szczegółowoReguły asocjacyjne w programie RapidMiner Michał Bereta
Reguły asocjacyjne w programie RapidMiner Michał Bereta www.michalbereta.pl 1. Wstęp Reguły asocjacyjne mają na celu odkrycie związków współwystępowania pomiędzy atrybutami. Stosuje się je często do danych
Bardziej szczegółowoZasady rejestracji i instrukcja zarządzania kontem użytkownika portalu
Zasady rejestracji i instrukcja zarządzania kontem użytkownika portalu Rejestracja na Portalu Online Job Application jest całkowicie bezpłatna i składa się z 3 kroków: Krok 1 - Wypełnij poprawnie formularz
Bardziej szczegółowoLecture 18 Review for Exam 1
Spring, 2019 ME 323 Mechanics of Materials Lecture 18 Review for Exam 1 Reading assignment: HW1-HW5 News: Ready for the exam? Instructor: Prof. Marcial Gonzalez Announcements Exam 1 - Wednesday February
Bardziej szczegółowoProjektowanie i architektura frameworka w języku PHP. Tomasz P.F. Kowalczyk http://kowalczyk.cc
Projektowanie i architektura frameworka w języku PHP Tomasz P.F. Kowalczyk http://kowalczyk.cc Spis treści Why new framework? Mechanizmy języka PHP Wzorce projektowe Architektura Przepływ sterowania Zalety
Bardziej szczegółowoAnkiety Nowe funkcje! Pomoc magda.szewczyk@slo-wroc.pl. magda.szewczyk@slo-wroc.pl. Twoje konto Wyloguj. BIODIVERSITY OF RIVERS: Survey to students
Ankiety Nowe funkcje! Pomoc magda.szewczyk@slo-wroc.pl Back Twoje konto Wyloguj magda.szewczyk@slo-wroc.pl BIODIVERSITY OF RIVERS: Survey to students Tworzenie ankiety Udostępnianie Analiza (55) Wyniki
Bardziej szczegółowoInstrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX
UNIWERSYTETU BIBLIOTEKA IEGO UNIWERSYTETU IEGO Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX 1. Make a new connection Open the System Preferences by going to the Apple menu
Bardziej szczegółowoOptimizing Programs with Intended Semantics
Interaktywna optymalizacja programów 26 kwietnia 2010 Spis treści Spis treści Wstęp Omówienie zaproponowanego algorytmu na przykładzie Wewnętrzna reprezentacja reguł dotyczących optymalizacji Wybrane szczegóły
Bardziej szczegółowoPodstawy programowania III WYKŁAD 6
Podstawy programowania III WYKŁAD 6 Jan Kazimirski 1 Projekt: Katalog książek elektronicznych c.d. 2 Diagram przypadków użycia 3 Iteracja 1 Zaprojektowanie panelu głównego aplikacji Realizacja przypadków
Bardziej szczegółowoExplorers Summer Adventure Camp
Explorers Summer Adventure Camp Ages 8-12 Monday to Friday 9am 3pm July 2 nd August 30 th 2019 Program does not run on Holidays Daily Spaces: $65 Weekly Spaces: $300 (prorated for Holidays) www.hoodooadventures.ca
Bardziej szczegółowoProgram szkolenia: Fundamenty testowania
Program szkolenia: Fundamenty testowania Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Fundamenty testowania Testowanie-fun Testowanie testerzy, test managerowie 2 dni 50%
Bardziej szczegółowoUmowa Licencyjna Użytkownika Końcowego End-user licence agreement
Umowa Licencyjna Użytkownika Końcowego End-user licence agreement Umowa Licencyjna Użytkownika Końcowego Wersja z dnia 2 września 2014 Definicje GRA - Przeglądarkowa gra HTML5 o nazwie Sumerian City, dostępna
Bardziej szczegółowoConditionals: 0, 1, 2, 3 - Zadania warunkowe. O Conditional. Kiedy używamy? Zdanie podrzędne Zdanie nadrzędne
O Conditional If + podmiot + czasownik w czasie present simple podmiot + czasownik w czasie present simple powszechnych prawdach, takich jak prawa natury If you heat water to 100 o C, it boils Water boils
Bardziej szczegółowoMarzec: food, advertising, shopping and services, verb patterns, adjectives and prepositions, complaints - writing
Wymagania na podstawie Podstawy programowej kształcenia ogólnego dla szkoły podstawowej język obcy oraz polecanego podręcznika New Matura Success Intermediate * Cele z podstawy programowej: rozumienie
Bardziej szczegółowo110299/EU XXIV. GP. Eingelangt am 02/04/13 COUNCIL OF THE EUROPEAN UNION. Brussels, 2 April 2013 8071/13. Interinstitutional File: 2006/0190 (CNS)
110299/EU XXIV. GP Eingelangt am 02/04/13 COUNCIL OF THE EUROPEAN UNION Brussels, 2 April 2013 8071/13 Interinstitutional File: 2006/0190 (CNS) JUR 170 PECHE 125 LEGISLATIVE ACTS AND OTHER INSTRUMENTS:
Bardziej szczegółowoCurrent Report No. 14/2012 Wysogotowo, March 16th 2012
Current Report No. 14/2012 Wysogotowo, March 16th 2012 Subject: Notification of decrease in Pioneer Pekao Investment Management S.A. s holding of PBG shares The Management Board of hereby reports that
Bardziej szczegółowoECEN 5645 Class Meeting 7. Absorption/ Scattering
ECEN 5645 Class Meeting 7 Absorption/ Scattering Index aaact3icdvfbsxtbgj2n1iax2qjhxgzdibay7qzk9fai9ojjfjoyyibw7ey3yeds7gzmvghl/qexvfvvephqik5icfrsbwop9755m/mmsaxxxnv/o4w19xcb74ul8uahre2plz3djk4yxbdnepgobgaabzfyntwi7kykiq4exgxxp2f+1q0qzrp5y0xs7mcwldzidiyvbpxid3dizy5jcurb5mu0lgu+saehhpzw9viz3i8usnz72jj3qaqjwprfvk9z73cfoi37kmnxoynk1a2fnpw2jxvuq7tzuktyni+wspuscdgo3pthwriypwecto55bmr6osjdmucbn2lmgv3dehuwsohr9/n5h1p62sohjrjllzr0rr7ekuos9sqo7gqmzqt/9wbikq+xmeikn3ozzgylezkoygq1cz2vs0oukbkxsqsy4vauli3atmfsf5rtccu3/590gnxprxuxjwrrfffhkxwi+6rgpniklxjglkibmhjlhsgf8te5cx6dp8jitoasyb55g0lpgthxtag=
Bardziej szczegółowoHelena Boguta, klasa 8W, rok szkolny 2018/2019
Poniższy zbiór zadań został wykonany w ramach projektu Mazowiecki program stypendialny dla uczniów szczególnie uzdolnionych - najlepsza inwestycja w człowieka w roku szkolnym 2018/2019. Składają się na
Bardziej szczegółowoTable of Contents. Lucas Nülle GmbH 1/6
Table of Contents Table of Contents Elektryczna technika instalacyjna Technika systemowa budynków EIT 9 Domofon wideo EIT 9.1 Komunikacja audio w budynkach 1 2 2 4 5 Lucas Nülle GmbH 1/6 www.lucas-nuelle.pl
Bardziej szczegółowoKurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa
Bardziej szczegółowoBOGFRAN home.
www.bogfranhome.pl Krzesło / Chair mod./mod.: Tory kol./col.: brązowy, szary, zielony / brown, grey, green 956 620 465 BOGFRAN home NORDIC Krzesło / Chair mod./mod.: Baso kol./col.: jasny szary, czarny
Bardziej szczegółowoMiedzy legenda a historia: Szlakiem piastowskim z Poznania do Gniezna (Biblioteka Kroniki Wielkopolski) (Polish Edition)
Miedzy legenda a historia: Szlakiem piastowskim z Poznania do Gniezna (Biblioteka Kroniki Wielkopolski) (Polish Edition) Piotr Maluskiewicz Click here if your download doesn"t start automatically Miedzy
Bardziej szczegółowonowy termin ważności Akredytywy / Gwarancji do / new validity term of the Letter of Credit / Guarantee:
Strona 1 z 5 Załącznik nr 6 do Regulaminu Udzielania Gwarancji Bankowych i Otwierania Akredytyw WNIOSEK O ZMIANĘ WARUNKÓW: (Wniosek składany jest przez osoby fizyczne i podmioty nieposiadające osobowości
Bardziej szczegółowoPROMOTION - Flexible Ducts and Accessories - FLX-REKU P13.1/2013
PROMOTION - Flexible Ducts and Accessories - FLX-REKU P13.1/2013 Offer conditions: Offer is valid until 08.11.2013 or end of stock The offer quantity is lilited All prices are EXW When placing an order
Bardziej szczegółowoHealthix Consent Web-Service Specification
Healthix Consent Web-Service Specification Version 0.1 Healthix, Inc. 40 Worth St., 5 th Floor New York, NY 10013 1-877-695-4749 Ext. 1 healthix.org Heatlhix Consent Web-Services Specification Page 1 of
Bardziej szczegółowoClassic Clad / Thermo Clad / ThermoPlus Clad option selection for projects with Pine / Fir wood
Project me: Classic Clad / Thermo Clad / ThermoPlus Clad option selection for projects with Pine / Fir wood 1 style. quadrat NFRC compatible option classic NFRC compatible option classic sharp heritage
Bardziej szczegółowoNazwa projektu: Kreatywni i innowacyjni uczniowie konkurencyjni na rynku pracy
Nazwa projektu: Kreatywni i innowacyjni uczniowie konkurencyjni na rynku pracy DZIAŁANIE 3.2 EDUKACJA OGÓLNA PODDZIAŁANIE 3.2.1 JAKOŚĆ EDUKACJI OGÓLNEJ Projekt współfinansowany przez Unię Europejską w
Bardziej szczegółowoEGZAMIN MATURALNY Z JĘZYKA ANGIELSKIEGO POZIOM ROZSZERZONY MAJ 2010 CZĘŚĆ I. Czas pracy: 120 minut. Liczba punktów do uzyskania: 23 WPISUJE ZDAJĄCY
Centralna Komisja Egzaminacyjna Arkusz zawiera informacje prawnie chronione do momentu rozpoczęcia egzaminu. Układ graficzny CKE 2010 KOD WPISUJE ZDAJĄCY PESEL Miejsce na naklejkę z kodem dysleksja EGZAMIN
Bardziej szczegółowoBOGFRAN home _BOGFRANHOME_UZUPELNIENIE.indd :21:39
BOGFRAN home www.bogfranhome.pl 2016_BOGFRANHOME_UZUPELNIENIE.indd 1 2016-08-30 08:21:39 Krzesło / Chair Tory kol./col.: brązowy, szary, zielony / brown, grey, green 956 620 465 2016_BOGFRANHOME_UZUPELNIENIE.indd
Bardziej szczegółowoLaboratorium - Konfiguracja zabezpieczeń sieci bezprzewodowej
5.0 10.2.4.10 Laboratorium - Konfiguracja zabezpieczeń sieci bezprzewodowej Wprowadzenie Wydrukuj i uzupełnij to laboratorium. W tym laboratorium, będziesz konfigurował i testował ustawienia bezprzewodowe
Bardziej szczegółowo