27 ccase_def "ccase(c,r,w,b) == when(c,%x.r,%wb.when(wb,%x.w,%x.b))" |
27 ccase_def "ccase(c,r,w,b) == when(c,%x.r,%wb.when(wb,%x.w,%x.b))" |
28 |
28 |
29 flag_def "flag == lam l.letrec \ |
29 flag_def "flag == lam l.letrec \ |
30 \ flagx l be lcase(l,<[],<[],[]>>, \ |
30 \ flagx l be lcase(l,<[],<[],[]>>, \ |
31 \ %h t. split(flagx(t),%lr p.split(p,%lw lb. \ |
31 \ %h t. split(flagx(t),%lr p.split(p,%lw lb. \ |
32 \ ccase(h, <red.lr,<lw,lb>>, \ |
32 \ ccase(h, <red$lr,<lw,lb>>, \ |
33 \ <lr,<white.lw,lb>>, \ |
33 \ <lr,<white$lw,lb>>, \ |
34 \ <lr,<lw,blue.lb>>)))) \ |
34 \ <lr,<lw,blue$lb>>)))) \ |
35 \ in flagx(l)" |
35 \ in flagx(l)" |
36 |
36 |
37 Flag_def |
37 Flag_def |
38 "Flag(l,x) == ALL lr:List(Colour).ALL lw:List(Colour).ALL lb:List(Colour). \ |
38 "Flag(l,x) == ALL lr:List(Colour).ALL lw:List(Colour).ALL lb:List(Colour). \ |
39 \ x = <lr,<lw,lb>> --> \ |
39 \ x = <lr,<lw,lb>> --> \ |