Advertisement
logicmoo

Untitled

Feb 26th, 2023 (edited)
1,633
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 454.24 KB | Science | 0 0
  1. root /opt/logicmoo_workspace/bin/cls /dev/tty
  2. % /opt/logicmoo_workspace/lib/swipl/library/prolog_xref loaded into prolog_xref 0.00 sec, 0 clauses
  3. % /opt/logicmoo_workspace/lib/swipl/library/pldoc/doc_html loaded into pldoc_html 0.00 sec, 0 clauses
  4. % /opt/logicmoo_workspace/lib/swipl/library/prolog_colour loaded into prolog_colour 0.00 sec, 0 clauses
  5. % /opt/logicmoo_workspace/packs_sys/logicmoo_agi/prolog/kaggle_arc/arc-dsl/dsl_solvers compiled 0.01 sec, 0 clauses
  6. % /opt/logicmoo_workspace/lib/swipl/library/prolog_xref loaded into prolog_xref 0.00 sec, 0 clauses
  7. % /opt/logicmoo_workspace/lib/swipl/library/pldoc/doc_html loaded into pldoc_html 0.00 sec, 0 clauses
  8. % /opt/logicmoo_workspace/lib/swipl/library/prolog_colour loaded into prolog_colour 0.00 sec, 0 clauses
  9. solve('67a3c6ac', IN, OUT) :-
  10.     [f(vmirror, IN:'Piece', OUT:out('Piece'))].
  11. solve('68b16354', IN, OUT) :-
  12.     [f(hmirror, IN:'Piece', OUT:out('Piece'))].
  13. solve('74dd1130', IN, OUT) :-
  14.     [f(dmirror, IN:'Piece', OUT:out('Piece'))].
  15. solve('3c9b0459', IN, OUT) :-
  16.     [f(rot180, IN:'Grid', OUT:out('Grid'))].
  17. solve('6150a2bd', IN, OUT) :-
  18.     [f(rot180, IN:'Grid', OUT:out('Grid'))].
  19. solve('9172f3a0', IN, OUT) :-
  20.     [f(upscale, IN:'Element', 'THREE':factor:'Integer', OUT:out('Element'))].
  21. solve('9dfd6313', IN, OUT) :-
  22.     [f(dmirror, IN:'Piece', OUT:out('Piece'))].
  23. solve(a416b8f3, IN, OUT) :-
  24.     [f(hconcat, IN:a:'Grid', IN:b:'Grid', OUT:out('Grid'))].
  25. solve(b1948b0a, IN, OUT) :-
  26.     [ f(replace,
  27.         IN:'Grid',
  28.         'SIX':replacee:'Integer',
  29.         'TWO':replacer:'Integer',
  30.         OUT:out('Grid'))
  31.     ].
  32. solve(c59eb873, IN, OUT) :-
  33.     [f(upscale, IN:'Element', 'TWO':factor:'Integer', OUT:out('Element'))].
  34. solve(c8f0f002, IN, OUT) :-
  35.     [ f(replace,
  36.         IN:'Grid',
  37.         'SEVEN':replacee:'Integer',
  38.         'FIVE':replacer:'Integer',
  39.         OUT:out('Grid'))
  40.     ].
  41. solve(d10ecb37, IN, OUT) :-
  42.     [ f(crop,
  43.         IN:'Grid',
  44.         (0, 0):start:'Point',
  45.         (2, 2):dims:'Point',
  46.         OUT:out('Grid'))
  47.     ].
  48. solve(d511f180, IN, OUT) :-
  49.     [ f(switch,
  50.         IN:'Grid',
  51.         'FIVE':a:'Integer',
  52.         'EIGHT':b:'Integer',
  53.         OUT:out('Grid'))
  54.     ].
  55. solve(ed36ccf7, IN, OUT) :-
  56.     [f(rot270, IN:'Grid', OUT:out('Grid'))].
  57. solve('4c4377d9', IN, OUT) :-
  58.     [ f(hmirror, IN:'Piece', X1:out('Piece')),
  59.       f(vconcat, X1:a:'Grid', IN:b:'Grid', OUT:out('Grid'))
  60.     ].
  61. solve('6d0aefbc', IN, OUT) :-
  62.     [ f(vmirror, IN:'Piece', X1:out('Piece')),
  63.       f(hconcat, IN:a:'Grid', X1:b:'Grid', OUT:out('Grid'))
  64.     ].
  65. solve('6fa7a44f', IN, OUT) :-
  66.     [ f(hmirror, IN:'Piece', X1:out('Piece')),
  67.       f(vconcat, IN:a:'Grid', X1:b:'Grid', OUT:out('Grid'))
  68.     ].
  69. solve('5614dbcf', IN, OUT) :-
  70.     [ f(replace,
  71.         IN:'Grid',
  72.         'FIVE':replacee:'Integer',
  73.         'ZERO':replacer:'Integer',
  74.         X1:out('Grid')),
  75.       f(downscale, X1:'Grid', 'THREE':factor:'Integer', OUT:out('Grid'))
  76.     ].
  77. solve('5bd6f4ac', IN, OUT) :-
  78.     [ f(tojvec, 'SIX':j:'Integer', X1:out('Point')),
  79.       f(crop,
  80.         IN:'Grid',
  81.         X1:start:'Point',
  82.         (3, 3):dims:'Point',
  83.         OUT:out('Grid'))
  84.     ].
  85. solve('5582e5ca', IN, OUT) :-
  86.     [ f(mostcolor, IN:'Element', X1:out('Integer')),
  87.       f(canvas,
  88.         X1:value:'Integer',
  89.         (3, 3):dimensions:'Point',
  90.         OUT:out('Grid'))
  91.     ].
  92. solve('8be77c9e', IN, OUT) :-
  93.     [ f(hmirror, IN:'Piece', X1:out('Piece')),
  94.       f(vconcat, IN:a:'Grid', X1:b:'Grid', OUT:out('Grid'))
  95.     ].
  96. solve(c9e6f938, IN, OUT) :-
  97.     [ f(vmirror, IN:'Piece', X1:out('Piece')),
  98.       f(hconcat, IN:a:'Grid', X1:b:'Grid', OUT:out('Grid'))
  99.     ].
  100. solve('2dee498d', IN, OUT) :-
  101.     [ f(hsplit, IN:'Grid', 'THREE':n:'Integer', X1:out('Tuple')),
  102.       f(first, X1:'Container', OUT:out('Any'))
  103.     ].
  104. solve('1cf80156', IN, OUT) :-
  105.     [ f(objects,
  106.         IN:'Grid',
  107.         univalued=true,
  108.         diagonal=true,
  109.         without_bg=true,
  110.         X1:out('Objects')),
  111.       f(first, X1:'Container', X2:out('Any')),
  112.       f(subgrid, X2:'Patch', IN:'Grid', OUT:out('Grid'))
  113.     ].
  114. solve(32597951, IN, OUT) :-
  115.     [ f(ofcolor, IN:'Grid', 'EIGHT':value:'Integer', X1:out('Indices')),
  116.       f(delta, X1:'Patch', X2:out('Indices')),
  117.       f(fill,
  118.         IN:'Grid',
  119.         'THREE':value:'Integer',
  120.         X2:'Patch',
  121.         OUT:out('Grid'))
  122.     ].
  123. solve('25ff71a9', IN, OUT) :-
  124.     [ f(objects,
  125.         IN:'Grid',
  126.         univalued=true,
  127.         diagonal=true,
  128.         without_bg=true,
  129.         X1:out('Objects')),
  130.       f(first, X1:'Container', X2:out('Any')),
  131.       f(move,
  132.         IN:'Grid',
  133.         X2:obj:'Object',
  134.         (1, 0):offset:'Point',
  135.         OUT:out('Grid'))
  136.     ].
  137. solve('0b148d64', IN, OUT) :-
  138.     [ f(partition, IN:'Grid', X1:out('Objects')),
  139.       f(argmin, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  140.       f(subgrid, X2:'Patch', IN:'Grid', OUT:out('Grid'))
  141.     ].
  142. solve('1f85a75f', IN, OUT) :-
  143.     [ f(objects,
  144.         IN:'Grid',
  145.         univalued=true,
  146.         diagonal=true,
  147.         without_bg=true,
  148.         X1:out('Objects')),
  149.       f(argmax, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  150.       f(subgrid, X2:'Patch', IN:'Grid', OUT:out('Grid'))
  151.     ].
  152. solve('23b5c85d', IN, OUT) :-
  153.     [ f(objects,
  154.         IN:'Grid',
  155.         univalued=true,
  156.         diagonal=true,
  157.         without_bg=true,
  158.         X1:out('Objects')),
  159.       f(argmin, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  160.       f(subgrid, X2:'Patch', IN:'Grid', OUT:out('Grid'))
  161.     ].
  162. solve('9ecd008a', IN, OUT) :-
  163.     [ f(vmirror, IN:'Piece', X1:out('Piece')),
  164.       f(ofcolor, IN:'Grid', 'ZERO':value:'Integer', X2:out('Indices')),
  165.       f(subgrid, X2:'Patch', X1:'Grid', OUT:out('Grid'))
  166.     ].
  167. solve(ac0a08a4, IN, OUT) :-
  168.     [ f(colorcount, IN:'Element', 'ZERO':value:'Integer', X1:out('Integer')),
  169.       f(subtract,
  170.         'NINE':a:'Numerical',
  171.         X1:b:'Numerical',
  172.         X2:out('Numerical')),
  173.       f(upscale,
  174.         IN:'Element',
  175.         X2:factor:'Integer',
  176.         OUT:out('Element'))
  177.     ].
  178. solve(be94b721, IN, OUT) :-
  179.     [ f(objects,
  180.         IN:'Grid',
  181.         univalued=true,
  182.         diagonal=false,
  183.         without_bg=true,
  184.         X1:out('Objects')),
  185.       f(argmax, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  186.       f(subgrid, X2:'Patch', IN:'Grid', OUT:out('Grid'))
  187.     ].
  188. solve(c909285e, IN, OUT) :-
  189.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  190.       f(ofcolor, IN:'Grid', X1:value:'Integer', X2:out('Indices')),
  191.       f(subgrid, X2:'Patch', IN:'Grid', OUT:out('Grid'))
  192.     ].
  193. solve(f25ffba3, IN, OUT) :-
  194.     [ f(bottomhalf, IN:'Grid', X1:out('Grid')),
  195.       f(hmirror, X1:'Piece', X2:out('Piece')),
  196.       f(vconcat, X2:a:'Grid', X1:b:'Grid', OUT:out('Grid'))
  197.     ].
  198. solve(c1d99e64, IN, OUT) :-
  199.     [ f(frontiers, IN:'Grid', X1:out('Objects')),
  200.       f(merge, X1:containers:'ContainerContainer', X2:out('Container')),
  201.       f(fill,
  202.         IN:'Grid',
  203.         'TWO':value:'Integer',
  204.         X2:'Patch',
  205.         OUT:out('Grid'))
  206.     ].
  207. solve(b91ae062, IN, OUT) :-
  208.     [ f(numcolors, IN:'Element', X1:out('IntegerSet')),
  209.       f(decrement, X1:x:'Numerical', X2:out('Numerical')),
  210.       f(upscale,
  211.         IN:'Element',
  212.         X2:factor:'Integer',
  213.         OUT:out('Element'))
  214.     ].
  215. solve('3aa6fb7a', IN, OUT) :-
  216.     [ f(objects,
  217.         IN:'Grid',
  218.         univalued=true,
  219.         diagonal=false,
  220.         without_bg=true,
  221.         X1:out('Objects')),
  222.       f(mapply,
  223.         corners,
  224.         X1:container:'ContainerContainer',
  225.         X2:out('FrozenSet')),
  226.       f(underfill,
  227.         IN:'Grid',
  228.         'ONE':value:'Integer',
  229.         X2:'Patch',
  230.         OUT:out('Grid'))
  231.     ].
  232. solve('7b7f7511', IN, OUT) :-
  233.     [ f(portrait, IN:'Piece', returns=X1),
  234.       f(branch,
  235.         condition=X1,
  236.         tophalf:a:'Any',
  237.         lefthalf:b:'Any',
  238.         X2:out('Any')),
  239.       f(X2, IN, OUT)
  240.     ].
  241. solve('4258a5f9', IN, OUT) :-
  242.     [ f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X1:out('Indices')),
  243.       f(mapply,
  244.         neighbors,
  245.         X1:container:'ContainerContainer',
  246.         X2:out('FrozenSet')),
  247.       f(fill,
  248.         IN:'Grid',
  249.         'ONE':value:'Integer',
  250.         X2:'Patch',
  251.         OUT:out('Grid'))
  252.     ].
  253. solve('2dc579da', IN, OUT) :-
  254.     [ f(vsplit, IN:'Grid', 'TWO':n:'Integer', X1:out('Tuple')),
  255.       f(rbind, hsplit, 'TWO':fixed:'Any', X2:out('Callable')),
  256.       f(mapply,
  257.         X2,
  258.         X1:container:'ContainerContainer',
  259.         X3:out('FrozenSet')),
  260.       f(argmax,
  261.         X3:'Container',
  262.         numcolors:compfunc:'Callable',
  263.         OUT:out('Any'))
  264.     ].
  265. solve('28bf18c6', IN, OUT) :-
  266.     [ f(objects,
  267.         IN:'Grid',
  268.         univalued=true,
  269.         diagonal=true,
  270.         without_bg=true,
  271.         X1:out('Objects')),
  272.       f(first, X1:'Container', X2:out('Any')),
  273.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  274.       f(hconcat, X3:a:'Grid', X3:b:'Grid', OUT:out('Grid'))
  275.     ].
  276. solve('3af2c5a8', IN, OUT) :-
  277.     [ f(vmirror, IN:'Piece', X1:out('Piece')),
  278.       f(hconcat, IN:a:'Grid', X1:b:'Grid', X2:out('Grid')),
  279.       f(hmirror, X2:'Piece', X3:out('Piece')),
  280.       f(vconcat, X2:a:'Grid', X3:b:'Grid', OUT:out('Grid'))
  281.     ].
  282. solve('44f52bb0', IN, OUT) :-
  283.     [ f(vmirror, IN:'Piece', X1:out('Piece')),
  284.       f(equality, X1:a:'Any', IN:b:'Any', returns=X2),
  285.       f(branch, condition=X2, 'ONE':a:'Any', 'SEVEN':b:'Any', X3:out('Any')),
  286.       f(canvas,
  287.         X3:value:'Integer',
  288.         (1, 1):dimensions:'Point',
  289.         OUT:out('Grid'))
  290.     ].
  291. solve('62c24649', IN, OUT) :-
  292.     [ f(vmirror, IN:'Piece', X1:out('Piece')),
  293.       f(hconcat, IN:a:'Grid', X1:b:'Grid', X2:out('Grid')),
  294.       f(hmirror, X2:'Piece', X3:out('Piece')),
  295.       f(vconcat, X2:a:'Grid', X3:b:'Grid', OUT:out('Grid'))
  296.     ].
  297. solve('67e8384a', IN, OUT) :-
  298.     [ f(vmirror, IN:'Piece', X1:out('Piece')),
  299.       f(hconcat, IN:a:'Grid', X1:b:'Grid', X2:out('Grid')),
  300.       f(hmirror, X2:'Piece', X3:out('Piece')),
  301.       f(vconcat, X2:a:'Grid', X3:b:'Grid', OUT:out('Grid'))
  302.     ].
  303. solve('7468f01a', IN, OUT) :-
  304.     [ f(objects,
  305.         IN:'Grid',
  306.         univalued=false,
  307.         diagonal=true,
  308.         without_bg=true,
  309.         X1:out('Objects')),
  310.       f(first, X1:'Container', X2:out('Any')),
  311.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  312.       f(vmirror, X3:'Piece', OUT:out('Piece'))
  313.     ].
  314. solve('662c240a', IN, OUT) :-
  315.     [ f(vsplit, IN:'Grid', 'THREE':n:'Integer', X1:out('Tuple')),
  316.       f(fork,
  317.         equality:outer:'Callable',
  318.         dmirror:a:'Callable',
  319.         identity:b:'Callable',
  320.         X2:out('Callable')),
  321.       f(compose,
  322.         flip:outer:'Callable',
  323.         X2:inner:'Callable',
  324.         X3:out('Callable')),
  325.       f(extract,
  326.         X1:'Container',
  327.         X3:condition:'Callable',
  328.         OUT:out('Any'))
  329.     ].
  330. solve('42a50994', IN, OUT) :-
  331.     [ f(objects,
  332.         IN:'Grid',
  333.         univalued=true,
  334.         diagonal=true,
  335.         without_bg=true,
  336.         X1:out('Objects')),
  337.       f(sizefilter, X1:'Container', 'ONE':n:'Integer', X2:out('FrozenSet')),
  338.       f(merge, X2:containers:'ContainerContainer', X3:out('Container')),
  339.       f(cover, IN:'Grid', X3:'Patch', OUT:out('Grid'))
  340.     ].
  341. solve('56ff96f3', IN, OUT) :-
  342.     [ f(fgpartition, IN:'Grid', X1:out('Objects')),
  343.       f(fork,
  344.         recolor:outer:'Callable',
  345.         color:a:'Callable',
  346.         backdrop:b:'Callable',
  347.         X2:out('Callable')),
  348.       f(mapply,
  349.         X2,
  350.         X1:container:'ContainerContainer',
  351.         X3:out('FrozenSet')),
  352.       f(paint, IN:'Grid', X3:obj:'Object', OUT:out('Grid'))
  353.     ].
  354. solve('50cb2852', IN, OUT) :-
  355.     [ f(objects,
  356.         IN:'Grid',
  357.         univalued=true,
  358.         diagonal=false,
  359.         without_bg=true,
  360.         X1:out('Objects')),
  361.       f(compose,
  362.         backdrop:outer:'Callable',
  363.         inbox:inner:'Callable',
  364.         X2:out('Callable')),
  365.       f(mapply,
  366.         X2,
  367.         X1:container:'ContainerContainer',
  368.         X3:out('FrozenSet')),
  369.       f(fill,
  370.         IN:'Grid',
  371.         'EIGHT':value:'Integer',
  372.         X3:'Patch',
  373.         OUT:out('Grid'))
  374.     ].
  375. solve('4347f46a', IN, OUT) :-
  376.     [ f(objects,
  377.         IN:'Grid',
  378.         univalued=true,
  379.         diagonal=false,
  380.         without_bg=true,
  381.         X1:out('Objects')),
  382.       f(fork,
  383.         difference:outer:'Callable',
  384.         toindices:a:'Callable',
  385.         box:b:'Callable',
  386.         X2:out('Callable')),
  387.       f(mapply,
  388.         X2,
  389.         X1:container:'ContainerContainer',
  390.         X3:out('FrozenSet')),
  391.       f(fill,
  392.         IN:'Grid',
  393.         'ZERO':value:'Integer',
  394.         X3:'Patch',
  395.         OUT:out('Grid'))
  396.     ].
  397. solve('46f33fce', IN, OUT) :-
  398.     [ f(rot180, IN:'Grid', X1:out('Grid')),
  399.       f(downscale, X1:'Grid', 'TWO':factor:'Integer', X2:out('Grid')),
  400.       f(rot180, X2:'Grid', X3:out('Grid')),
  401.       f(upscale, X3:'Element', 'FOUR':factor:'Integer', OUT:out('Element'))
  402.     ].
  403. solve(a740d043, IN, OUT) :-
  404.     [ f(objects,
  405.         IN:'Grid',
  406.         univalued=true,
  407.         diagonal=true,
  408.         without_bg=true,
  409.         X1:out('Objects')),
  410.       f(merge, X1:containers:'ContainerContainer', X2:out('Container')),
  411.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  412.       f(replace,
  413.         X3:'Grid',
  414.         'ONE':replacee:'Integer',
  415.         'ZERO':replacer:'Integer',
  416.         OUT:out('Grid'))
  417.     ].
  418. solve(a79310a0, IN, OUT) :-
  419.     [ f(objects,
  420.         IN:'Grid',
  421.         univalued=true,
  422.         diagonal=false,
  423.         without_bg=true,
  424.         X1:out('Objects')),
  425.       f(first, X1:'Container', X2:out('Any')),
  426.       f(move,
  427.         IN:'Grid',
  428.         X2:obj:'Object',
  429.         (1, 0):offset:'Point',
  430.         X3:out('Grid')),
  431.       f(replace,
  432.         X3:'Grid',
  433.         'EIGHT':replacee:'Integer',
  434.         'TWO':replacer:'Integer',
  435.         OUT:out('Grid'))
  436.     ].
  437. solve(aabf363d, IN, OUT) :-
  438.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  439.       f(replace,
  440.         IN:'Grid',
  441.         X1:replacee:'Integer',
  442.         'ZERO':replacer:'Integer',
  443.         X2:out('Grid')),
  444.       f(leastcolor, X2:'Element', X3:out('Integer')),
  445.       f(replace,
  446.         X2:'Grid',
  447.         X3:replacee:'Integer',
  448.         X1:replacer:'Integer',
  449.         OUT:out('Grid'))
  450.     ].
  451. solve(ae4f1146, IN, OUT) :-
  452.     [ f(objects,
  453.         IN:'Grid',
  454.         univalued=false,
  455.         diagonal=false,
  456.         without_bg=true,
  457.         X1:out('Objects')),
  458.       f(rbind, colorcount, 'ONE':fixed:'Any', X2:out('Callable')),
  459.       f(argmax,
  460.         X1:'Container',
  461.         X2:compfunc:'Callable',
  462.         X3:out('Any')),
  463.       f(subgrid, X3:'Patch', IN:'Grid', OUT:out('Grid'))
  464.     ].
  465. solve(b27ca6d3, IN, OUT) :-
  466.     [ f(objects,
  467.         IN:'Grid',
  468.         univalued=true,
  469.         diagonal=false,
  470.         without_bg=true,
  471.         X1:out('Objects')),
  472.       f(sizefilter, X1:'Container', 'TWO':n:'Integer', X2:out('FrozenSet')),
  473.       f(mapply,
  474.         outbox,
  475.         X2:container:'ContainerContainer',
  476.         X3:out('FrozenSet')),
  477.       f(fill,
  478.         IN:'Grid',
  479.         'THREE':value:'Integer',
  480.         X3:'Patch',
  481.         OUT:out('Grid'))
  482.     ].
  483. solve(ce22a75a, IN, OUT) :-
  484.     [ f(objects,
  485.         IN:'Grid',
  486.         univalued=true,
  487.         diagonal=false,
  488.         without_bg=true,
  489.         X1:out('Objects')),
  490.       f(apply, outbox, X1:'Container', X2:out('Container')),
  491.       f(mapply,
  492.         backdrop,
  493.         X2:container:'ContainerContainer',
  494.         X3:out('FrozenSet')),
  495.       f(fill,
  496.         IN:'Grid',
  497.         'ONE':value:'Integer',
  498.         X3:'Patch',
  499.         OUT:out('Grid'))
  500.     ].
  501. solve(dc1df850, IN, OUT) :-
  502.     [ f(objects,
  503.         IN:'Grid',
  504.         univalued=true,
  505.         diagonal=false,
  506.         without_bg=true,
  507.         X1:out('Objects')),
  508.       f(colorfilter,
  509.         X1:objs:'Objects',
  510.         'TWO':value:'Integer',
  511.         X2:out('Objects')),
  512.       f(mapply,
  513.         outbox,
  514.         X2:container:'ContainerContainer',
  515.         X3:out('FrozenSet')),
  516.       f(fill,
  517.         IN:'Grid',
  518.         'ONE':value:'Integer',
  519.         X3:'Patch',
  520.         OUT:out('Grid'))
  521.     ].
  522. solve(f25fbde4, IN, OUT) :-
  523.     [ f(objects,
  524.         IN:'Grid',
  525.         univalued=true,
  526.         diagonal=true,
  527.         without_bg=true,
  528.         X1:out('Objects')),
  529.       f(first, X1:'Container', X2:out('Any')),
  530.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  531.       f(upscale, X3:'Element', 'TWO':factor:'Integer', OUT:out('Element'))
  532.     ].
  533. solve('44d8ac46', IN, OUT) :-
  534.     [ f(objects,
  535.         IN:'Grid',
  536.         univalued=true,
  537.         diagonal=false,
  538.         without_bg=true,
  539.         X1:out('Objects')),
  540.       f(apply, delta, X1:'Container', X2:out('Container')),
  541.       f(mfilter, X2:'Container', square, X3:out('FrozenSet')),
  542.       f(fill,
  543.         IN:'Grid',
  544.         'TWO':value:'Integer',
  545.         X3:'Patch',
  546.         OUT:out('Grid'))
  547.     ].
  548. solve('1e0a9b12', IN, OUT) :-
  549.     [ f(rot270, IN:'Grid', X1:out('Grid')),
  550.       f(rbind, order, identity:fixed:'Any', X2:out('Callable')),
  551.       f(apply, X2, X1:'Container', X3:out('Container')),
  552.       f(rot90, X3:'Grid', OUT:out('Grid'))
  553.     ].
  554. solve('0d3d703e', IN, OUT) :-
  555.     [ f(switch,
  556.         IN:'Grid',
  557.         'THREE':a:'Integer',
  558.         'FOUR':b:'Integer',
  559.         X1:out('Grid')),
  560.       f(switch,
  561.         X1:'Grid',
  562.         'EIGHT':a:'Integer',
  563.         'NINE':b:'Integer',
  564.         X2:out('Grid')),
  565.       f(switch, X2:'Grid', 'TWO':a:'Integer', 'SIX':b:'Integer', X3:out('Grid')),
  566.       f(switch, X3:'Grid', 'ONE':a:'Integer', 'FIVE':b:'Integer', OUT:out('Grid'))
  567.     ].
  568. solve('3618c87e', IN, OUT) :-
  569.     [ f(objects,
  570.         IN:'Grid',
  571.         univalued=true,
  572.         diagonal=false,
  573.         without_bg=true,
  574.         X1:out('Objects')),
  575.       f(sizefilter, X1:'Container', 'ONE':n:'Integer', X2:out('FrozenSet')),
  576.       f(merge, X2:containers:'ContainerContainer', X3:out('Container')),
  577.       f(move,
  578.         IN:'Grid',
  579.         X3:obj:'Object',
  580.         (2, 0):offset:'Point',
  581.         OUT:out('Grid'))
  582.     ].
  583. solve('1c786137', IN, OUT) :-
  584.     [ f(objects,
  585.         IN:'Grid',
  586.         univalued=true,
  587.         diagonal=false,
  588.         without_bg=false,
  589.         X1:out('Objects')),
  590.       f(argmax, X1:'Container', height:compfunc:'Callable', X2:out('Any')),
  591.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  592.       f(trim, X3:'Grid', OUT:out('Grid'))
  593.     ].
  594. solve('8efcae92', IN, OUT) :-
  595.     [ f(objects,
  596.         IN:'Grid',
  597.         univalued=true,
  598.         diagonal=false,
  599.         without_bg=false,
  600.         X1:out('Objects')),
  601.       f(colorfilter,
  602.         X1:objs:'Objects',
  603.         'ONE':value:'Integer',
  604.         X2:out('Objects')),
  605.       f(compose,
  606.         size:outer:'Callable',
  607.         delta:inner:'Callable',
  608.         X3:out('Callable')),
  609.       f(argmax,
  610.         X2:'Container',
  611.         X3:compfunc:'Callable',
  612.         X4:out('Any')),
  613.       f(subgrid, X4:'Patch', IN:'Grid', OUT:out('Grid'))
  614.     ].
  615. solve('445eab21', IN, OUT) :-
  616.     [ f(objects,
  617.         IN:'Grid',
  618.         univalued=true,
  619.         diagonal=false,
  620.         without_bg=true,
  621.         X1:out('Objects')),
  622.       f(fork,
  623.         multiply:outer:'Callable',
  624.         height:a:'Callable',
  625.         width:b:'Callable',
  626.         X2:out('Callable')),
  627.       f(argmax,
  628.         X1:'Container',
  629.         X2:compfunc:'Callable',
  630.         X3:out('Any')),
  631.       f(color, X3:obj:'Object', X4:out('Integer')),
  632.       f(canvas,
  633.         X4:value:'Integer',
  634.         (2, 2):dimensions:'Point',
  635.         OUT:out('Grid'))
  636.     ].
  637. solve('6f8cd79b', IN, OUT) :-
  638.     [ f(asindices, IN:'Grid', X1:out('Indices')),
  639.       f(apply, initset, X1:'Container', X2:out('Container')),
  640.       f(rbind, bordering, IN:fixed:'Any', X3:out('Callable')),
  641.       f(mfilter, X2:'Container', X3, X4:out('FrozenSet')),
  642.       f(fill,
  643.         IN:'Grid',
  644.         'EIGHT':value:'Integer',
  645.         X4:'Patch',
  646.         OUT:out('Grid'))
  647.     ].
  648. solve('2013d3e2', IN, OUT) :-
  649.     [ f(objects,
  650.         IN:'Grid',
  651.         univalued=false,
  652.         diagonal=true,
  653.         without_bg=true,
  654.         X1:out('Objects')),
  655.       f(first, X1:'Container', X2:out('Any')),
  656.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  657.       f(lefthalf, X3:'Grid', X4:out('Grid')),
  658.       f(tophalf, X4:'Grid', OUT:out('Grid'))
  659.     ].
  660. solve('41e4d17e', IN, OUT) :-
  661.     [ f(objects,
  662.         IN:'Grid',
  663.         univalued=true,
  664.         diagonal=false,
  665.         without_bg=true,
  666.         X1:out('Objects')),
  667.       f(fork,
  668.         combine:outer:'Callable',
  669.         vfrontier:a:'Callable',
  670.         hfrontier:b:'Callable',
  671.         X2:out('Callable')),
  672.       f(compose,
  673.         X2:outer:'Callable',
  674.         center:inner:'Callable',
  675.         X3:out('Callable')),
  676.       f(mapply,
  677.         X3,
  678.         X1:container:'ContainerContainer',
  679.         X4:out('FrozenSet')),
  680.       f(underfill,
  681.         IN:'Grid',
  682.         'SIX':value:'Integer',
  683.         X4:'Patch',
  684.         OUT:out('Grid'))
  685.     ].
  686. solve('9565186b', IN, OUT) :-
  687.     [ f(shape, IN:'Piece', X1:out('Point')),
  688.       f(objects,
  689.         IN:'Grid',
  690.         univalued=true,
  691.         diagonal=false,
  692.         without_bg=false,
  693.         X2:out('Objects')),
  694.       f(argmax, X2:'Container', size:compfunc:'Callable', X3:out('Any')),
  695.       f(canvas,
  696.         'FIVE':value:'Integer',
  697.         X1:dimensions:'Point',
  698.         X4:out('Grid')),
  699.       f(paint, X4:'Grid', X3:obj:'Object', OUT:out('Grid'))
  700.     ].
  701. solve(aedd82e4, IN, OUT) :-
  702.     [ f(objects,
  703.         IN:'Grid',
  704.         univalued=true,
  705.         diagonal=false,
  706.         without_bg=false,
  707.         X1:out('Objects')),
  708.       f(colorfilter,
  709.         X1:objs:'Objects',
  710.         'TWO':value:'Integer',
  711.         X2:out('Objects')),
  712.       f(sizefilter, X2:'Container', 'ONE':n:'Integer', X3:out('FrozenSet')),
  713.       f(merge, X3:containers:'ContainerContainer', X4:out('Container')),
  714.       f(fill,
  715.         IN:'Grid',
  716.         'ONE':value:'Integer',
  717.         X4:'Patch',
  718.         OUT:out('Grid'))
  719.     ].
  720. solve(bb43febb, IN, OUT) :-
  721.     [ f(objects,
  722.         IN:'Grid',
  723.         univalued=true,
  724.         diagonal=false,
  725.         without_bg=false,
  726.         X1:out('Objects')),
  727.       f(colorfilter,
  728.         X1:objs:'Objects',
  729.         'FIVE':value:'Integer',
  730.         X2:out('Objects')),
  731.       f(compose,
  732.         backdrop:outer:'Callable',
  733.         inbox:inner:'Callable',
  734.         X3:out('Callable')),
  735.       f(mapply,
  736.         X3,
  737.         X2:container:'ContainerContainer',
  738.         X4:out('FrozenSet')),
  739.       f(fill,
  740.         IN:'Grid',
  741.         'TWO':value:'Integer',
  742.         X4:'Patch',
  743.         OUT:out('Grid'))
  744.     ].
  745. solve(e98196ab, IN, OUT) :-
  746.     [ f(tophalf, IN:'Grid', X1:out('Grid')),
  747.       f(bottomhalf, IN:'Grid', X2:out('Grid')),
  748.       f(objects,
  749.         X1:'Grid',
  750.         univalued=true,
  751.         diagonal=false,
  752.         without_bg=true,
  753.         X3:out('Objects')),
  754.       f(merge, X3:containers:'ContainerContainer', X4:out('Container')),
  755.       f(paint, X2:'Grid', X4:obj:'Object', OUT:out('Grid'))
  756.     ].
  757. solve(f76d97a5, IN, OUT) :-
  758.     [ f(palette, IN:'Element', X1:out('IntegerSet')),
  759.       f(first, X1:'Container', X2:out('Any')),
  760.       f(last, X1:'Container', X3:out('Any')),
  761.       f(switch,
  762.         IN:'Grid',
  763.         X2:a:'Integer',
  764.         X3:b:'Integer',
  765.         X4:out('Grid')),
  766.       f(replace,
  767.         X4:'Grid',
  768.         'FIVE':replacee:'Integer',
  769.         'ZERO':replacer:'Integer',
  770.         OUT:out('Grid'))
  771.     ].
  772. solve(ce9e57f2, IN, OUT) :-
  773.     [ f(objects,
  774.         IN:'Grid',
  775.         univalued=true,
  776.         diagonal=false,
  777.         without_bg=true,
  778.         X1:out('Objects')),
  779.       f(fork,
  780.         connect:outer:'Callable',
  781.         ulcorner:a:'Callable',
  782.         centerofmass:b:'Callable',
  783.         X2:out('Callable')),
  784.       f(mapply,
  785.         X2,
  786.         X1:container:'ContainerContainer',
  787.         X3:out('FrozenSet')),
  788.       f(fill,
  789.         IN:'Grid',
  790.         'EIGHT':value:'Integer',
  791.         X3:'Patch',
  792.         X4:out('Grid')),
  793.       f(switch,
  794.         X4:'Grid',
  795.         'EIGHT':a:'Integer',
  796.         'TWO':b:'Integer',
  797.         OUT:out('Grid'))
  798.     ].
  799. solve('22eb0ac0', IN, OUT) :-
  800.     [ f(fgpartition, IN:'Grid', X1:out('Objects')),
  801.       f(fork,
  802.         recolor:outer:'Callable',
  803.         color:a:'Callable',
  804.         backdrop:b:'Callable',
  805.         X2:out('Callable')),
  806.       f(apply, X2, X1:'Container', X3:out('Container')),
  807.       f(mfilter, X3:'Container', hline, X4:out('FrozenSet')),
  808.       f(paint, IN:'Grid', X4:obj:'Object', OUT:out('Grid'))
  809.     ].
  810. solve('9f236235', IN, OUT) :-
  811.     [ f(compress, IN:'Grid', X1:out('Grid')),
  812.       f(objects,
  813.         IN:'Grid',
  814.         univalued=true,
  815.         diagonal=false,
  816.         without_bg=false,
  817.         X2:out('Objects')),
  818.       f(vmirror, X1:'Piece', X3:out('Piece')),
  819.       f(valmin,
  820.         X2:'Container',
  821.         width:compfunc:'Callable',
  822.         X4:out('Integer')),
  823.       f(downscale, X3:'Grid', X4:factor:'Integer', OUT:out('Grid'))
  824.     ].
  825. solve(a699fb00, IN, OUT) :-
  826.     [ f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X1:out('Indices')),
  827.       f(shift, X1:'Patch', (0, 1):directions:'Point', X2:out('Patch')),
  828.       f(shift, X1:'Patch', (0, -1):directions:'Point', X3:out('Patch')),
  829.       f(intersection,
  830.         X2:a:'FrozenSet',
  831.         X3:b:'FrozenSet',
  832.         X4:out('FrozenSet')),
  833.       f(fill,
  834.         IN:'Grid',
  835.         'TWO':value:'Integer',
  836.         X4:'Patch',
  837.         OUT:out('Grid'))
  838.     ].
  839. solve('46442a0e', IN, OUT) :-
  840.     [ f(rot90, IN:'Grid', X1:out('Grid')),
  841.       f(rot180, IN:'Grid', X2:out('Grid')),
  842.       f(rot270, IN:'Grid', X3:out('Grid')),
  843.       f(hconcat, IN:a:'Grid', X1:b:'Grid', X4:out('Grid')),
  844.       f(hconcat, X3:a:'Grid', X2:b:'Grid', X5:out('Grid')),
  845.       f(vconcat, X4:a:'Grid', X5:b:'Grid', OUT:out('Grid'))
  846.     ].
  847. solve('7fe24cdd', IN, OUT) :-
  848.     [ f(rot90, IN:'Grid', X1:out('Grid')),
  849.       f(rot180, IN:'Grid', X2:out('Grid')),
  850.       f(rot270, IN:'Grid', X3:out('Grid')),
  851.       f(hconcat, IN:a:'Grid', X1:b:'Grid', X4:out('Grid')),
  852.       f(hconcat, X3:a:'Grid', X2:b:'Grid', X5:out('Grid')),
  853.       f(vconcat, X4:a:'Grid', X5:b:'Grid', OUT:out('Grid'))
  854.     ].
  855. solve('0ca9ddb6', IN, OUT) :-
  856.     [ f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X1:out('Indices')),
  857.       f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X2:out('Indices')),
  858.       f(mapply,
  859.         dneighbors,
  860.         X1:container:'ContainerContainer',
  861.         X3:out('FrozenSet')),
  862.       f(mapply,
  863.         ineighbors,
  864.         X2:container:'ContainerContainer',
  865.         X4:out('FrozenSet')),
  866.       f(fill,
  867.         IN:'Grid',
  868.         'SEVEN':value:'Integer',
  869.         X3:'Patch',
  870.         X5:out('Grid')),
  871.       f(fill,
  872.         X5:'Grid',
  873.         'FOUR':value:'Integer',
  874.         X4:'Patch',
  875.         OUT:out('Grid'))
  876.     ].
  877. solve('543a7ed5', IN, OUT) :-
  878.     [ f(objects,
  879.         IN:'Grid',
  880.         univalued=true,
  881.         diagonal=false,
  882.         without_bg=true,
  883.         X1:out('Objects')),
  884.       f(colorfilter,
  885.         X1:objs:'Objects',
  886.         'SIX':value:'Integer',
  887.         X2:out('Objects')),
  888.       f(mapply,
  889.         outbox,
  890.         X2:container:'ContainerContainer',
  891.         X3:out('FrozenSet')),
  892.       f(fill,
  893.         IN:'Grid',
  894.         'THREE':value:'Integer',
  895.         X3:'Patch',
  896.         X4:out('Grid')),
  897.       f(mapply,
  898.         delta,
  899.         X2:container:'ContainerContainer',
  900.         X5:out('FrozenSet')),
  901.       f(fill,
  902.         X4:'Grid',
  903.         'FOUR':value:'Integer',
  904.         X5:'Patch',
  905.         OUT:out('Grid'))
  906.     ].
  907. solve('0520fde7', IN, OUT) :-
  908.     [ f(vmirror, IN:'Piece', X1:out('Piece')),
  909.       f(lefthalf, X1:'Grid', X2:out('Grid')),
  910.       f(righthalf, X1:'Grid', X3:out('Grid')),
  911.       f(vmirror, X3:'Piece', X4:out('Piece')),
  912.       f(cellwise,
  913.         X2:a:'Grid',
  914.         X4:b:'Grid',
  915.         'ZERO':fallback:'Integer',
  916.         X5:out('Grid')),
  917.       f(replace,
  918.         X5:'Grid',
  919.         'ONE':replacee:'Integer',
  920.         'TWO':replacer:'Integer',
  921.         OUT:out('Grid'))
  922.     ].
  923. solve(dae9d2b5, IN, OUT) :-
  924.     [ f(lefthalf, IN:'Grid', X1:out('Grid')),
  925.       f(righthalf, IN:'Grid', X2:out('Grid')),
  926.       f(ofcolor, X1:'Grid', 'FOUR':value:'Integer', X3:out('Indices')),
  927.       f(ofcolor, X2:'Grid', 'THREE':value:'Integer', X4:out('Indices')),
  928.       f(combine,
  929.         X3:a:'Container',
  930.         X4:b:'Container',
  931.         X5:out('Container')),
  932.       f(fill,
  933.         X1:'Grid',
  934.         'SIX':value:'Integer',
  935.         X5:'Patch',
  936.         OUT:out('Grid'))
  937.     ].
  938. solve('8d5021e8', IN, OUT) :-
  939.     [ f(vmirror, IN:'Piece', X1:out('Piece')),
  940.       f(hconcat, X1:a:'Grid', IN:b:'Grid', X2:out('Grid')),
  941.       f(hmirror, X2:'Piece', X3:out('Piece')),
  942.       f(vconcat, X2:a:'Grid', X3:b:'Grid', X4:out('Grid')),
  943.       f(vconcat, X4:a:'Grid', X2:b:'Grid', X5:out('Grid')),
  944.       f(hmirror, X5:'Piece', OUT:out('Piece'))
  945.     ].
  946. solve('928ad970', IN, OUT) :-
  947.     [ f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X1:out('Indices')),
  948.       f(subgrid, X1:'Patch', IN:'Grid', X2:out('Grid')),
  949.       f(trim, X2:'Grid', X3:out('Grid')),
  950.       f(leastcolor, X3:'Element', X4:out('Integer')),
  951.       f(inbox, X1:'Patch', X5:out('Indices')),
  952.       f(fill,
  953.         IN:'Grid',
  954.         X4:value:'Integer',
  955.         X5:'Patch',
  956.         OUT:out('Grid'))
  957.     ].
  958. solve(b60334d2, IN, OUT) :-
  959.     [ f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X1:out('Indices')),
  960.       f(replace,
  961.         IN:'Grid',
  962.         'FIVE':replacee:'Integer',
  963.         'ZERO':replacer:'Integer',
  964.         X2:out('Grid')),
  965.       f(mapply,
  966.         dneighbors,
  967.         X1:container:'ContainerContainer',
  968.         X3:out('FrozenSet')),
  969.       f(mapply,
  970.         ineighbors,
  971.         X1:container:'ContainerContainer',
  972.         X4:out('FrozenSet')),
  973.       f(fill,
  974.         X2:'Grid',
  975.         'ONE':value:'Integer',
  976.         X3:'Patch',
  977.         X5:out('Grid')),
  978.       f(fill,
  979.         X5:'Grid',
  980.         'FIVE':value:'Integer',
  981.         X4:'Patch',
  982.         OUT:out('Grid'))
  983.     ].
  984. solve(b94a9452, IN, OUT) :-
  985.     [ f(objects,
  986.         IN:'Grid',
  987.         univalued=false,
  988.         diagonal=false,
  989.         without_bg=true,
  990.         X1:out('Objects')),
  991.       f(first, X1:'Container', X2:out('Any')),
  992.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  993.       f(leastcolor, X3:'Element', X4:out('Integer')),
  994.       f(mostcolor, X3:'Element', X5:out('Integer')),
  995.       f(switch,
  996.         X3:'Grid',
  997.         X4:a:'Integer',
  998.         X5:b:'Integer',
  999.         OUT:out('Grid'))
  1000.     ].
  1001. solve(d037b0a7, IN, OUT) :-
  1002.     [ f(objects,
  1003.         IN:'Grid',
  1004.         univalued=true,
  1005.         diagonal=false,
  1006.         without_bg=true,
  1007.         X1:out('Objects')),
  1008.       f(rbind, shoot, (1, 0):fixed:'Any', X2:out('Callable')),
  1009.       f(compose,
  1010.         X2:outer:'Callable',
  1011.         center:inner:'Callable',
  1012.         X3:out('Callable')),
  1013.       f(fork,
  1014.         recolor:outer:'Callable',
  1015.         color:a:'Callable',
  1016.         X3:b:'Callable',
  1017.         X4:out('Callable')),
  1018.       f(mapply,
  1019.         X4,
  1020.         X1:container:'ContainerContainer',
  1021.         X5:out('FrozenSet')),
  1022.       f(paint, IN:'Grid', X5:obj:'Object', OUT:out('Grid'))
  1023.     ].
  1024. solve(d0f5fe59, IN, OUT) :-
  1025.     [ f(objects,
  1026.         IN:'Grid',
  1027.         univalued=true,
  1028.         diagonal=false,
  1029.         without_bg=true,
  1030.         X1:out('Objects')),
  1031.       f(size, X1:'Container', X2:out('Integer')),
  1032.       f(astuple, X2:a:'Integer', X2:b:'Integer', X3:out('Point')),
  1033.       f(canvas,
  1034.         'ZERO':value:'Integer',
  1035.         X3:dimensions:'Point',
  1036.         X4:out('Grid')),
  1037.       f(shoot, (0, 0):start:'Point', (1, 1):direction:'Point', X5:out('Indices')),
  1038.       f(fill,
  1039.         X4:'Grid',
  1040.         'EIGHT':value:'Integer',
  1041.         X5:'Patch',
  1042.         OUT:out('Grid'))
  1043.     ].
  1044. solve(e3497940, IN, OUT) :-
  1045.     [ f(lefthalf, IN:'Grid', X1:out('Grid')),
  1046.       f(righthalf, IN:'Grid', X2:out('Grid')),
  1047.       f(vmirror, X2:'Piece', X3:out('Piece')),
  1048.       f(objects,
  1049.         X3:'Grid',
  1050.         univalued=true,
  1051.         diagonal=false,
  1052.         without_bg=true,
  1053.         X4:out('Objects')),
  1054.       f(merge, X4:containers:'ContainerContainer', X5:out('Container')),
  1055.       f(paint, X1:'Grid', X5:obj:'Object', OUT:out('Grid'))
  1056.     ].
  1057. solve(e9afcf9a, IN, OUT) :-
  1058.     [ f(astuple, 'TWO':a:'Integer', 'ONE':b:'Integer', X1:out('Point')),
  1059.       f(crop,
  1060.         IN:'Grid',
  1061.         (0, 0):start:'Point',
  1062.         X1:dims:'Point',
  1063.         X2:out('Grid')),
  1064.       f(hmirror, X2:'Piece', X3:out('Piece')),
  1065.       f(hconcat, X2:a:'Grid', X3:b:'Grid', X4:out('Grid')),
  1066.       f(hconcat, X4:a:'Grid', X4:b:'Grid', X5:out('Grid')),
  1067.       f(hconcat, X5:a:'Grid', X4:b:'Grid', OUT:out('Grid'))
  1068.     ].
  1069. solve('48d8fb45', IN, OUT) :-
  1070.     [ f(objects,
  1071.         IN:'Grid',
  1072.         univalued=true,
  1073.         diagonal=true,
  1074.         without_bg=true,
  1075.         X1:out('Objects')),
  1076.       f(matcher, size, 'ONE':target:'Any', X2:out('Callable')),
  1077.       f(extract,
  1078.         X1:'Container',
  1079.         X2:condition:'Callable',
  1080.         X3:out('Any')),
  1081.       f(lbind, adjacent, X3:fixed:'Any', X4:out('Callable')),
  1082.       f(extract,
  1083.         X1:'Container',
  1084.         X4:condition:'Callable',
  1085.         X5:out('Any')),
  1086.       f(subgrid, X5:'Patch', IN:'Grid', OUT:out('Grid'))
  1087.     ].
  1088. solve(d406998b, IN, OUT) :-
  1089.     [ f(vmirror, IN:'Piece', X1:out('Piece')),
  1090.       f(ofcolor, X1:'Grid', 'FIVE':value:'Integer', X2:out('Indices')),
  1091.       f(compose,
  1092.         even:outer:'Callable',
  1093.         last:inner:'Callable',
  1094.         X3:out('Callable')),
  1095.       f(sfilter,
  1096.         X2:'Container',
  1097.         X3:condition:'Callable',
  1098.         X4:out('Container')),
  1099.       f(fill,
  1100.         X1:'Grid',
  1101.         'THREE':value:'Integer',
  1102.         X4:'Patch',
  1103.         X5:out('Grid')),
  1104.       f(vmirror, X5:'Piece', OUT:out('Piece'))
  1105.     ].
  1106. solve(5.117e+65, IN, OUT) :-
  1107.     [ f(objects,
  1108.         IN:'Grid',
  1109.         univalued=false,
  1110.         diagonal=true,
  1111.         without_bg=true,
  1112.         X1:out('Objects')),
  1113.       f(matcher, numcolors, 'TWO':target:'Any', X2:out('Callable')),
  1114.       f(extract,
  1115.         X1:'Container',
  1116.         X2:condition:'Callable',
  1117.         X3:out('Any')),
  1118.       f(subgrid, X3:'Patch', IN:'Grid', X4:out('Grid')),
  1119.       f(mostcolor, X3:'Element', X5:out('Integer')),
  1120.       f(replace,
  1121.         X4:'Grid',
  1122.         'EIGHT':replacee:'Integer',
  1123.         X5:replacer:'Integer',
  1124.         OUT:out('Grid'))
  1125.     ].
  1126. solve('3906de3d', IN, OUT) :-
  1127.     [ f(rot270, IN:'Grid', X1:out('Grid')),
  1128.       f(rbind, order, identity:fixed:'Any', X2:out('Callable')),
  1129.       f(switch, X1:'Grid', 'ONE':a:'Integer', 'TWO':b:'Integer', X3:out('Grid')),
  1130.       f(apply, X2, X3:'Container', X4:out('Container')),
  1131.       f(switch, X4:'Grid', 'ONE':a:'Integer', 'TWO':b:'Integer', X5:out('Grid')),
  1132.       f(cmirror, X5:'Piece', OUT:out('Piece'))
  1133.     ].
  1134. solve('00d62c1b', IN, OUT) :-
  1135.     [ f(objects,
  1136.         IN:'Grid',
  1137.         univalued=true,
  1138.         diagonal=false,
  1139.         without_bg=false,
  1140.         X1:out('Objects')),
  1141.       f(colorfilter,
  1142.         X1:objs:'Objects',
  1143.         'ZERO':value:'Integer',
  1144.         X2:out('Objects')),
  1145.       f(rbind, bordering, IN:fixed:'Any', X3:out('Callable')),
  1146.       f(compose,
  1147.         flip:outer:'Callable',
  1148.         X3:inner:'Callable',
  1149.         X4:out('Callable')),
  1150.       f(mfilter, X2:'Container', X4, X5:out('FrozenSet')),
  1151.       f(fill,
  1152.         IN:'Grid',
  1153.         'FOUR':value:'Integer',
  1154.         X5:'Patch',
  1155.         OUT:out('Grid'))
  1156.     ].
  1157. solve('7b6016b9', IN, OUT) :-
  1158.     [ f(objects,
  1159.         IN:'Grid',
  1160.         univalued=true,
  1161.         diagonal=false,
  1162.         without_bg=false,
  1163.         X1:out('Objects')),
  1164.       f(rbind, bordering, IN:fixed:'Any', X2:out('Callable')),
  1165.       f(compose,
  1166.         flip:outer:'Callable',
  1167.         X2:inner:'Callable',
  1168.         X3:out('Callable')),
  1169.       f(mfilter, X1:'Container', X3, X4:out('FrozenSet')),
  1170.       f(fill,
  1171.         IN:'Grid',
  1172.         'TWO':value:'Integer',
  1173.         X4:'Patch',
  1174.         X5:out('Grid')),
  1175.       f(replace,
  1176.         X5:'Grid',
  1177.         'ZERO':replacee:'Integer',
  1178.         'THREE':replacer:'Integer',
  1179.         OUT:out('Grid'))
  1180.     ].
  1181. solve('67385a82', IN, OUT) :-
  1182.     [ f(objects,
  1183.         IN:'Grid',
  1184.         univalued=true,
  1185.         diagonal=false,
  1186.         without_bg=false,
  1187.         X1:out('Objects')),
  1188.       f(colorfilter,
  1189.         X1:objs:'Objects',
  1190.         'THREE':value:'Integer',
  1191.         X2:out('Objects')),
  1192.       f(sizefilter, X2:'Container', 'ONE':n:'Integer', X3:out('FrozenSet')),
  1193.       f(difference,
  1194.         X2:a:'FrozenSet',
  1195.         X3:b:'FrozenSet',
  1196.         X4:out('FrozenSet')),
  1197.       f(merge, X4:containers:'ContainerContainer', X5:out('Container')),
  1198.       f(fill,
  1199.         IN:'Grid',
  1200.         'EIGHT':value:'Integer',
  1201.         X5:'Patch',
  1202.         OUT:out('Grid'))
  1203.     ].
  1204. solve(a5313dff, IN, OUT) :-
  1205.     [ f(objects,
  1206.         IN:'Grid',
  1207.         univalued=true,
  1208.         diagonal=false,
  1209.         without_bg=false,
  1210.         X1:out('Objects')),
  1211.       f(colorfilter,
  1212.         X1:objs:'Objects',
  1213.         'ZERO':value:'Integer',
  1214.         X2:out('Objects')),
  1215.       f(rbind, bordering, IN:fixed:'Any', X3:out('Callable')),
  1216.       f(compose,
  1217.         flip:outer:'Callable',
  1218.         X3:inner:'Callable',
  1219.         X4:out('Callable')),
  1220.       f(mfilter, X2:'Container', X4, X5:out('FrozenSet')),
  1221.       f(fill,
  1222.         IN:'Grid',
  1223.         'ONE':value:'Integer',
  1224.         X5:'Patch',
  1225.         OUT:out('Grid'))
  1226.     ].
  1227. solve(ea32f347, IN, OUT) :-
  1228.     [ f(objects,
  1229.         IN:'Grid',
  1230.         univalued=true,
  1231.         diagonal=false,
  1232.         without_bg=true,
  1233.         X1:out('Objects')),
  1234.       f(replace,
  1235.         IN:'Grid',
  1236.         'FIVE':replacee:'Integer',
  1237.         'FOUR':replacer:'Integer',
  1238.         X2:out('Grid')),
  1239.       f(argmin, X1:'Container', size:compfunc:'Callable', X3:out('Any')),
  1240.       f(argmax, X1:'Container', size:compfunc:'Callable', X4:out('Any')),
  1241.       f(fill,
  1242.         X2:'Grid',
  1243.         'ONE':value:'Integer',
  1244.         X4:'Patch',
  1245.         X5:out('Grid')),
  1246.       f(fill,
  1247.         X5:'Grid',
  1248.         'TWO':value:'Integer',
  1249.         X3:'Patch',
  1250.         OUT:out('Grid'))
  1251.     ].
  1252. solve(d631b094, IN, OUT) :-
  1253.     [ f(palette, IN:'Element', X1:out('IntegerSet')),
  1254.       f(other, X1:'Container', 'ZERO':value:'Any', X2:out('Any')),
  1255.       f(ofcolor, IN:'Grid', X2:value:'Integer', X3:out('Indices')),
  1256.       f(size, X3:'Container', X4:out('Integer')),
  1257.       f(astuple, 'ONE':a:'Integer', X4:b:'Integer', X5:out('Point')),
  1258.       f(canvas,
  1259.         X2:value:'Integer',
  1260.         X5:dimensions:'Point',
  1261.         OUT:out('Grid'))
  1262.     ].
  1263. solve('10fcaaa3', IN, OUT) :-
  1264.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  1265.       f(hconcat, IN:a:'Grid', IN:b:'Grid', X2:out('Grid')),
  1266.       f(vconcat, X2:a:'Grid', X2:b:'Grid', X3:out('Grid')),
  1267.       f(ofcolor, X3:'Grid', X1:value:'Integer', X4:out('Indices')),
  1268.       f(mapply,
  1269.         ineighbors,
  1270.         X4:container:'ContainerContainer',
  1271.         X5:out('FrozenSet')),
  1272.       f(underfill,
  1273.         X3:'Grid',
  1274.         'EIGHT':value:'Integer',
  1275.         X5:'Patch',
  1276.         OUT:out('Grid'))
  1277.     ].
  1278. solve('007bbfb7', IN, OUT) :-
  1279.     [ f(hupscale, IN:'Grid', 'THREE':factor:'Integer', X1:out('Grid')),
  1280.       f(vupscale, X1:'Grid', 'THREE':factor:'Integer', X2:out('Grid')),
  1281.       f(hconcat, IN:a:'Grid', IN:b:'Grid', X3:out('Grid')),
  1282.       f(hconcat, X3:a:'Grid', IN:b:'Grid', X4:out('Grid')),
  1283.       f(vconcat, X4:a:'Grid', X4:b:'Grid', X5:out('Grid')),
  1284.       f(vconcat, X5:a:'Grid', X4:b:'Grid', X6:out('Grid')),
  1285.       f(cellwise,
  1286.         X2:a:'Grid',
  1287.         X6:b:'Grid',
  1288.         'ZERO':fallback:'Integer',
  1289.         OUT:out('Grid'))
  1290.     ].
  1291. solve('496994bd', IN, OUT) :-
  1292.     [ f(width, IN:'Piece', X1:out('Integer')),
  1293.       f(height, IN:'Piece', X2:out('Integer')),
  1294.       f(halve, X2:n:'Numerical', X3:out('Numerical')),
  1295.       f(astuple, X3:a:'Integer', X1:b:'Integer', X4:out('Point')),
  1296.       f(crop,
  1297.         IN:'Grid',
  1298.         (0, 0):start:'Point',
  1299.         X4:dims:'Point',
  1300.         X5:out('Grid')),
  1301.       f(hmirror, X5:'Piece', X6:out('Piece')),
  1302.       f(vconcat, X5:a:'Grid', X6:b:'Grid', OUT:out('Grid'))
  1303.     ].
  1304. solve('1f876c06', IN, OUT) :-
  1305.     [ f(fgpartition, IN:'Grid', X1:out('Objects')),
  1306.       f(compose,
  1307.         last:outer:'Callable',
  1308.         first:inner:'Callable',
  1309.         X2:out('Callable')),
  1310.       f(power, last, 'TWO':n:'Integer', X3:out('Callable')),
  1311.       f(fork,
  1312.         connect:outer:'Callable',
  1313.         X2:a:'Callable',
  1314.         X3:b:'Callable',
  1315.         X4:out('Callable')),
  1316.       f(fork,
  1317.         recolor:outer:'Callable',
  1318.         color:a:'Callable',
  1319.         X4:b:'Callable',
  1320.         X5:out('Callable')),
  1321.       f(mapply,
  1322.         X5,
  1323.         X1:container:'ContainerContainer',
  1324.         X6:out('FrozenSet')),
  1325.       f(paint, IN:'Grid', X6:obj:'Object', OUT:out('Grid'))
  1326.     ].
  1327. solve('05f2a901', IN, OUT) :-
  1328.     [ f(objects,
  1329.         IN:'Grid',
  1330.         univalued=true,
  1331.         diagonal=false,
  1332.         without_bg=true,
  1333.         X1:out('Objects')),
  1334.       f(colorfilter,
  1335.         X1:objs:'Objects',
  1336.         'TWO':value:'Integer',
  1337.         X2:out('Objects')),
  1338.       f(first, X2:'Container', X3:out('Any')),
  1339.       f(colorfilter,
  1340.         X1:objs:'Objects',
  1341.         'EIGHT':value:'Integer',
  1342.         X4:out('Objects')),
  1343.       f(first, X4:'Container', X5:out('Any')),
  1344.       f(gravitate,
  1345.         X3:source:'Patch',
  1346.         X5:destination:'Patch',
  1347.         X6:out('Point')),
  1348.       f(move,
  1349.         IN:'Grid',
  1350.         X3:obj:'Object',
  1351.         X6:offset:'Point',
  1352.         OUT:out('Grid'))
  1353.     ].
  1354. solve('39a8645d', IN, OUT) :-
  1355.     [ f(objects,
  1356.         IN:'Grid',
  1357.         univalued=true,
  1358.         diagonal=true,
  1359.         without_bg=true,
  1360.         X1:out('Objects')),
  1361.       f(totuple, X1:container:'FrozenSet', X2:out('Tuple')),
  1362.       f(apply, color, X2:'Container', X3:out('Container')),
  1363.       f(mostcommon, X3:'Container', X4:out('Any')),
  1364.       f(matcher, color, X4:target:'Any', X5:out('Callable')),
  1365.       f(extract,
  1366.         X1:'Container',
  1367.         X5:condition:'Callable',
  1368.         X6:out('Any')),
  1369.       f(subgrid, X6:'Patch', IN:'Grid', OUT:out('Grid'))
  1370.     ].
  1371. solve('1b2d62fb', IN, OUT) :-
  1372.     [ f(lefthalf, IN:'Grid', X1:out('Grid')),
  1373.       f(righthalf, IN:'Grid', X2:out('Grid')),
  1374.       f(ofcolor, X1:'Grid', 'ZERO':value:'Integer', X3:out('Indices')),
  1375.       f(ofcolor, X2:'Grid', 'ZERO':value:'Integer', X4:out('Indices')),
  1376.       f(intersection,
  1377.         X3:a:'FrozenSet',
  1378.         X4:b:'FrozenSet',
  1379.         X5:out('FrozenSet')),
  1380.       f(replace,
  1381.         X1:'Grid',
  1382.         'NINE':replacee:'Integer',
  1383.         'ZERO':replacer:'Integer',
  1384.         X6:out('Grid')),
  1385.       f(fill,
  1386.         X6:'Grid',
  1387.         'EIGHT':value:'Integer',
  1388.         X5:'Patch',
  1389.         OUT:out('Grid'))
  1390.     ].
  1391. solve('90c28cc7', IN, OUT) :-
  1392.     [ f(objects,
  1393.         IN:'Grid',
  1394.         univalued=false,
  1395.         diagonal=false,
  1396.         without_bg=true,
  1397.         X1:out('Objects')),
  1398.       f(first, X1:'Container', X2:out('Any')),
  1399.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  1400.       f(dedupe, X3:tup:'Tuple', X4:out('Tuple')),
  1401.       f(rot90, X4:'Grid', X5:out('Grid')),
  1402.       f(dedupe, X5:tup:'Tuple', X6:out('Tuple')),
  1403.       f(rot270, X6:'Grid', OUT:out('Grid'))
  1404.     ].
  1405. solve(b6afb2da, IN, OUT) :-
  1406.     [ f(objects,
  1407.         IN:'Grid',
  1408.         univalued=true,
  1409.         diagonal=false,
  1410.         without_bg=false,
  1411.         X1:out('Objects')),
  1412.       f(replace,
  1413.         IN:'Grid',
  1414.         'FIVE':replacee:'Integer',
  1415.         'TWO':replacer:'Integer',
  1416.         X2:out('Grid')),
  1417.       f(colorfilter,
  1418.         X1:objs:'Objects',
  1419.         'FIVE':value:'Integer',
  1420.         X3:out('Objects')),
  1421.       f(mapply,
  1422.         box,
  1423.         X3:container:'ContainerContainer',
  1424.         X4:out('FrozenSet')),
  1425.       f(fill,
  1426.         X2:'Grid',
  1427.         'FOUR':value:'Integer',
  1428.         X4:'Patch',
  1429.         X5:out('Grid')),
  1430.       f(mapply,
  1431.         corners,
  1432.         X3:container:'ContainerContainer',
  1433.         X6:out('FrozenSet')),
  1434.       f(fill,
  1435.         X5:'Grid',
  1436.         'ONE':value:'Integer',
  1437.         X6:'Patch',
  1438.         OUT:out('Grid'))
  1439.     ].
  1440. solve(b9b7f026, IN, OUT) :-
  1441.     [ f(objects,
  1442.         IN:'Grid',
  1443.         univalued=true,
  1444.         diagonal=false,
  1445.         without_bg=false,
  1446.         X1:out('Objects')),
  1447.       f(argmin, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  1448.       f(rbind, adjacent, X2:fixed:'Any', X3:out('Callable')),
  1449.       f(remove, X2:value:'Any', X1:'Container', X4:out('Container')),
  1450.       f(extract,
  1451.         X4:'Container',
  1452.         X3:condition:'Callable',
  1453.         X5:out('Any')),
  1454.       f(color, X5:obj:'Object', X6:out('Integer')),
  1455.       f(canvas,
  1456.         X6:value:'Integer',
  1457.         (1, 1):dimensions:'Point',
  1458.         OUT:out('Grid'))
  1459.     ].
  1460. solve(ba97ae07, IN, OUT) :-
  1461.     [ f(objects,
  1462.         IN:'Grid',
  1463.         univalued=true,
  1464.         diagonal=false,
  1465.         without_bg=true,
  1466.         X1:out('Objects')),
  1467.       f(totuple, X1:container:'FrozenSet', X2:out('Tuple')),
  1468.       f(apply, color, X2:'Container', X3:out('Container')),
  1469.       f(mostcommon, X3:'Container', X4:out('Any')),
  1470.       f(ofcolor, IN:'Grid', X4:value:'Integer', X5:out('Indices')),
  1471.       f(backdrop, X5:'Patch', X6:out('Indices')),
  1472.       f(fill,
  1473.         IN:'Grid',
  1474.         X4:value:'Integer',
  1475.         X6:'Patch',
  1476.         OUT:out('Grid'))
  1477.     ].
  1478. solve(c9f8e694, IN, OUT) :-
  1479.     [ f(height, IN:'Piece', X1:out('Integer')),
  1480.       f(width, IN:'Piece', X2:out('Integer')),
  1481.       f(ofcolor, IN:'Grid', 'ZERO':value:'Integer', X3:out('Indices')),
  1482.       f(astuple, X1:a:'Integer', 'ONE':b:'Integer', X4:out('Point')),
  1483.       f(crop,
  1484.         IN:'Grid',
  1485.         (0, 0):start:'Point',
  1486.         X4:dims:'Point',
  1487.         X5:out('Grid')),
  1488.       f(hupscale, X5:'Grid', X2:factor:'Integer', X6:out('Grid')),
  1489.       f(fill,
  1490.         X6:'Grid',
  1491.         'ZERO':value:'Integer',
  1492.         X3:'Patch',
  1493.         OUT:out('Grid'))
  1494.     ].
  1495. solve(d23f8c26, IN, OUT) :-
  1496.     [ f(asindices, IN:'Grid', X1:out('Indices')),
  1497.       f(width, IN:'Piece', X2:out('Integer')),
  1498.       f(halve, X2:n:'Numerical', X3:out('Numerical')),
  1499.       f(matcher, last, X3:target:'Any', X4:out('Callable')),
  1500.       f(compose,
  1501.         flip:outer:'Callable',
  1502.         X4:inner:'Callable',
  1503.         X5:out('Callable')),
  1504.       f(sfilter,
  1505.         X1:'Container',
  1506.         X5:condition:'Callable',
  1507.         X6:out('Container')),
  1508.       f(fill,
  1509.         IN:'Grid',
  1510.         'ZERO':value:'Integer',
  1511.         X6:'Patch',
  1512.         OUT:out('Grid'))
  1513.     ].
  1514. solve(d5d6de2d, IN, OUT) :-
  1515.     [ f(objects,
  1516.         IN:'Grid',
  1517.         univalued=true,
  1518.         diagonal=false,
  1519.         without_bg=true,
  1520.         X1:out('Objects')),
  1521.       f(sfilter,
  1522.         X1:'Container',
  1523.         square:condition:'Callable',
  1524.         X2:out('Container')),
  1525.       f(difference,
  1526.         X1:a:'FrozenSet',
  1527.         X2:b:'FrozenSet',
  1528.         X3:out('FrozenSet')),
  1529.       f(compose,
  1530.         backdrop:outer:'Callable',
  1531.         inbox:inner:'Callable',
  1532.         X4:out('Callable')),
  1533.       f(mapply,
  1534.         X4,
  1535.         X3:container:'ContainerContainer',
  1536.         X5:out('FrozenSet')),
  1537.       f(replace,
  1538.         IN:'Grid',
  1539.         'TWO':replacee:'Integer',
  1540.         'ZERO':replacer:'Integer',
  1541.         X6:out('Grid')),
  1542.       f(fill,
  1543.         X6:'Grid',
  1544.         'THREE':value:'Integer',
  1545.         X5:'Patch',
  1546.         OUT:out('Grid'))
  1547.     ].
  1548. solve(dbc1a6ce, IN, OUT) :-
  1549.     [ f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X1:out('Indices')),
  1550.       f(product,
  1551.         X1:a:'Container',
  1552.         X1:b:'Container',
  1553.         X2:out('FrozenSet')),
  1554.       f(fork,
  1555.         connect:outer:'Callable',
  1556.         first:a:'Callable',
  1557.         last:b:'Callable',
  1558.         X3:out('Callable')),
  1559.       f(apply, X3, X2:'Container', X4:out('Container')),
  1560.       f(fork,
  1561.         either:outer:'Callable',
  1562.         vline:a:'Callable',
  1563.         hline:b:'Callable',
  1564.         X5:out('Callable')),
  1565.       f(mfilter, X4:'Container', X5, X6:out('FrozenSet')),
  1566.       f(underfill,
  1567.         IN:'Grid',
  1568.         'EIGHT':value:'Integer',
  1569.         X6:'Patch',
  1570.         OUT:out('Grid'))
  1571.     ].
  1572. solve(ded97339, IN, OUT) :-
  1573.     [ f(ofcolor, IN:'Grid', 'EIGHT':value:'Integer', X1:out('Indices')),
  1574.       f(product,
  1575.         X1:a:'Container',
  1576.         X1:b:'Container',
  1577.         X2:out('FrozenSet')),
  1578.       f(fork,
  1579.         connect:outer:'Callable',
  1580.         first:a:'Callable',
  1581.         last:b:'Callable',
  1582.         X3:out('Callable')),
  1583.       f(apply, X3, X2:'Container', X4:out('Container')),
  1584.       f(fork,
  1585.         either:outer:'Callable',
  1586.         vline:a:'Callable',
  1587.         hline:b:'Callable',
  1588.         X5:out('Callable')),
  1589.       f(mfilter, X4:'Container', X5, X6:out('FrozenSet')),
  1590.       f(underfill,
  1591.         IN:'Grid',
  1592.         'EIGHT':value:'Integer',
  1593.         X6:'Patch',
  1594.         OUT:out('Grid'))
  1595.     ].
  1596. solve(ea786f4a, IN, OUT) :-
  1597.     [ f(width, IN:'Piece', X1:out('Integer')),
  1598.       f(shoot, (0, 0):start:'Point', (1, 1):direction:'Point', X2:out('Indices')),
  1599.       f(decrement, X1:x:'Numerical', X3:out('Numerical')),
  1600.       f(tojvec, X3:j:'Integer', X4:out('Point')),
  1601.       f(shoot,
  1602.         X4:start:'Point',
  1603.         (1, -1):direction:'Point',
  1604.         X5:out('Indices')),
  1605.       f(combine,
  1606.         X2:a:'Container',
  1607.         X5:b:'Container',
  1608.         X6:out('Container')),
  1609.       f(fill,
  1610.         IN:'Grid',
  1611.         'ZERO':value:'Integer',
  1612.         X6:'Patch',
  1613.         OUT:out('Grid'))
  1614.     ].
  1615. solve('08ed6ac7', IN, OUT) :-
  1616.     [ f(objects,
  1617.         IN:'Grid',
  1618.         univalued=true,
  1619.         diagonal=false,
  1620.         without_bg=true,
  1621.         X1:out('Objects')),
  1622.       f(totuple, X1:container:'FrozenSet', X2:out('Tuple')),
  1623.       f(order, X1:'Container', height:compfunc:'Callable', X3:out('Tuple')),
  1624.       f(size, X2:'Container', X4:out('Integer')),
  1625.       f(interval,
  1626.         X4:start:'Integer',
  1627.         'ZERO':stop:'Integer',
  1628.         'NEG_ONE':step:'Integer',
  1629.         X5:out('Tuple')),
  1630.       f(mpapply, recolor, X5:a:'Tuple', X3:b:'Tuple', X6:out('Tuple')),
  1631.       f(paint, IN:'Grid', X6:obj:'Object', OUT:out('Grid'))
  1632.     ].
  1633. solve(40853293, IN, OUT) :-
  1634.     [ f(partition, IN:'Grid', X1:out('Objects')),
  1635.       f(fork,
  1636.         recolor:outer:'Callable',
  1637.         color:a:'Callable',
  1638.         backdrop:b:'Callable',
  1639.         X2:out('Callable')),
  1640.       f(apply, X2, X1:'Container', X3:out('Container')),
  1641.       f(mfilter, X3:'Container', hline, X4:out('FrozenSet')),
  1642.       f(mfilter, X3:'Container', vline, X5:out('FrozenSet')),
  1643.       f(paint, IN:'Grid', X4:obj:'Object', X6:out('Grid')),
  1644.       f(paint, X6:'Grid', X5:obj:'Object', OUT:out('Grid'))
  1645.     ].
  1646. solve('5521c0d9', IN, OUT) :-
  1647.     [ f(objects,
  1648.         IN:'Grid',
  1649.         univalued=true,
  1650.         diagonal=false,
  1651.         without_bg=true,
  1652.         X1:out('Objects')),
  1653.       f(merge, X1:containers:'ContainerContainer', X2:out('Container')),
  1654.       f(cover, IN:'Grid', X2:'Patch', X3:out('Grid')),
  1655.       f(chain,
  1656.         toivec:h:'Callable',
  1657.         invert:g:'Callable',
  1658.         height:f:'Callable',
  1659.         X4:out('Callable')),
  1660.       f(fork,
  1661.         shift:outer:'Callable',
  1662.         identity:a:'Callable',
  1663.         X4:b:'Callable',
  1664.         X5:out('Callable')),
  1665.       f(mapply,
  1666.         X5,
  1667.         X1:container:'ContainerContainer',
  1668.         X6:out('FrozenSet')),
  1669.       f(paint, X3:'Grid', X6:obj:'Object', OUT:out('Grid'))
  1670.     ].
  1671. solve(f8ff0b80, IN, OUT) :-
  1672.     [ f(objects,
  1673.         IN:'Grid',
  1674.         univalued=true,
  1675.         diagonal=true,
  1676.         without_bg=true,
  1677.         X1:out('Objects')),
  1678.       f(order, X1:'Container', size:compfunc:'Callable', X2:out('Tuple')),
  1679.       f(apply, color, X2:'Container', X3:out('Container')),
  1680.       f(rbind, canvas, (1, 1):fixed:'Any', X4:out('Callable')),
  1681.       f(apply, X4, X3:'Container', X5:out('Container')),
  1682.       f(merge, X5:containers:'ContainerContainer', X6:out('Container')),
  1683.       f(hmirror, X6:'Piece', OUT:out('Piece'))
  1684.     ].
  1685. solve('85c4e7cd', IN, OUT) :-
  1686.     [ f(objects,
  1687.         IN:'Grid',
  1688.         univalued=true,
  1689.         diagonal=false,
  1690.         without_bg=false,
  1691.         X1:out('Objects')),
  1692.       f(compose,
  1693.         invert:outer:'Callable',
  1694.         size:inner:'Callable',
  1695.         X2:out('Callable')),
  1696.       f(order, X1:'Container', size:compfunc:'Callable', X3:out('Tuple')),
  1697.       f(order,
  1698.         X1:'Container',
  1699.         X2:compfunc:'Callable',
  1700.         X4:out('Tuple')),
  1701.       f(apply, color, X4:'Container', X5:out('Container')),
  1702.       f(mpapply, recolor, X5:a:'Tuple', X3:b:'Tuple', X6:out('Tuple')),
  1703.       f(paint, IN:'Grid', X6:obj:'Object', OUT:out('Grid'))
  1704.     ].
  1705. solve(d2abd087, IN, OUT) :-
  1706.     [ f(objects,
  1707.         IN:'Grid',
  1708.         univalued=true,
  1709.         diagonal=false,
  1710.         without_bg=true,
  1711.         X1:out('Objects')),
  1712.       f(matcher, size, 'SIX':target:'Any', X2:out('Callable')),
  1713.       f(compose,
  1714.         flip:outer:'Callable',
  1715.         X2:inner:'Callable',
  1716.         X3:out('Callable')),
  1717.       f(mfilter, X1:'Container', X2, X4:out('FrozenSet')),
  1718.       f(mfilter, X1:'Container', X3, X5:out('FrozenSet')),
  1719.       f(fill,
  1720.         IN:'Grid',
  1721.         'TWO':value:'Integer',
  1722.         X4:'Patch',
  1723.         X6:out('Grid')),
  1724.       f(fill,
  1725.         X6:'Grid',
  1726.         'ONE':value:'Integer',
  1727.         X5:'Patch',
  1728.         OUT:out('Grid'))
  1729.     ].
  1730. solve('017c7c7b', IN, OUT) :-
  1731.     [ f(tophalf, IN:'Grid', X1:out('Grid')),
  1732.       f(bottomhalf, IN:'Grid', X2:out('Grid')),
  1733.       f(equality, X1:a:'Any', X2:b:'Any', returns=X3),
  1734.       f(crop,
  1735.         IN:'Grid',
  1736.         (2, 0):start:'Point',
  1737.         (3, 3):dims:'Point',
  1738.         X4:out('Grid')),
  1739.       f(branch,
  1740.         condition=X3,
  1741.         X2:a:'Any',
  1742.         X4:b:'Any',
  1743.         X5:out('Any')),
  1744.       f(vconcat, IN:a:'Grid', X5:b:'Grid', X6:out('Grid')),
  1745.       f(replace,
  1746.         X6:'Grid',
  1747.         'ONE':replacee:'Integer',
  1748.         'TWO':replacer:'Integer',
  1749.         OUT:out('Grid'))
  1750.     ].
  1751. solve('363442ee', IN, OUT) :-
  1752.     [ f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X1:out('Indices')),
  1753.       f(crop,
  1754.         IN:'Grid',
  1755.         (0, 0):start:'Point',
  1756.         (3, 3):dims:'Point',
  1757.         X2:out('Grid')),
  1758.       f(asobject, X2:'Grid', X3:out('Object')),
  1759.       f(lbind, shift, X3:fixed:'Any', X4:out('Callable')),
  1760.       f(compose,
  1761.         X4:outer:'Callable',
  1762.         decrement:inner:'Callable',
  1763.         X5:out('Callable')),
  1764.       f(mapply,
  1765.         X5,
  1766.         X1:container:'ContainerContainer',
  1767.         X6:out('FrozenSet')),
  1768.       f(paint, IN:'Grid', X6:obj:'Object', OUT:out('Grid'))
  1769.     ].
  1770. solve('5168d44c', IN, OUT) :-
  1771.     [ f(ofcolor, IN:'Grid', 'THREE':value:'Integer', X1:out('Indices')),
  1772.       f(height, X1:'Piece', X2:out('Integer')),
  1773.       f(equality, X2:a:'Any', 'ONE':b:'Any', returns=X3),
  1774.       f(branch, condition=X3, (0, 2):a:'Any', (2, 0):b:'Any', X4:out('Any')),
  1775.       f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X5:out('Indices')),
  1776.       f(recolor, 'TWO':value:'Integer', X5:'Patch', X6:out('Object')),
  1777.       f(move,
  1778.         IN:'Grid',
  1779.         X6:obj:'Object',
  1780.         X4:offset:'Point',
  1781.         OUT:out('Grid'))
  1782.     ].
  1783. solve(e9614598, IN, OUT) :-
  1784.     [ f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X1:out('Indices')),
  1785.       f(fork,
  1786.         add:outer:'Callable',
  1787.         first:a:'Callable',
  1788.         last:b:'Callable',
  1789.         X2:out('Callable')),
  1790.       f(X2, X1, X3),
  1791.       f(halve, X3:n:'Numerical', X4:out('Numerical')),
  1792.       f(dneighbors, X4:loc:'Point', X5:out('Indices')),
  1793.       f(insert,
  1794.         X4:value:'Any',
  1795.         X5:container:'FrozenSet',
  1796.         X6:out('FrozenSet')),
  1797.       f(fill,
  1798.         IN:'Grid',
  1799.         'THREE':value:'Integer',
  1800.         X6:'Patch',
  1801.         OUT:out('Grid'))
  1802.     ].
  1803. solve(d9fac9be, IN, OUT) :-
  1804.     [ f(palette, IN:'Element', X1:out('IntegerSet')),
  1805.       f(objects,
  1806.         IN:'Grid',
  1807.         univalued=true,
  1808.         diagonal=false,
  1809.         without_bg=true,
  1810.         X2:out('Objects')),
  1811.       f(argmax, X2:'Container', size:compfunc:'Callable', X3:out('Any')),
  1812.       f(color, X3:obj:'Object', X4:out('Integer')),
  1813.       f(remove, 'ZERO':value:'Any', X1:'Container', X5:out('Container')),
  1814.       f(other, X5:'Container', X4:value:'Any', X6:out('Any')),
  1815.       f(canvas,
  1816.         X6:value:'Integer',
  1817.         (1, 1):dimensions:'Point',
  1818.         OUT:out('Grid'))
  1819.     ].
  1820. solve(e50d258f, IN, OUT) :-
  1821.     [ f(width, IN:'Piece', X1:out('Integer')),
  1822.       f(astuple, 'NINE':a:'Integer', X1:b:'Integer', X2:out('Point')),
  1823.       f(canvas,
  1824.         'ZERO':value:'Integer',
  1825.         X2:dimensions:'Point',
  1826.         X3:out('Grid')),
  1827.       f(vconcat, IN:a:'Grid', X3:b:'Grid', X4:out('Grid')),
  1828.       f(objects,
  1829.         X4:'Grid',
  1830.         univalued=false,
  1831.         diagonal=false,
  1832.         without_bg=true,
  1833.         X5:out('Objects')),
  1834.       f(rbind, colorcount, 'TWO':fixed:'Any', X6:out('Callable')),
  1835.       f(argmax,
  1836.         X5:'Container',
  1837.         X6:compfunc:'Callable',
  1838.         X7:out('Any')),
  1839.       f(subgrid, X7:'Patch', IN:'Grid', OUT:out('Grid'))
  1840.     ].
  1841. solve('810b9b61', IN, OUT) :-
  1842.     [ f(objects,
  1843.         IN:'Grid',
  1844.         univalued=true,
  1845.         diagonal=true,
  1846.         without_bg=true,
  1847.         X1:out('Objects')),
  1848.       f(apply, toindices, X1:'Container', X2:out('Container')),
  1849.       f(fork,
  1850.         either:outer:'Callable',
  1851.         vline:a:'Callable',
  1852.         hline:b:'Callable',
  1853.         X3:out('Callable')),
  1854.       f(sfilter,
  1855.         X2:'Container',
  1856.         X3:condition:'Callable',
  1857.         X4:out('Container')),
  1858.       f(difference,
  1859.         X2:a:'FrozenSet',
  1860.         X4:b:'FrozenSet',
  1861.         X5:out('FrozenSet')),
  1862.       f(fork,
  1863.         equality:outer:'Callable',
  1864.         identity:a:'Callable',
  1865.         box:b:'Callable',
  1866.         X6:out('Callable')),
  1867.       f(mfilter, X5:'Container', X6, X7:out('FrozenSet')),
  1868.       f(fill,
  1869.         IN:'Grid',
  1870.         'THREE':value:'Integer',
  1871.         X7:'Patch',
  1872.         OUT:out('Grid'))
  1873.     ].
  1874. solve('54d82841', IN, OUT) :-
  1875.     [ f(height, IN:'Piece', X1:out('Integer')),
  1876.       f(objects,
  1877.         IN:'Grid',
  1878.         univalued=true,
  1879.         diagonal=false,
  1880.         without_bg=true,
  1881.         X2:out('Objects')),
  1882.       f(compose,
  1883.         last:outer:'Callable',
  1884.         center:inner:'Callable',
  1885.         X3:out('Callable')),
  1886.       f(apply, X3, X2:'Container', X4:out('Container')),
  1887.       f(decrement, X1:x:'Numerical', X5:out('Numerical')),
  1888.       f(lbind, astuple, X5:fixed:'Any', X6:out('Callable')),
  1889.       f(apply, X6, X4:'Container', X7:out('Container')),
  1890.       f(fill,
  1891.         IN:'Grid',
  1892.         'FOUR':value:'Integer',
  1893.         X7:'Patch',
  1894.         OUT:out('Grid'))
  1895.     ].
  1896. solve('60b61512', IN, OUT) :-
  1897.     [ f(objects,
  1898.         IN:'Grid',
  1899.         univalued=true,
  1900.         diagonal=true,
  1901.         without_bg=true,
  1902.         X1:out('Objects')),
  1903.       f(rbind, subgrid, IN:fixed:'Any', X2:out('Callable')),
  1904.       f(compose,
  1905.         asindices:outer:'Callable',
  1906.         X2:inner:'Callable',
  1907.         X3:out('Callable')),
  1908.       f(fork,
  1909.         shift:outer:'Callable',
  1910.         X3:a:'Callable',
  1911.         ulcorner:b:'Callable',
  1912.         X4:out('Callable')),
  1913.       f(mapply,
  1914.         X4,
  1915.         X1:container:'ContainerContainer',
  1916.         X5:out('FrozenSet')),
  1917.       f(fill,
  1918.         IN:'Grid',
  1919.         'SEVEN':value:'Integer',
  1920.         X5:'Patch',
  1921.         X6:out('Grid')),
  1922.       f(merge, X1:containers:'ContainerContainer', X7:out('Container')),
  1923.       f(paint, X6:'Grid', X7:obj:'Object', OUT:out('Grid'))
  1924.     ].
  1925. solve('25d8a9c8', IN, OUT) :-
  1926.     [ f(asindices, IN:'Grid', X1:out('Indices')),
  1927.       f(objects,
  1928.         IN:'Grid',
  1929.         univalued=true,
  1930.         diagonal=false,
  1931.         without_bg=false,
  1932.         X2:out('Objects')),
  1933.       f(sizefilter, X2:'Container', 'THREE':n:'Integer', X3:out('FrozenSet')),
  1934.       f(mfilter, X3:'Container', hline, X4:out('FrozenSet')),
  1935.       f(toindices, X4:'Patch', X5:out('Indices')),
  1936.       f(difference,
  1937.         X1:a:'FrozenSet',
  1938.         X5:b:'FrozenSet',
  1939.         X6:out('FrozenSet')),
  1940.       f(fill,
  1941.         IN:'Grid',
  1942.         'FIVE':value:'Integer',
  1943.         X5:'Patch',
  1944.         X7:out('Grid')),
  1945.       f(fill,
  1946.         X7:'Grid',
  1947.         'ZERO':value:'Integer',
  1948.         X6:'Patch',
  1949.         OUT:out('Grid'))
  1950.     ].
  1951. solve('239be575', IN, OUT) :-
  1952.     [ f(objects,
  1953.         IN:'Grid',
  1954.         univalued=false,
  1955.         diagonal=true,
  1956.         without_bg=true,
  1957.         X1:out('Objects')),
  1958.       f(lbind, contained, 'TWO':fixed:'Any', X2:out('Callable')),
  1959.       f(compose,
  1960.         X2:outer:'Callable',
  1961.         palette:inner:'Callable',
  1962.         X3:out('Callable')),
  1963.       f(sfilter,
  1964.         X1:'Container',
  1965.         X3:condition:'Callable',
  1966.         X4:out('Container')),
  1967.       f(size, X4:'Container', X5:out('Integer')),
  1968.       f(greater, X5:a:'Integer', 'ONE':b:'Integer', returns=X6),
  1969.       f(branch, condition=X6, 'ZERO':a:'Any', 'EIGHT':b:'Any', X7:out('Any')),
  1970.       f(canvas,
  1971.         X7:value:'Integer',
  1972.         (1, 1):dimensions:'Point',
  1973.         OUT:out('Grid'))
  1974.     ].
  1975. solve('67a423a3', IN, OUT) :-
  1976.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  1977.       f(objects,
  1978.         IN:'Grid',
  1979.         univalued=true,
  1980.         diagonal=false,
  1981.         without_bg=true,
  1982.         X2:out('Objects')),
  1983.       f(colorfilter,
  1984.         X2:objs:'Objects',
  1985.         X1:value:'Integer',
  1986.         X3:out('Objects')),
  1987.       f(merge, X3:containers:'ContainerContainer', X4:out('Container')),
  1988.       f(delta, X4:'Patch', X5:out('Indices')),
  1989.       f(first, X5:'Container', X6:out('Any')),
  1990.       f(neighbors, X6:loc:'Point', X7:out('Indices')),
  1991.       f(fill,
  1992.         IN:'Grid',
  1993.         'FOUR':value:'Integer',
  1994.         X7:'Patch',
  1995.         OUT:out('Grid'))
  1996.     ].
  1997. solve('5c0a986e', IN, OUT) :-
  1998.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  1999.       f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X2:out('Indices')),
  2000.       f(lrcorner, X1:'Patch', X3:out('Point')),
  2001.       f(ulcorner, X2:'Patch', X4:out('Point')),
  2002.       f(shoot,
  2003.         X3:start:'Point',
  2004.         (1, 1):direction:'Point',
  2005.         X5:out('Indices')),
  2006.       f(shoot,
  2007.         X4:start:'Point',
  2008.         (-1, -1):direction:'Point',
  2009.         X6:out('Indices')),
  2010.       f(fill,
  2011.         IN:'Grid',
  2012.         'TWO':value:'Integer',
  2013.         X5:'Patch',
  2014.         X7:out('Grid')),
  2015.       f(fill,
  2016.         X7:'Grid',
  2017.         'ONE':value:'Integer',
  2018.         X6:'Patch',
  2019.         OUT:out('Grid'))
  2020.     ].
  2021. solve('6430c8c4', IN, OUT) :-
  2022.     [ f(tophalf, IN:'Grid', X1:out('Grid')),
  2023.       f(bottomhalf, IN:'Grid', X2:out('Grid')),
  2024.       f(astuple, 'FOUR':a:'Integer', 'FOUR':b:'Integer', X3:out('Point')),
  2025.       f(ofcolor, X1:'Grid', 'ZERO':value:'Integer', X4:out('Indices')),
  2026.       f(ofcolor, X2:'Grid', 'ZERO':value:'Integer', X5:out('Indices')),
  2027.       f(intersection,
  2028.         X4:a:'FrozenSet',
  2029.         X5:b:'FrozenSet',
  2030.         X6:out('FrozenSet')),
  2031.       f(canvas,
  2032.         'ZERO':value:'Integer',
  2033.         X3:dimensions:'Point',
  2034.         X7:out('Grid')),
  2035.       f(fill,
  2036.         X7:'Grid',
  2037.         'THREE':value:'Integer',
  2038.         X6:'Patch',
  2039.         OUT:out('Grid'))
  2040.     ].
  2041. solve('94f9d214', IN, OUT) :-
  2042.     [ f(tophalf, IN:'Grid', X1:out('Grid')),
  2043.       f(bottomhalf, IN:'Grid', X2:out('Grid')),
  2044.       f(ofcolor, X1:'Grid', 'ZERO':value:'Integer', X3:out('Indices')),
  2045.       f(ofcolor, X2:'Grid', 'ZERO':value:'Integer', X4:out('Indices')),
  2046.       f(astuple, 'FOUR':a:'Integer', 'FOUR':b:'Integer', X5:out('Point')),
  2047.       f(canvas,
  2048.         'ZERO':value:'Integer',
  2049.         X5:dimensions:'Point',
  2050.         X6:out('Grid')),
  2051.       f(intersection,
  2052.         X3:a:'FrozenSet',
  2053.         X4:b:'FrozenSet',
  2054.         X7:out('FrozenSet')),
  2055.       f(fill,
  2056.         X6:'Grid',
  2057.         'TWO':value:'Integer',
  2058.         X7:'Patch',
  2059.         OUT:out('Grid'))
  2060.     ].
  2061. solve(a1570a43, IN, OUT) :-
  2062.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  2063.       f(ofcolor, IN:'Grid', 'THREE':value:'Integer', X2:out('Indices')),
  2064.       f(recolor, 'TWO':value:'Integer', X1:'Patch', X3:out('Object')),
  2065.       f(ulcorner, X2:'Patch', X4:out('Point')),
  2066.       f(ulcorner, X1:'Patch', X5:out('Point')),
  2067.       f(subtract,
  2068.         X4:a:'Numerical',
  2069.         X5:b:'Numerical',
  2070.         X6:out('Numerical')),
  2071.       f(increment, X6:x:'Numerical', X7:out('Numerical')),
  2072.       f(move,
  2073.         IN:'Grid',
  2074.         X3:obj:'Object',
  2075.         X7:offset:'Point',
  2076.         OUT:out('Grid'))
  2077.     ].
  2078. solve(ce4f8723, IN, OUT) :-
  2079.     [ f(tophalf, IN:'Grid', X1:out('Grid')),
  2080.       f(bottomhalf, IN:'Grid', X2:out('Grid')),
  2081.       f(ofcolor, X1:'Grid', 'ZERO':value:'Integer', X3:out('Indices')),
  2082.       f(ofcolor, X2:'Grid', 'ZERO':value:'Integer', X4:out('Indices')),
  2083.       f(intersection,
  2084.         X3:a:'FrozenSet',
  2085.         X4:b:'FrozenSet',
  2086.         X5:out('FrozenSet')),
  2087.       f(astuple, 'FOUR':a:'Integer', 'FOUR':b:'Integer', X6:out('Point')),
  2088.       f(canvas,
  2089.         'THREE':value:'Integer',
  2090.         X6:dimensions:'Point',
  2091.         X7:out('Grid')),
  2092.       f(fill,
  2093.         X7:'Grid',
  2094.         'ZERO':value:'Integer',
  2095.         X5:'Patch',
  2096.         OUT:out('Grid'))
  2097.     ].
  2098. solve(d13f3404, IN, OUT) :-
  2099.     [ f(objects,
  2100.         IN:'Grid',
  2101.         univalued=true,
  2102.         diagonal=false,
  2103.         without_bg=true,
  2104.         X1:out('Objects')),
  2105.       f(rbind, shoot, (1, 1):fixed:'Any', X2:out('Callable')),
  2106.       f(compose,
  2107.         X2:outer:'Callable',
  2108.         center:inner:'Callable',
  2109.         X3:out('Callable')),
  2110.       f(fork,
  2111.         recolor:outer:'Callable',
  2112.         color:a:'Callable',
  2113.         X3:b:'Callable',
  2114.         X4:out('Callable')),
  2115.       f(mapply,
  2116.         X4,
  2117.         X1:container:'ContainerContainer',
  2118.         X5:out('FrozenSet')),
  2119.       f(astuple, 'SIX':a:'Integer', 'SIX':b:'Integer', X6:out('Point')),
  2120.       f(canvas,
  2121.         'ZERO':value:'Integer',
  2122.         X6:dimensions:'Point',
  2123.         X7:out('Grid')),
  2124.       f(paint, X7:'Grid', X5:obj:'Object', OUT:out('Grid'))
  2125.     ].
  2126. solve(dc433765, IN, OUT) :-
  2127.     [ f(ofcolor, IN:'Grid', 'THREE':value:'Integer', X1:out('Indices')),
  2128.       f(ofcolor, IN:'Grid', 'FOUR':value:'Integer', X2:out('Indices')),
  2129.       f(first, X1:'Container', X3:out('Any')),
  2130.       f(first, X2:'Container', X4:out('Any')),
  2131.       f(subtract,
  2132.         X4:a:'Numerical',
  2133.         X3:b:'Numerical',
  2134.         X5:out('Numerical')),
  2135.       f(sign, X5:x:'Numerical', X6:out('Numerical')),
  2136.       f(recolor, 'THREE':value:'Integer', X1:'Patch', X7:out('Object')),
  2137.       f(move,
  2138.         IN:'Grid',
  2139.         X7:obj:'Object',
  2140.         X6:offset:'Point',
  2141.         OUT:out('Grid'))
  2142.     ].
  2143. solve(f2829549, IN, OUT) :-
  2144.     [ f(lefthalf, IN:'Grid', X1:out('Grid')),
  2145.       f(righthalf, IN:'Grid', X2:out('Grid')),
  2146.       f(ofcolor, X1:'Grid', 'ZERO':value:'Integer', X3:out('Indices')),
  2147.       f(ofcolor, X2:'Grid', 'ZERO':value:'Integer', X4:out('Indices')),
  2148.       f(intersection,
  2149.         X3:a:'FrozenSet',
  2150.         X4:b:'FrozenSet',
  2151.         X5:out('FrozenSet')),
  2152.       f(shape, X1:'Piece', X6:out('Point')),
  2153.       f(canvas,
  2154.         'ZERO':value:'Integer',
  2155.         X6:dimensions:'Point',
  2156.         X7:out('Grid')),
  2157.       f(fill,
  2158.         X7:'Grid',
  2159.         'THREE':value:'Integer',
  2160.         X5:'Patch',
  2161.         OUT:out('Grid'))
  2162.     ].
  2163. solve(fafffa47, IN, OUT) :-
  2164.     [ f(tophalf, IN:'Grid', X1:out('Grid')),
  2165.       f(bottomhalf, IN:'Grid', X2:out('Grid')),
  2166.       f(shape, X2:'Piece', X3:out('Point')),
  2167.       f(ofcolor, X1:'Grid', 'ZERO':value:'Integer', X4:out('Indices')),
  2168.       f(ofcolor, X2:'Grid', 'ZERO':value:'Integer', X5:out('Indices')),
  2169.       f(intersection,
  2170.         X4:a:'FrozenSet',
  2171.         X5:b:'FrozenSet',
  2172.         X6:out('FrozenSet')),
  2173.       f(canvas,
  2174.         'ZERO':value:'Integer',
  2175.         X3:dimensions:'Point',
  2176.         X7:out('Grid')),
  2177.       f(fill,
  2178.         X7:'Grid',
  2179.         'TWO':value:'Integer',
  2180.         X6:'Patch',
  2181.         OUT:out('Grid'))
  2182.     ].
  2183. solve(fcb5c309, IN, OUT) :-
  2184.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  2185.       f(objects,
  2186.         IN:'Grid',
  2187.         univalued=true,
  2188.         diagonal=false,
  2189.         without_bg=true,
  2190.         X2:out('Objects')),
  2191.       f(colorfilter,
  2192.         X2:objs:'Objects',
  2193.         X1:value:'Integer',
  2194.         X3:out('Objects')),
  2195.       f(difference,
  2196.         X2:a:'FrozenSet',
  2197.         X3:b:'FrozenSet',
  2198.         X4:out('FrozenSet')),
  2199.       f(argmax, X4:'Container', size:compfunc:'Callable', X5:out('Any')),
  2200.       f(color, X5:obj:'Object', X6:out('Integer')),
  2201.       f(subgrid, X5:'Patch', IN:'Grid', X7:out('Grid')),
  2202.       f(replace,
  2203.         X7:'Grid',
  2204.         X6:replacee:'Integer',
  2205.         X1:replacer:'Integer',
  2206.         OUT:out('Grid'))
  2207.     ].
  2208. solve(ff805c23, IN, OUT) :-
  2209.     [ f(hmirror, IN:'Piece', X1:out('Piece')),
  2210.       f(vmirror, IN:'Piece', X2:out('Piece')),
  2211.       f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X3:out('Indices')),
  2212.       f(subgrid, X3:'Patch', X1:'Grid', X4:out('Grid')),
  2213.       f(subgrid, X3:'Patch', X2:'Grid', X5:out('Grid')),
  2214.       f(palette, X4:'Element', X6:out('IntegerSet')),
  2215.       f(contained, 'ONE':value:'Any', X6:'Container', returns=X7),
  2216.       f(branch,
  2217.         condition=X7,
  2218.         X5:a:'Any',
  2219.         X4:b:'Any',
  2220.         OUT:out('Any'))
  2221.     ].
  2222. solve(e76a88a6, IN, OUT) :-
  2223.     [ f(objects,
  2224.         IN:'Grid',
  2225.         univalued=false,
  2226.         diagonal=false,
  2227.         without_bg=true,
  2228.         X1:out('Objects')),
  2229.       f(argmax,
  2230.         X1:'Container',
  2231.         numcolors:compfunc:'Callable',
  2232.         X2:out('Any')),
  2233.       f(normalize, X2:'Patch', X3:out('Patch')),
  2234.       f(remove, X2:value:'Any', X1:'Container', X4:out('Container')),
  2235.       f(apply, ulcorner, X4:'Container', X5:out('Container')),
  2236.       f(lbind, shift, X3:fixed:'Any', X6:out('Callable')),
  2237.       f(mapply,
  2238.         X6,
  2239.         X5:container:'ContainerContainer',
  2240.         X7:out('FrozenSet')),
  2241.       f(paint, IN:'Grid', X7:obj:'Object', OUT:out('Grid'))
  2242.     ].
  2243. solve('7c008303', IN, OUT) :-
  2244.     [ f(ofcolor, IN:'Grid', 'THREE':value:'Integer', X1:out('Indices')),
  2245.       f(subgrid, X1:'Patch', IN:'Grid', X2:out('Grid')),
  2246.       f(ofcolor, X2:'Grid', 'ZERO':value:'Integer', X3:out('Indices')),
  2247.       f(replace,
  2248.         IN:'Grid',
  2249.         'THREE':replacee:'Integer',
  2250.         'ZERO':replacer:'Integer',
  2251.         X4:out('Grid')),
  2252.       f(replace,
  2253.         X4:'Grid',
  2254.         'EIGHT':replacee:'Integer',
  2255.         'ZERO':replacer:'Integer',
  2256.         X5:out('Grid')),
  2257.       f(compress, X5:'Grid', X6:out('Grid')),
  2258.       f(upscale, X6:'Element', 'THREE':factor:'Integer', X7:out('Element')),
  2259.       f(fill,
  2260.         X7:'Grid',
  2261.         'ZERO':value:'Integer',
  2262.         X3:'Patch',
  2263.         OUT:out('Grid'))
  2264.     ].
  2265. solve('7f4411dc', IN, OUT) :-
  2266.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  2267.       f(ofcolor, IN:'Grid', X1:value:'Integer', X2:out('Indices')),
  2268.       f(rbind, difference, X2:fixed:'Any', X3:out('Callable')),
  2269.       f(rbind, greater, 'TWO':fixed:'Any', X4:out('Callable')),
  2270.       f(chain,
  2271.         X4:h:'Callable',
  2272.         size:g:'Callable',
  2273.         X3:f:'Callable',
  2274.         X5:out('Callable')),
  2275.       f(compose,
  2276.         X5:outer:'Callable',
  2277.         dneighbors:inner:'Callable',
  2278.         X6:out('Callable')),
  2279.       f(sfilter,
  2280.         X2:'Container',
  2281.         X6:condition:'Callable',
  2282.         X7:out('Container')),
  2283.       f(fill,
  2284.         IN:'Grid',
  2285.         'ZERO':value:'Integer',
  2286.         X7:'Patch',
  2287.         OUT:out('Grid'))
  2288.     ].
  2289. solve(b230c067, IN, OUT) :-
  2290.     [ f(objects,
  2291.         IN:'Grid',
  2292.         univalued=true,
  2293.         diagonal=true,
  2294.         without_bg=true,
  2295.         X1:out('Objects')),
  2296.       f(totuple, X1:container:'FrozenSet', X2:out('Tuple')),
  2297.       f(apply, normalize, X2:'Container', X3:out('Container')),
  2298.       f(leastcommon, X3:'Container', X4:out('Any')),
  2299.       f(matcher, normalize, X4:target:'Any', X5:out('Callable')),
  2300.       f(extract,
  2301.         X1:'Container',
  2302.         X5:condition:'Callable',
  2303.         X6:out('Any')),
  2304.       f(replace,
  2305.         IN:'Grid',
  2306.         'EIGHT':replacee:'Integer',
  2307.         'ONE':replacer:'Integer',
  2308.         X7:out('Grid')),
  2309.       f(fill,
  2310.         X7:'Grid',
  2311.         'TWO':value:'Integer',
  2312.         X6:'Patch',
  2313.         OUT:out('Grid'))
  2314.     ].
  2315. solve(e8593010, IN, OUT) :-
  2316.     [ f(objects,
  2317.         IN:'Grid',
  2318.         univalued=true,
  2319.         diagonal=false,
  2320.         without_bg=true,
  2321.         X1:out('Objects')),
  2322.       f(sizefilter, X1:'Container', 'ONE':n:'Integer', X2:out('FrozenSet')),
  2323.       f(sizefilter, X1:'Container', 'TWO':n:'Integer', X3:out('FrozenSet')),
  2324.       f(merge, X2:containers:'ContainerContainer', X4:out('Container')),
  2325.       f(fill,
  2326.         IN:'Grid',
  2327.         'THREE':value:'Integer',
  2328.         X4:'Patch',
  2329.         X5:out('Grid')),
  2330.       f(merge, X3:containers:'ContainerContainer', X6:out('Container')),
  2331.       f(fill,
  2332.         X5:'Grid',
  2333.         'TWO':value:'Integer',
  2334.         X6:'Patch',
  2335.         X7:out('Grid')),
  2336.       f(replace,
  2337.         X7:'Grid',
  2338.         'ZERO':replacee:'Integer',
  2339.         'ONE':replacer:'Integer',
  2340.         OUT:out('Grid'))
  2341.     ].
  2342. solve('6d75e8bb', IN, OUT) :-
  2343.     [ f(objects,
  2344.         IN:'Grid',
  2345.         univalued=true,
  2346.         diagonal=false,
  2347.         without_bg=true,
  2348.         X1:out('Objects')),
  2349.       f(first, X1:'Container', X2:out('Any')),
  2350.       f(ulcorner, X2:'Patch', X3:out('Point')),
  2351.       f(subgrid, X2:'Patch', IN:'Grid', X4:out('Grid')),
  2352.       f(replace,
  2353.         X4:'Grid',
  2354.         'ZERO':replacee:'Integer',
  2355.         'TWO':replacer:'Integer',
  2356.         X5:out('Grid')),
  2357.       f(asobject, X5:'Grid', X6:out('Object')),
  2358.       f(shift, X6:'Patch', X3:directions:'Point', X7:out('Patch')),
  2359.       f(paint, IN:'Grid', X7:obj:'Object', OUT:out('Grid'))
  2360.     ].
  2361. solve('3f7978a0', IN, OUT) :-
  2362.     [ f(fgpartition, IN:'Grid', X1:out('Objects')),
  2363.       f(matcher, color, 'FIVE':target:'Any', X2:out('Callable')),
  2364.       f(extract,
  2365.         X1:'Container',
  2366.         X2:condition:'Callable',
  2367.         X3:out('Any')),
  2368.       f(ulcorner, X3:'Patch', X4:out('Point')),
  2369.       f(subtract,
  2370.         X4:a:'Numerical',
  2371.         (1, 0):b:'Numerical',
  2372.         X5:out('Numerical')),
  2373.       f(shape, X3:'Piece', X6:out('Point')),
  2374.       f(add, X6:a:'Numerical', (2, 0):b:'Numerical', X7:out('Numerical')),
  2375.       f(crop,
  2376.         IN:'Grid',
  2377.         X5:start:'Point',
  2378.         X7:dims:'Point',
  2379.         OUT:out('Grid'))
  2380.     ].
  2381. solve('1190e5a7', IN, OUT) :-
  2382.     [ f(mostcolor, IN:'Element', X1:out('Integer')),
  2383.       f(frontiers, IN:'Grid', X2:out('Objects')),
  2384.       f(sfilter,
  2385.         X2:'Container',
  2386.         vline:condition:'Callable',
  2387.         X3:out('Container')),
  2388.       f(difference,
  2389.         X2:a:'FrozenSet',
  2390.         X3:b:'FrozenSet',
  2391.         X4:out('FrozenSet')),
  2392.       f(astuple, X4:a:'Integer', X3:b:'Integer', X5:out('Point')),
  2393.       f(apply, size, X5:'Container', X6:out('Container')),
  2394.       f(increment, X6:x:'Numerical', X7:out('Numerical')),
  2395.       f(canvas,
  2396.         X1:value:'Integer',
  2397.         X7:dimensions:'Point',
  2398.         OUT:out('Grid'))
  2399.     ].
  2400. solve('6e02f1e3', IN, OUT) :-
  2401.     [ f(numcolors, IN:'Element', X1:out('IntegerSet')),
  2402.       f(canvas, 'ZERO':value:'Integer', (3, 3):dimensions:'Point', X2:out('Grid')),
  2403.       f(equality, X1:a:'Any', 'THREE':b:'Any', returns=X3),
  2404.       f(equality, X1:a:'Any', 'TWO':b:'Any', returns=X4),
  2405.       f(branch, condition=X3, (2, 0):a:'Any', (0, 0):b:'Any', X5:out('Any')),
  2406.       f(branch, condition=X4, (2, 2):a:'Any', (0, 2):b:'Any', X6:out('Any')),
  2407.       f(connect, X5:a:'Point', X6:b:'Point', X7:out('Indices')),
  2408.       f(fill,
  2409.         X2:'Grid',
  2410.         'FIVE':value:'Integer',
  2411.         X7:'Patch',
  2412.         OUT:out('Grid'))
  2413.     ].
  2414. solve(a61f2674, IN, OUT) :-
  2415.     [ f(objects,
  2416.         IN:'Grid',
  2417.         univalued=true,
  2418.         diagonal=false,
  2419.         without_bg=true,
  2420.         X1:out('Objects')),
  2421.       f(argmax, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  2422.       f(argmin, X1:'Container', size:compfunc:'Callable', X3:out('Any')),
  2423.       f(replace,
  2424.         IN:'Grid',
  2425.         'FIVE':replacee:'Integer',
  2426.         'ZERO':replacer:'Integer',
  2427.         X4:out('Grid')),
  2428.       f(recolor, 'ONE':value:'Integer', X2:'Patch', X5:out('Object')),
  2429.       f(recolor, 'TWO':value:'Integer', X3:'Patch', X6:out('Object')),
  2430.       f(combine,
  2431.         X5:a:'Container',
  2432.         X6:b:'Container',
  2433.         X7:out('Container')),
  2434.       f(paint, X4:'Grid', X7:obj:'Object', OUT:out('Grid'))
  2435.     ].
  2436. solve(fcc82909, IN, OUT) :-
  2437.     [ f(objects,
  2438.         IN:'Grid',
  2439.         univalued=false,
  2440.         diagonal=true,
  2441.         without_bg=true,
  2442.         X1:out('Objects')),
  2443.       f(rbind, add, (1, 0):fixed:'Any', X2:out('Callable')),
  2444.       f(compose,
  2445.         X2:outer:'Callable',
  2446.         llcorner:inner:'Callable',
  2447.         X3:out('Callable')),
  2448.       f(compose,
  2449.         toivec:outer:'Callable',
  2450.         numcolors:inner:'Callable',
  2451.         X4:out('Callable')),
  2452.       f(fork,
  2453.         add:outer:'Callable',
  2454.         lrcorner:a:'Callable',
  2455.         X4:b:'Callable',
  2456.         X5:out('Callable')),
  2457.       f(fork,
  2458.         astuple:outer:'Callable',
  2459.         X3:a:'Callable',
  2460.         X5:b:'Callable',
  2461.         X6:out('Callable')),
  2462.       f(compose,
  2463.         box:outer:'Callable',
  2464.         X6:inner:'Callable',
  2465.         X7:out('Callable')),
  2466.       f(mapply,
  2467.         X7,
  2468.         X1:container:'ContainerContainer',
  2469.         X8:out('FrozenSet')),
  2470.       f(fill,
  2471.         IN:'Grid',
  2472.         'THREE':value:'Integer',
  2473.         X8:'Patch',
  2474.         OUT:out('Grid'))
  2475.     ].
  2476. solve('72ca375d', IN, OUT) :-
  2477.     [ f(objects,
  2478.         IN:'Grid',
  2479.         univalued=true,
  2480.         diagonal=true,
  2481.         without_bg=true,
  2482.         X1:out('Objects')),
  2483.       f(totuple, X1:container:'FrozenSet', X2:out('Tuple')),
  2484.       f(rbind, subgrid, IN:fixed:'Any', X3:out('Callable')),
  2485.       f(apply, X3, X2:'Container', X4:out('Container')),
  2486.       f(apply, vmirror, X4:'Container', X5:out('Container')),
  2487.       f(papply, equality, X4:a:'Tuple', X5:b:'Tuple', X6:out('Tuple')),
  2488.       f(pair, X4:a:'Tuple', X6:b:'Tuple', X7:out('TupleTuple')),
  2489.       f(extract, X7:'Container', last:condition:'Callable', X8:out('Any')),
  2490.       f(first, X8:'Container', OUT:out('Any'))
  2491.     ].
  2492. solve('253bf280', IN, OUT) :-
  2493.     [ f(ofcolor, IN:'Grid', 'EIGHT':value:'Integer', X1:out('Indices')),
  2494.       f(prapply, connect, X1, X1, X2),
  2495.       f(rbind, greater, 'ONE':fixed:'Any', X3:out('Callable')),
  2496.       f(compose,
  2497.         X3:outer:'Callable',
  2498.         size:inner:'Callable',
  2499.         X4:out('Callable')),
  2500.       f(sfilter,
  2501.         X2:'Container',
  2502.         X4:condition:'Callable',
  2503.         X5:out('Container')),
  2504.       f(fork,
  2505.         either:outer:'Callable',
  2506.         vline:a:'Callable',
  2507.         hline:b:'Callable',
  2508.         X6:out('Callable')),
  2509.       f(mfilter, X5:'Container', X6, X7:out('FrozenSet')),
  2510.       f(fill,
  2511.         IN:'Grid',
  2512.         'THREE':value:'Integer',
  2513.         X7:'Patch',
  2514.         X8:out('Grid')),
  2515.       f(fill,
  2516.         X8:'Grid',
  2517.         'EIGHT':value:'Integer',
  2518.         X1:'Patch',
  2519.         OUT:out('Grid'))
  2520.     ].
  2521. solve('694f12f3', IN, OUT) :-
  2522.     [ f(objects,
  2523.         IN:'Grid',
  2524.         univalued=true,
  2525.         diagonal=false,
  2526.         without_bg=false,
  2527.         X1:out('Objects')),
  2528.       f(colorfilter,
  2529.         X1:objs:'Objects',
  2530.         'FOUR':value:'Integer',
  2531.         X2:out('Objects')),
  2532.       f(compose,
  2533.         backdrop:outer:'Callable',
  2534.         inbox:inner:'Callable',
  2535.         X3:out('Callable')),
  2536.       f(argmin, X2:'Container', size:compfunc:'Callable', X4:out('Any')),
  2537.       f(argmax, X2:'Container', size:compfunc:'Callable', X5:out('Any')),
  2538.       f(X3, X4, X6),
  2539.       f(X3, X5, X7),
  2540.       f(fill,
  2541.         IN:'Grid',
  2542.         'ONE':value:'Integer',
  2543.         X6:'Patch',
  2544.         X8:out('Grid')),
  2545.       f(fill,
  2546.         X8:'Grid',
  2547.         'TWO':value:'Integer',
  2548.         X7:'Patch',
  2549.         OUT:out('Grid'))
  2550.     ].
  2551. solve('1f642eb9', IN, OUT) :-
  2552.     [ f(objects,
  2553.         IN:'Grid',
  2554.         univalued=true,
  2555.         diagonal=false,
  2556.         without_bg=true,
  2557.         X1:out('Objects')),
  2558.       f(sizefilter, X1:'Container', 'ONE':n:'Integer', X2:out('FrozenSet')),
  2559.       f(difference,
  2560.         X1:a:'FrozenSet',
  2561.         X2:b:'FrozenSet',
  2562.         X3:out('FrozenSet')),
  2563.       f(first, X3:'Container', X4:out('Any')),
  2564.       f(rbind, gravitate, X4:fixed:'Any', X5:out('Callable')),
  2565.       f(compose,
  2566.         crement:outer:'Callable',
  2567.         X5:inner:'Callable',
  2568.         X6:out('Callable')),
  2569.       f(fork,
  2570.         shift:outer:'Callable',
  2571.         identity:a:'Callable',
  2572.         X6:b:'Callable',
  2573.         X7:out('Callable')),
  2574.       f(mapply,
  2575.         X7,
  2576.         X2:container:'ContainerContainer',
  2577.         X8:out('FrozenSet')),
  2578.       f(paint, IN:'Grid', X8:obj:'Object', OUT:out('Grid'))
  2579.     ].
  2580. solve('31aa019c', IN, OUT) :-
  2581.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  2582.       f(ofcolor, IN:'Grid', X1:value:'Integer', X2:out('Indices')),
  2583.       f(first, X2:'Container', X3:out('Any')),
  2584.       f(neighbors, X3:loc:'Point', X4:out('Indices')),
  2585.       f(astuple, 'TEN':a:'Integer', 'TEN':b:'Integer', X5:out('Point')),
  2586.       f(canvas,
  2587.         'ZERO':value:'Integer',
  2588.         X5:dimensions:'Point',
  2589.         X6:out('Grid')),
  2590.       f(initset, X3:value:'Any', X7:out('FrozenSet')),
  2591.       f(fill,
  2592.         X6:'Grid',
  2593.         X1:value:'Integer',
  2594.         X7:'Patch',
  2595.         X8:out('Grid')),
  2596.       f(fill,
  2597.         X8:'Grid',
  2598.         'TWO':value:'Integer',
  2599.         X4:'Patch',
  2600.         OUT:out('Grid'))
  2601.     ].
  2602. solve('27a28665', IN, OUT) :-
  2603.     [ f(objects,
  2604.         IN:'Grid',
  2605.         univalued=true,
  2606.         diagonal=false,
  2607.         without_bg=false,
  2608.         X1:out('Objects')),
  2609.       f(valmax,
  2610.         X1:'Container',
  2611.         size:compfunc:'Callable',
  2612.         X2:out('Integer')),
  2613.       f(equality, X2:a:'Any', 'ONE':b:'Any', returns=X3),
  2614.       f(equality, X2:a:'Any', 'FOUR':b:'Any', returns=X4),
  2615.       f(equality, X2:a:'Any', 'FIVE':b:'Any', returns=X5),
  2616.       f(branch, condition=X3, 'TWO':a:'Any', 'ONE':b:'Any', X6:out('Any')),
  2617.       f(branch,
  2618.         condition=X4,
  2619.         'THREE':a:'Any',
  2620.         X6:b:'Any',
  2621.         X7:out('Any')),
  2622.       f(branch, condition=X5, 'SIX':a:'Any', X7:b:'Any', X8:out('Any')),
  2623.       f(canvas,
  2624.         X8:value:'Integer',
  2625.         (1, 1):dimensions:'Point',
  2626.         OUT:out('Grid'))
  2627.     ].
  2628. solve('7ddcd7ec', IN, OUT) :-
  2629.     [ f(objects,
  2630.         IN:'Grid',
  2631.         univalued=true,
  2632.         diagonal=false,
  2633.         without_bg=true,
  2634.         X1:out('Objects')),
  2635.       f(sizefilter, X1:'Container', 'ONE':n:'Integer', X2:out('FrozenSet')),
  2636.       f(difference,
  2637.         X1:a:'FrozenSet',
  2638.         X2:b:'FrozenSet',
  2639.         X3:out('FrozenSet')),
  2640.       f(first, X3:'Container', X4:out('Any')),
  2641.       f(color, X4:obj:'Object', X5:out('Integer')),
  2642.       f(lbind, position, X4:fixed:'Any', X6:out('Callable')),
  2643.       f(fork,
  2644.         shoot:outer:'Callable',
  2645.         center:a:'Callable',
  2646.         X6:b:'Callable',
  2647.         X7:out('Callable')),
  2648.       f(mapply,
  2649.         X7,
  2650.         X2:container:'ContainerContainer',
  2651.         X8:out('FrozenSet')),
  2652.       f(fill,
  2653.         IN:'Grid',
  2654.         X5:value:'Integer',
  2655.         X8:'Patch',
  2656.         OUT:out('Grid'))
  2657.     ].
  2658. solve('3bd67248', IN, OUT) :-
  2659.     [ f(height, IN:'Piece', X1:out('Integer')),
  2660.       f(decrement, X1:x:'Numerical', X2:out('Numerical')),
  2661.       f(decrement, X2:x:'Numerical', X3:out('Numerical')),
  2662.       f(astuple, X3:a:'Integer', 'ONE':b:'Integer', X4:out('Point')),
  2663.       f(astuple, X2:a:'Integer', 'ONE':b:'Integer', X5:out('Point')),
  2664.       f(shoot,
  2665.         X4:start:'Point',
  2666.         (-1, 1):direction:'Point',
  2667.         X6:out('Indices')),
  2668.       f(shoot,
  2669.         X5:start:'Point',
  2670.         (0, 1):direction:'Point',
  2671.         X7:out('Indices')),
  2672.       f(fill,
  2673.         IN:'Grid',
  2674.         'TWO':value:'Integer',
  2675.         X6:'Patch',
  2676.         X8:out('Grid')),
  2677.       f(fill,
  2678.         X8:'Grid',
  2679.         'FOUR':value:'Integer',
  2680.         X7:'Patch',
  2681.         OUT:out('Grid'))
  2682.     ].
  2683. solve('73251a56', IN, OUT) :-
  2684.     [ f(dmirror, IN:'Piece', X1:out('Piece')),
  2685.       f(papply, pair, IN:a:'Tuple', X1:b:'Tuple', X2:out('Tuple')),
  2686.       f(lbind, apply, maximum:fixed:'Any', X3:out('Callable')),
  2687.       f(apply, X3, X2:'Container', X4:out('Container')),
  2688.       f(mostcolor, X4:'Element', X5:out('Integer')),
  2689.       f(replace,
  2690.         X4:'Grid',
  2691.         'ZERO':replacee:'Integer',
  2692.         X5:replacer:'Integer',
  2693.         X6:out('Grid')),
  2694.       f(index, X6:'Grid', (0, 0):loc:'Point', X7:out('Integer')),
  2695.       f(shoot, (0, 0):start:'Point', (1, 1):direction:'Point', X8:out('Indices')),
  2696.       f(fill,
  2697.         X6:'Grid',
  2698.         X7:value:'Integer',
  2699.         X8:'Patch',
  2700.         OUT:out('Grid'))
  2701.     ].
  2702. solve('25d487eb', IN, OUT) :-
  2703.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  2704.       f(objects,
  2705.         IN:'Grid',
  2706.         univalued=true,
  2707.         diagonal=false,
  2708.         without_bg=true,
  2709.         X2:out('Objects')),
  2710.       f(ofcolor, IN:'Grid', X1:value:'Integer', X3:out('Indices')),
  2711.       f(center, X3:'Patch', X4:out('Point')),
  2712.       f(merge, X2:containers:'ContainerContainer', X5:out('Container')),
  2713.       f(center, X5:'Patch', X6:out('Point')),
  2714.       f(subtract,
  2715.         X6:a:'Numerical',
  2716.         X4:b:'Numerical',
  2717.         X7:out('Numerical')),
  2718.       f(shoot,
  2719.         X4:start:'Point',
  2720.         X7:direction:'Point',
  2721.         X8:out('Indices')),
  2722.       f(underfill,
  2723.         IN:'Grid',
  2724.         X1:value:'Integer',
  2725.         X8:'Patch',
  2726.         OUT:out('Grid'))
  2727.     ].
  2728. solve('8f2ea7aa', IN, OUT) :-
  2729.     [ f(objects,
  2730.         IN:'Grid',
  2731.         univalued=true,
  2732.         diagonal=false,
  2733.         without_bg=true,
  2734.         X1:out('Objects')),
  2735.       f(merge, X1:containers:'ContainerContainer', X2:out('Container')),
  2736.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  2737.       f(upscale, X3:'Element', 'THREE':factor:'Integer', X4:out('Element')),
  2738.       f(hconcat, X3:a:'Grid', X3:b:'Grid', X5:out('Grid')),
  2739.       f(hconcat, X5:a:'Grid', X3:b:'Grid', X6:out('Grid')),
  2740.       f(vconcat, X6:a:'Grid', X6:b:'Grid', X7:out('Grid')),
  2741.       f(vconcat, X7:a:'Grid', X6:b:'Grid', X8:out('Grid')),
  2742.       f(cellwise,
  2743.         X4:a:'Grid',
  2744.         X8:b:'Grid',
  2745.         'ZERO':fallback:'Integer',
  2746.         OUT:out('Grid'))
  2747.     ].
  2748. solve(b8825c91, IN, OUT) :-
  2749.     [ f(replace,
  2750.         IN:'Grid',
  2751.         'FOUR':replacee:'Integer',
  2752.         'ZERO':replacer:'Integer',
  2753.         X1:out('Grid')),
  2754.       f(dmirror, X1:'Piece', X2:out('Piece')),
  2755.       f(papply, pair, X1:a:'Tuple', X2:b:'Tuple', X3:out('Tuple')),
  2756.       f(lbind, apply, maximum:fixed:'Any', X4:out('Callable')),
  2757.       f(apply, X4, X3:'Container', X5:out('Container')),
  2758.       f(cmirror, X5:'Piece', X6:out('Piece')),
  2759.       f(papply, pair, X5:a:'Tuple', X6:b:'Tuple', X7:out('Tuple')),
  2760.       f(apply, X4, X7:'Container', X8:out('Container')),
  2761.       f(cmirror, X8:'Piece', OUT:out('Piece'))
  2762.     ].
  2763. solve(cce03e0d, IN, OUT) :-
  2764.     [ f(upscale, IN:'Element', 'THREE':factor:'Integer', X1:out('Element')),
  2765.       f(hconcat, IN:a:'Grid', IN:b:'Grid', X2:out('Grid')),
  2766.       f(hconcat, X2:a:'Grid', IN:b:'Grid', X3:out('Grid')),
  2767.       f(vconcat, X3:a:'Grid', X3:b:'Grid', X4:out('Grid')),
  2768.       f(vconcat, X4:a:'Grid', X3:b:'Grid', X5:out('Grid')),
  2769.       f(ofcolor, X1:'Grid', 'ZERO':value:'Integer', X6:out('Indices')),
  2770.       f(ofcolor, X1:'Grid', 'ONE':value:'Integer', X7:out('Indices')),
  2771.       f(combine,
  2772.         X6:a:'Container',
  2773.         X7:b:'Container',
  2774.         X8:out('Container')),
  2775.       f(fill,
  2776.         X5:'Grid',
  2777.         'ZERO':value:'Integer',
  2778.         X8:'Patch',
  2779.         OUT:out('Grid'))
  2780.     ].
  2781. solve(d364b489, IN, OUT) :-
  2782.     [ f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X1:out('Indices')),
  2783.       f(shift, X1:'Patch', (1, 0):directions:'Point', X2:out('Patch')),
  2784.       f(fill,
  2785.         IN:'Grid',
  2786.         'EIGHT':value:'Integer',
  2787.         X2:'Patch',
  2788.         X3:out('Grid')),
  2789.       f(shift, X1:'Patch', (-1, 0):directions:'Point', X4:out('Patch')),
  2790.       f(fill,
  2791.         X3:'Grid',
  2792.         'TWO':value:'Integer',
  2793.         X4:'Patch',
  2794.         X5:out('Grid')),
  2795.       f(shift, X1:'Patch', (0, 1):directions:'Point', X6:out('Patch')),
  2796.       f(fill,
  2797.         X5:'Grid',
  2798.         'SIX':value:'Integer',
  2799.         X6:'Patch',
  2800.         X7:out('Grid')),
  2801.       f(shift, X1:'Patch', (0, -1):directions:'Point', X8:out('Patch')),
  2802.       f(fill,
  2803.         X7:'Grid',
  2804.         'SEVEN':value:'Integer',
  2805.         X8:'Patch',
  2806.         OUT:out('Grid'))
  2807.     ].
  2808. solve(a5f85a15, IN, OUT) :-
  2809.     [ f(objects,
  2810.         IN:'Grid',
  2811.         univalued=true,
  2812.         diagonal=true,
  2813.         without_bg=true,
  2814.         X1:out('Objects')),
  2815.       f(interval,
  2816.         'ONE':start:'Integer',
  2817.         'NINE':stop:'Integer',
  2818.         'ONE':step:'Integer',
  2819.         X2:out('Tuple')),
  2820.       f(apply, double, X2:'Container', X3:out('Container')),
  2821.       f(apply, decrement, X3:'Container', X4:out('Container')),
  2822.       f(papply, astuple, X4:a:'Tuple', X4:b:'Tuple', X5:out('Tuple')),
  2823.       f(apply, ulcorner, X1:'Container', X6:out('Container')),
  2824.       f(lbind, shift, X5:fixed:'Any', X7:out('Callable')),
  2825.       f(mapply,
  2826.         X7,
  2827.         X6:container:'ContainerContainer',
  2828.         X8:out('FrozenSet')),
  2829.       f(fill,
  2830.         IN:'Grid',
  2831.         'FOUR':value:'Integer',
  2832.         X8:'Patch',
  2833.         OUT:out('Grid'))
  2834.     ].
  2835. solve('3ac3eb23', IN, OUT) :-
  2836.     [ f(objects,
  2837.         IN:'Grid',
  2838.         univalued=true,
  2839.         diagonal=false,
  2840.         without_bg=true,
  2841.         X1:out('Objects')),
  2842.       f(chain,
  2843.         ineighbors:h:'Callable',
  2844.         last:g:'Callable',
  2845.         first:f:'Callable',
  2846.         X2:out('Callable')),
  2847.       f(fork,
  2848.         recolor:outer:'Callable',
  2849.         color:a:'Callable',
  2850.         X2:b:'Callable',
  2851.         X3:out('Callable')),
  2852.       f(mapply,
  2853.         X3,
  2854.         X1:container:'ContainerContainer',
  2855.         X4:out('FrozenSet')),
  2856.       f(paint, IN:'Grid', X4:obj:'Object', X5:out('Grid')),
  2857.       f(vsplit, X5:'Grid', 'THREE':n:'Integer', X6:out('Tuple')),
  2858.       f(first, X6:'Container', X7:out('Any')),
  2859.       f(vconcat, X7:a:'Grid', X7:b:'Grid', X8:out('Grid')),
  2860.       f(vconcat, X7:a:'Grid', X8:b:'Grid', OUT:out('Grid'))
  2861.     ].
  2862. solve('444801d8', IN, OUT) :-
  2863.     [ f(objects,
  2864.         IN:'Grid',
  2865.         univalued=true,
  2866.         diagonal=false,
  2867.         without_bg=true,
  2868.         X1:out('Objects')),
  2869.       f(colorfilter,
  2870.         X1:objs:'Objects',
  2871.         'ONE':value:'Integer',
  2872.         X2:out('Objects')),
  2873.       f(rbind, toobject, IN:fixed:'Any', X3:out('Callable')),
  2874.       f(chain,
  2875.         leastcolor:h:'Callable',
  2876.         X3:g:'Callable',
  2877.         delta:f:'Callable',
  2878.         X4:out('Callable')),
  2879.       f(rbind, shift, (-1, 0):fixed:'Any', X5:out('Callable')),
  2880.       f(compose,
  2881.         X5:outer:'Callable',
  2882.         backdrop:inner:'Callable',
  2883.         X6:out('Callable')),
  2884.       f(fork,
  2885.         recolor:outer:'Callable',
  2886.         X4:a:'Callable',
  2887.         X6:b:'Callable',
  2888.         X7:out('Callable')),
  2889.       f(mapply,
  2890.         X7,
  2891.         X2:container:'ContainerContainer',
  2892.         X8:out('FrozenSet')),
  2893.       f(underpaint, IN:'Grid', X8:obj:'Object', OUT:out('Grid'))
  2894.     ].
  2895. solve(22168020, IN, OUT) :-
  2896.     [ f(palette, IN:'Element', X1:out('IntegerSet')),
  2897.       f(remove, 'ZERO':value:'Any', X1:'Container', X2:out('Container')),
  2898.       f(lbind, ofcolor, IN:fixed:'Any', X3:out('Callable')),
  2899.       f(lbind, prapply, connect:fixed:'Any', X4:out('Callable')),
  2900.       f(fork,
  2901.         X4:outer:'Callable',
  2902.         X3:a:'Callable',
  2903.         X3:b:'Callable',
  2904.         X5:out('Callable')),
  2905.       f(compose,
  2906.         merge:outer:'Callable',
  2907.         X5:inner:'Callable',
  2908.         X6:out('Callable')),
  2909.       f(fork,
  2910.         recolor:outer:'Callable',
  2911.         identity:a:'Callable',
  2912.         X6:b:'Callable',
  2913.         X7:out('Callable')),
  2914.       f(mapply,
  2915.         X7,
  2916.         X2:container:'ContainerContainer',
  2917.         X8:out('FrozenSet')),
  2918.       f(paint, IN:'Grid', X8:obj:'Object', OUT:out('Grid'))
  2919.     ].
  2920. solve('6e82a1ae', IN, OUT) :-
  2921.     [ f(objects,
  2922.         IN:'Grid',
  2923.         univalued=true,
  2924.         diagonal=false,
  2925.         without_bg=true,
  2926.         X1:out('Objects')),
  2927.       f(lbind, sizefilter, X1:fixed:'Any', X2:out('Callable')),
  2928.       f(compose,
  2929.         merge:outer:'Callable',
  2930.         X2:inner:'Callable',
  2931.         X3:out('Callable')),
  2932.       f(X3, 'TWO', X4),
  2933.       f(X3, 'THREE', X5),
  2934.       f(X3, 'FOUR', X6),
  2935.       f(fill,
  2936.         IN:'Grid',
  2937.         'THREE':value:'Integer',
  2938.         X4:'Patch',
  2939.         X7:out('Grid')),
  2940.       f(fill,
  2941.         X7:'Grid',
  2942.         'TWO':value:'Integer',
  2943.         X5:'Patch',
  2944.         X8:out('Grid')),
  2945.       f(fill,
  2946.         X8:'Grid',
  2947.         'ONE':value:'Integer',
  2948.         X6:'Patch',
  2949.         OUT:out('Grid'))
  2950.     ].
  2951. solve(b2862040, IN, OUT) :-
  2952.     [ f(objects,
  2953.         IN:'Grid',
  2954.         univalued=true,
  2955.         diagonal=false,
  2956.         without_bg=false,
  2957.         X1:out('Objects')),
  2958.       f(colorfilter,
  2959.         X1:objs:'Objects',
  2960.         'NINE':value:'Integer',
  2961.         X2:out('Objects')),
  2962.       f(colorfilter,
  2963.         X1:objs:'Objects',
  2964.         'ONE':value:'Integer',
  2965.         X3:out('Objects')),
  2966.       f(rbind, bordering, IN:fixed:'Any', X4:out('Callable')),
  2967.       f(compose,
  2968.         flip:outer:'Callable',
  2969.         X4:inner:'Callable',
  2970.         X5:out('Callable')),
  2971.       f(mfilter, X2:'Container', X5, X6:out('FrozenSet')),
  2972.       f(rbind, adjacent, X6:fixed:'Any', X7:out('Callable')),
  2973.       f(mfilter, X3:'Container', X7, X8:out('FrozenSet')),
  2974.       f(fill,
  2975.         IN:'Grid',
  2976.         'EIGHT':value:'Integer',
  2977.         X8:'Patch',
  2978.         OUT:out('Grid'))
  2979.     ].
  2980. solve('868de0fa', IN, OUT) :-
  2981.     [ f(objects,
  2982.         IN:'Grid',
  2983.         univalued=true,
  2984.         diagonal=false,
  2985.         without_bg=false,
  2986.         X1:out('Objects')),
  2987.       f(sfilter,
  2988.         X1:'Container',
  2989.         square:condition:'Callable',
  2990.         X2:out('Container')),
  2991.       f(compose,
  2992.         even:outer:'Callable',
  2993.         height:inner:'Callable',
  2994.         X3:out('Callable')),
  2995.       f(sfilter,
  2996.         X2:'Container',
  2997.         X3:condition:'Callable',
  2998.         X4:out('Container')),
  2999.       f(difference,
  3000.         X2:a:'FrozenSet',
  3001.         X4:b:'FrozenSet',
  3002.         X5:out('FrozenSet')),
  3003.       f(merge, X4:containers:'ContainerContainer', X6:out('Container')),
  3004.       f(merge, X5:containers:'ContainerContainer', X7:out('Container')),
  3005.       f(fill,
  3006.         IN:'Grid',
  3007.         'TWO':value:'Integer',
  3008.         X6:'Patch',
  3009.         X8:out('Grid')),
  3010.       f(fill,
  3011.         X8:'Grid',
  3012.         'SEVEN':value:'Integer',
  3013.         X7:'Patch',
  3014.         OUT:out('Grid'))
  3015.     ].
  3016. solve('681b3aeb', IN, OUT) :-
  3017.     [ f(rot270, IN:'Grid', X1:out('Grid')),
  3018.       f(objects,
  3019.         X1:'Grid',
  3020.         univalued=true,
  3021.         diagonal=false,
  3022.         without_bg=true,
  3023.         X2:out('Objects')),
  3024.       f(argmax, X2:'Container', size:compfunc:'Callable', X3:out('Any')),
  3025.       f(argmin, X2:'Container', size:compfunc:'Callable', X4:out('Any')),
  3026.       f(color, X4:obj:'Object', X5:out('Integer')),
  3027.       f(canvas,
  3028.         X5:value:'Integer',
  3029.         (3, 3):dimensions:'Point',
  3030.         X6:out('Grid')),
  3031.       f(normalize, X3:'Patch', X7:out('Patch')),
  3032.       f(paint, X6:'Grid', X7:obj:'Object', X8:out('Grid')),
  3033.       f(rot90, X8:'Grid', OUT:out('Grid'))
  3034.     ].
  3035. solve('8e5a5113', IN, OUT) :-
  3036.     [ f(crop,
  3037.         IN:'Grid',
  3038.         (0, 0):start:'Point',
  3039.         (3, 3):dims:'Point',
  3040.         X1:out('Grid')),
  3041.       f(rot90, X1:'Grid', X2:out('Grid')),
  3042.       f(rot180, X1:'Grid', X3:out('Grid')),
  3043.       f(astuple, X2:a:'Integer', X3:b:'Integer', X4:out('Point')),
  3044.       f(astuple, 'FOUR':a:'Integer', 'EIGHT':b:'Integer', X5:out('Point')),
  3045.       f(apply, tojvec, X5:'Container', X6:out('Container')),
  3046.       f(apply, asobject, X4:'Container', X7:out('Container')),
  3047.       f(mpapply, shift, X7:a:'Tuple', X6:b:'Tuple', X8:out('Tuple')),
  3048.       f(paint, IN:'Grid', X8:obj:'Object', OUT:out('Grid'))
  3049.     ].
  3050. solve('025d127b', IN, OUT) :-
  3051.     [ f(objects,
  3052.         IN:'Grid',
  3053.         univalued=true,
  3054.         diagonal=false,
  3055.         without_bg=true,
  3056.         X1:out('Objects')),
  3057.       f(apply, color, X1:'Container', X2:out('Container')),
  3058.       f(merge, X1:containers:'ContainerContainer', X3:out('Container')),
  3059.       f(lbind, colorfilter, X1:fixed:'Any', X4:out('Callable')),
  3060.       f(rbind, argmax, rightmost:fixed:'Any', X5:out('Callable')),
  3061.       f(compose,
  3062.         X5:outer:'Callable',
  3063.         X4:inner:'Callable',
  3064.         X6:out('Callable')),
  3065.       f(mapply,
  3066.         X6,
  3067.         X2:container:'ContainerContainer',
  3068.         X7:out('FrozenSet')),
  3069.       f(difference,
  3070.         X3:a:'FrozenSet',
  3071.         X7:b:'FrozenSet',
  3072.         X8:out('FrozenSet')),
  3073.       f(move,
  3074.         IN:'Grid',
  3075.         X8:obj:'Object',
  3076.         (0, 1):offset:'Point',
  3077.         OUT:out('Grid'))
  3078.     ].
  3079. solve('2281f1f4', IN, OUT) :-
  3080.     [ f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X1:out('Indices')),
  3081.       f(product,
  3082.         X1:a:'Container',
  3083.         X1:b:'Container',
  3084.         X2:out('FrozenSet')),
  3085.       f(power, first, 'TWO':n:'Integer', X3:out('Callable')),
  3086.       f(power, last, 'TWO':n:'Integer', X4:out('Callable')),
  3087.       f(fork,
  3088.         astuple:outer:'Callable',
  3089.         X3:a:'Callable',
  3090.         X4:b:'Callable',
  3091.         X5:out('Callable')),
  3092.       f(apply, X5, X2:'Container', X6:out('Container')),
  3093.       f(urcorner, X1:'Patch', X7:out('Point')),
  3094.       f(remove, X7:value:'Any', X6:'Container', X8:out('Container')),
  3095.       f(underfill,
  3096.         IN:'Grid',
  3097.         'TWO':value:'Integer',
  3098.         X8:'Patch',
  3099.         OUT:out('Grid'))
  3100.     ].
  3101. solve(cf98881b, IN, OUT) :-
  3102.     [ f(hsplit, IN:'Grid', 'THREE':n:'Integer', X1:out('Tuple')),
  3103.       f(first, X1:'Container', X2:out('Any')),
  3104.       f(remove, X2:value:'Any', X1:'Container', X3:out('Container')),
  3105.       f(first, X3:'Container', X4:out('Any')),
  3106.       f(last, X3:'Container', X5:out('Any')),
  3107.       f(ofcolor, X4:'Grid', 'NINE':value:'Integer', X6:out('Indices')),
  3108.       f(ofcolor, X2:'Grid', 'FOUR':value:'Integer', X7:out('Indices')),
  3109.       f(fill,
  3110.         X5:'Grid',
  3111.         'NINE':value:'Integer',
  3112.         X6:'Patch',
  3113.         X8:out('Grid')),
  3114.       f(fill,
  3115.         X8:'Grid',
  3116.         'FOUR':value:'Integer',
  3117.         X7:'Patch',
  3118.         OUT:out('Grid'))
  3119.     ].
  3120. solve(d4f3cd78, IN, OUT) :-
  3121.     [ f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X1:out('Indices')),
  3122.       f(delta, X1:'Patch', X2:out('Indices')),
  3123.       f(fill,
  3124.         IN:'Grid',
  3125.         'EIGHT':value:'Integer',
  3126.         X2:'Patch',
  3127.         X3:out('Grid')),
  3128.       f(box, X1:'Patch', X4:out('Indices')),
  3129.       f(difference,
  3130.         X4:a:'FrozenSet',
  3131.         X1:b:'FrozenSet',
  3132.         X5:out('FrozenSet')),
  3133.       f(position, X4:a:'Patch', X5:b:'Patch', X6:out('Point')),
  3134.       f(first, X5:'Container', X7:out('Any')),
  3135.       f(shoot,
  3136.         X7:start:'Point',
  3137.         X6:direction:'Point',
  3138.         X8:out('Indices')),
  3139.       f(fill,
  3140.         X3:'Grid',
  3141.         'EIGHT':value:'Integer',
  3142.         X8:'Patch',
  3143.         OUT:out('Grid'))
  3144.     ].
  3145. solve(bda2d7a6, IN, OUT) :-
  3146.     [ f(partition, IN:'Grid', X1:out('Objects')),
  3147.       f(order, X1:'Container', size:compfunc:'Callable', X2:out('Tuple')),
  3148.       f(apply, color, X2:'Container', X3:out('Container')),
  3149.       f(last, X2:'Container', X4:out('Any')),
  3150.       f(remove, X4:value:'Any', X2:'Container', X5:out('Container')),
  3151.       f(repeat, X4:item:'Any', 'ONE':num:'Integer', X6:out('Tuple')),
  3152.       f(combine,
  3153.         X6:a:'Container',
  3154.         X5:b:'Container',
  3155.         X7:out('Container')),
  3156.       f(mpapply, recolor, X3:a:'Tuple', X7:b:'Tuple', X8:out('Tuple')),
  3157.       f(paint, IN:'Grid', X8:obj:'Object', OUT:out('Grid'))
  3158.     ].
  3159. solve('137eaa0f', IN, OUT) :-
  3160.     [ f(objects,
  3161.         IN:'Grid',
  3162.         univalued=false,
  3163.         diagonal=true,
  3164.         without_bg=true,
  3165.         X1:out('Objects')),
  3166.       f(matcher, first, 'FIVE':target:'Any', X2:out('Callable')),
  3167.       f(rbind, sfilter, X2:fixed:'Any', X3:out('Callable')),
  3168.       f(chain,
  3169.         invert:h:'Callable',
  3170.         center:g:'Callable',
  3171.         X3:f:'Callable',
  3172.         X4:out('Callable')),
  3173.       f(fork,
  3174.         shift:outer:'Callable',
  3175.         identity:a:'Callable',
  3176.         X4:b:'Callable',
  3177.         X5:out('Callable')),
  3178.       f(canvas, 'ZERO':value:'Integer', (3, 3):dimensions:'Point', X6:out('Grid')),
  3179.       f(mapply,
  3180.         X5,
  3181.         X1:container:'ContainerContainer',
  3182.         X7:out('FrozenSet')),
  3183.       f(shift, X7:'Patch', (1, 1):directions:'Point', X8:out('Patch')),
  3184.       f(paint, X6:'Grid', X8:obj:'Object', OUT:out('Grid'))
  3185.     ].
  3186. solve('6455b5f5', IN, OUT) :-
  3187.     [ f(objects,
  3188.         IN:'Grid',
  3189.         univalued=true,
  3190.         diagonal=false,
  3191.         without_bg=false,
  3192.         X1:out('Objects')),
  3193.       f(colorfilter,
  3194.         X1:objs:'Objects',
  3195.         'ZERO':value:'Integer',
  3196.         X2:out('Objects')),
  3197.       f(argmax, X1:'Container', size:compfunc:'Callable', X3:out('Any')),
  3198.       f(valmin,
  3199.         X1:'Container',
  3200.         size:compfunc:'Callable',
  3201.         X4:out('Integer')),
  3202.       f(sizefilter,
  3203.         X2:'Container',
  3204.         X4:n:'Integer',
  3205.         X5:out('FrozenSet')),
  3206.       f(recolor, 'ONE':value:'Integer', X3:'Patch', X6:out('Object')),
  3207.       f(merge, X5:containers:'ContainerContainer', X7:out('Container')),
  3208.       f(paint, IN:'Grid', X6:obj:'Object', X8:out('Grid')),
  3209.       f(fill,
  3210.         X8:'Grid',
  3211.         'EIGHT':value:'Integer',
  3212.         X7:'Patch',
  3213.         OUT:out('Grid'))
  3214.     ].
  3215. solve(b8cdaf2b, IN, OUT) :-
  3216.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  3217.       f(ofcolor, IN:'Grid', X1:value:'Integer', X2:out('Indices')),
  3218.       f(shift, X2:'Patch', (-1, 0):directions:'Point', X3:out('Patch')),
  3219.       f(ulcorner, X3:'Patch', X4:out('Point')),
  3220.       f(urcorner, X3:'Patch', X5:out('Point')),
  3221.       f(shoot,
  3222.         X4:start:'Point',
  3223.         (-1, -1):direction:'Point',
  3224.         X6:out('Indices')),
  3225.       f(shoot,
  3226.         X5:start:'Point',
  3227.         (-1, 1):direction:'Point',
  3228.         X7:out('Indices')),
  3229.       f(combine,
  3230.         X6:a:'Container',
  3231.         X7:b:'Container',
  3232.         X8:out('Container')),
  3233.       f(underfill,
  3234.         IN:'Grid',
  3235.         X1:value:'Integer',
  3236.         X8:'Patch',
  3237.         OUT:out('Grid'))
  3238.     ].
  3239. solve(bd4472b8, IN, OUT) :-
  3240.     [ f(width, IN:'Piece', X1:out('Integer')),
  3241.       f(astuple, 'TWO':a:'Integer', X1:b:'Integer', X2:out('Point')),
  3242.       f(crop,
  3243.         IN:'Grid',
  3244.         (0, 0):start:'Point',
  3245.         X2:dims:'Point',
  3246.         X3:out('Grid')),
  3247.       f(tophalf, X3:'Grid', X4:out('Grid')),
  3248.       f(dmirror, X4:'Piece', X5:out('Piece')),
  3249.       f(hupscale, X5:'Grid', X1:factor:'Integer', X6:out('Grid')),
  3250.       f(repeat, X6:item:'Any', 'TWO':num:'Integer', X7:out('Tuple')),
  3251.       f(merge, X7:containers:'ContainerContainer', X8:out('Container')),
  3252.       f(vconcat, X3:a:'Grid', X8:b:'Grid', OUT:out('Grid'))
  3253.     ].
  3254. solve('4be741c5', IN, OUT) :-
  3255.     [ f(portrait, IN:'Piece', returns=X1),
  3256.       f(branch,
  3257.         condition=X1,
  3258.         dmirror:a:'Any',
  3259.         identity:b:'Any',
  3260.         X2:out('Any')),
  3261.       f(branch, condition=X1, height:a:'Any', width:b:'Any', X3:out('Any')),
  3262.       f(X3, IN, X4),
  3263.       f(astuple, 'ONE':a:'Integer', X4:b:'Integer', X5:out('Point')),
  3264.       f(X2, IN, X6),
  3265.       f(crop,
  3266.         X6:'Grid',
  3267.         (0, 0):start:'Point',
  3268.         X5:dims:'Point',
  3269.         X7:out('Grid')),
  3270.       f(apply, dedupe, X7:'Container', X8:out('Container')),
  3271.       f(X2, X8, OUT)
  3272.     ].
  3273. solve(bbc9ae5d, IN, OUT) :-
  3274.     [ f(width, IN:'Piece', X1:out('Integer')),
  3275.       f(palette, IN:'Element', X2:out('IntegerSet')),
  3276.       f(halve, X1:n:'Numerical', X3:out('Numerical')),
  3277.       f(vupscale, IN:'Grid', X3:factor:'Integer', X4:out('Grid')),
  3278.       f(rbind, shoot, (1, 1):fixed:'Any', X5:out('Callable')),
  3279.       f(other, X2:'Container', 'ZERO':value:'Any', X6:out('Any')),
  3280.       f(ofcolor, X4:'Grid', X6:value:'Integer', X7:out('Indices')),
  3281.       f(mapply,
  3282.         X5,
  3283.         X7:container:'ContainerContainer',
  3284.         X8:out('FrozenSet')),
  3285.       f(fill,
  3286.         X4:'Grid',
  3287.         X6:value:'Integer',
  3288.         X8:'Patch',
  3289.         OUT:out('Grid'))
  3290.     ].
  3291. solve(d90796e8, IN, OUT) :-
  3292.     [ f(objects,
  3293.         IN:'Grid',
  3294.         univalued=false,
  3295.         diagonal=false,
  3296.         without_bg=true,
  3297.         X1:out('Objects')),
  3298.       f(sizefilter, X1:'Container', 'TWO':n:'Integer', X2:out('FrozenSet')),
  3299.       f(lbind, contained, 'TWO':fixed:'Any', X3:out('Callable')),
  3300.       f(compose,
  3301.         X3:outer:'Callable',
  3302.         palette:inner:'Callable',
  3303.         X4:out('Callable')),
  3304.       f(mfilter, X2:'Container', X4, X5:out('FrozenSet')),
  3305.       f(cover, IN:'Grid', X5:'Patch', X6:out('Grid')),
  3306.       f(matcher, first, 'THREE':target:'Any', X7:out('Callable')),
  3307.       f(sfilter,
  3308.         X5:'Container',
  3309.         X7:condition:'Callable',
  3310.         X8:out('Container')),
  3311.       f(fill,
  3312.         X6:'Grid',
  3313.         'EIGHT':value:'Integer',
  3314.         X8:'Patch',
  3315.         OUT:out('Grid'))
  3316.     ].
  3317. solve('2c608aff', IN, OUT) :-
  3318.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  3319.       f(objects,
  3320.         IN:'Grid',
  3321.         univalued=true,
  3322.         diagonal=false,
  3323.         without_bg=true,
  3324.         X2:out('Objects')),
  3325.       f(argmax, X2:'Container', size:compfunc:'Callable', X3:out('Any')),
  3326.       f(toindices, X3:'Patch', X4:out('Indices')),
  3327.       f(ofcolor, IN:'Grid', X1:value:'Integer', X5:out('Indices')),
  3328.       f(prapply, connect, X4, X5, X6),
  3329.       f(fork,
  3330.         either:outer:'Callable',
  3331.         vline:a:'Callable',
  3332.         hline:b:'Callable',
  3333.         X7:out('Callable')),
  3334.       f(mfilter, X6:'Container', X7, X8:out('FrozenSet')),
  3335.       f(underfill,
  3336.         IN:'Grid',
  3337.         X1:value:'Integer',
  3338.         X8:'Patch',
  3339.         OUT:out('Grid'))
  3340.     ].
  3341. solve(f8b3ba0a, IN, OUT) :-
  3342.     [ f(compress, IN:'Grid', X1:out('Grid')),
  3343.       f(astuple, 'THREE':a:'Integer', 'ONE':b:'Integer', X2:out('Point')),
  3344.       f(palette, X1:'Element', X3:out('IntegerSet')),
  3345.       f(lbind, colorcount, X1:fixed:'Any', X4:out('Callable')),
  3346.       f(compose,
  3347.         invert:outer:'Callable',
  3348.         X4:inner:'Callable',
  3349.         X5:out('Callable')),
  3350.       f(order,
  3351.         X3:'Container',
  3352.         X5:compfunc:'Callable',
  3353.         X6:out('Tuple')),
  3354.       f(rbind, canvas, (1, 1):fixed:'Any', X7:out('Callable')),
  3355.       f(apply, X7, X6:'Container', X8:out('Container')),
  3356.       f(merge, X8:containers:'ContainerContainer', X9:out('Container')),
  3357.       f(crop,
  3358.         X9:'Grid',
  3359.         (1, 0):start:'Point',
  3360.         X2:dims:'Point',
  3361.         OUT:out('Grid'))
  3362.     ].
  3363. solve('80af3007', IN, OUT) :-
  3364.     [ f(objects,
  3365.         IN:'Grid',
  3366.         univalued=true,
  3367.         diagonal=true,
  3368.         without_bg=true,
  3369.         X1:out('Objects')),
  3370.       f(first, X1:'Container', X2:out('Any')),
  3371.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  3372.       f(upscale, X3:'Element', 'THREE':factor:'Integer', X4:out('Element')),
  3373.       f(hconcat, X3:a:'Grid', X3:b:'Grid', X5:out('Grid')),
  3374.       f(hconcat, X5:a:'Grid', X3:b:'Grid', X6:out('Grid')),
  3375.       f(vconcat, X6:a:'Grid', X6:b:'Grid', X7:out('Grid')),
  3376.       f(vconcat, X7:a:'Grid', X6:b:'Grid', X8:out('Grid')),
  3377.       f(cellwise,
  3378.         X4:a:'Grid',
  3379.         X8:b:'Grid',
  3380.         'ZERO':fallback:'Integer',
  3381.         X9:out('Grid')),
  3382.       f(downscale, X9:'Grid', 'THREE':factor:'Integer', OUT:out('Grid'))
  3383.     ].
  3384. solve('83302e8f', IN, OUT) :-
  3385.     [ f(objects,
  3386.         IN:'Grid',
  3387.         univalued=true,
  3388.         diagonal=false,
  3389.         without_bg=false,
  3390.         X1:out('Objects')),
  3391.       f(colorfilter,
  3392.         X1:objs:'Objects',
  3393.         'ZERO':value:'Integer',
  3394.         X2:out('Objects')),
  3395.       f(sfilter,
  3396.         X2:'Container',
  3397.         square:condition:'Callable',
  3398.         X3:out('Container')),
  3399.       f(difference,
  3400.         X2:a:'FrozenSet',
  3401.         X3:b:'FrozenSet',
  3402.         X4:out('FrozenSet')),
  3403.       f(merge, X3:containers:'ContainerContainer', X5:out('Container')),
  3404.       f(recolor, 'THREE':value:'Integer', X5:'Patch', X6:out('Object')),
  3405.       f(merge, X4:containers:'ContainerContainer', X7:out('Container')),
  3406.       f(recolor, 'FOUR':value:'Integer', X7:'Patch', X8:out('Object')),
  3407.       f(paint, IN:'Grid', X6:obj:'Object', X9:out('Grid')),
  3408.       f(paint, X9:'Grid', X8:obj:'Object', OUT:out('Grid'))
  3409.     ].
  3410. solve('1fad071e', IN, OUT) :-
  3411.     [ f(objects,
  3412.         IN:'Grid',
  3413.         univalued=true,
  3414.         diagonal=false,
  3415.         without_bg=true,
  3416.         X1:out('Objects')),
  3417.       f(colorfilter,
  3418.         X1:objs:'Objects',
  3419.         'ONE':value:'Integer',
  3420.         X2:out('Objects')),
  3421.       f(sizefilter, X2:'Container', 'FOUR':n:'Integer', X3:out('FrozenSet')),
  3422.       f(size, X3:'Container', X4:out('Integer')),
  3423.       f(subtract,
  3424.         'FIVE':a:'Numerical',
  3425.         X4:b:'Numerical',
  3426.         X5:out('Numerical')),
  3427.       f(astuple, 'ONE':a:'Integer', X4:b:'Integer', X6:out('Point')),
  3428.       f(canvas, 'ONE':value:'Integer', X6:dimensions:'Point', X7:out('Grid')),
  3429.       f(astuple, 'ONE':a:'Integer', X5:b:'Integer', X8:out('Point')),
  3430.       f(canvas,
  3431.         'ZERO':value:'Integer',
  3432.         X8:dimensions:'Point',
  3433.         X9:out('Grid')),
  3434.       f(hconcat, X7:a:'Grid', X9:b:'Grid', OUT:out('Grid'))
  3435.     ].
  3436. solve('11852cab', IN, OUT) :-
  3437.     [ f(objects,
  3438.         IN:'Grid',
  3439.         univalued=true,
  3440.         diagonal=true,
  3441.         without_bg=true,
  3442.         X1:out('Objects')),
  3443.       f(merge, X1:containers:'ContainerContainer', X2:out('Container')),
  3444.       f(hmirror, X2:'Piece', X3:out('Piece')),
  3445.       f(vmirror, X2:'Piece', X4:out('Piece')),
  3446.       f(dmirror, X2:'Piece', X5:out('Piece')),
  3447.       f(cmirror, X2:'Piece', X6:out('Piece')),
  3448.       f(paint, IN:'Grid', X3:obj:'Object', X7:out('Grid')),
  3449.       f(paint, X7:'Grid', X4:obj:'Object', X8:out('Grid')),
  3450.       f(paint, X8:'Grid', X5:obj:'Object', X9:out('Grid')),
  3451.       f(paint, X9:'Grid', X6:obj:'Object', OUT:out('Grid'))
  3452.     ].
  3453. solve('3428a4f5', IN, OUT) :-
  3454.     [ f(tophalf, IN:'Grid', X1:out('Grid')),
  3455.       f(bottomhalf, IN:'Grid', X2:out('Grid')),
  3456.       f(astuple, 'SIX':a:'Integer', 'FIVE':b:'Integer', X3:out('Point')),
  3457.       f(ofcolor, X1:'Grid', 'TWO':value:'Integer', X4:out('Indices')),
  3458.       f(ofcolor, X2:'Grid', 'TWO':value:'Integer', X5:out('Indices')),
  3459.       f(combine,
  3460.         X4:a:'Container',
  3461.         X5:b:'Container',
  3462.         X6:out('Container')),
  3463.       f(intersection,
  3464.         X4:a:'FrozenSet',
  3465.         X5:b:'FrozenSet',
  3466.         X7:out('FrozenSet')),
  3467.       f(difference,
  3468.         X6:a:'FrozenSet',
  3469.         X7:b:'FrozenSet',
  3470.         X8:out('FrozenSet')),
  3471.       f(canvas,
  3472.         'ZERO':value:'Integer',
  3473.         X3:dimensions:'Point',
  3474.         X9:out('Grid')),
  3475.       f(fill,
  3476.         X9:'Grid',
  3477.         'THREE':value:'Integer',
  3478.         X8:'Patch',
  3479.         OUT:out('Grid'))
  3480.     ].
  3481. solve('178fcbfb', IN, OUT) :-
  3482.     [ f(objects,
  3483.         IN:'Grid',
  3484.         univalued=true,
  3485.         diagonal=false,
  3486.         without_bg=true,
  3487.         X1:out('Objects')),
  3488.       f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X2:out('Indices')),
  3489.       f(mapply,
  3490.         vfrontier,
  3491.         X2:container:'ContainerContainer',
  3492.         X3:out('FrozenSet')),
  3493.       f(fill,
  3494.         IN:'Grid',
  3495.         'TWO':value:'Integer',
  3496.         X3:'Patch',
  3497.         X4:out('Grid')),
  3498.       f(colorfilter,
  3499.         X1:objs:'Objects',
  3500.         'TWO':value:'Integer',
  3501.         X5:out('Objects')),
  3502.       f(difference,
  3503.         X1:a:'FrozenSet',
  3504.         X5:b:'FrozenSet',
  3505.         X6:out('FrozenSet')),
  3506.       f(compose,
  3507.         hfrontier:outer:'Callable',
  3508.         center:inner:'Callable',
  3509.         X7:out('Callable')),
  3510.       f(fork,
  3511.         recolor:outer:'Callable',
  3512.         color:a:'Callable',
  3513.         X7:b:'Callable',
  3514.         X8:out('Callable')),
  3515.       f(mapply,
  3516.         X8,
  3517.         X6:container:'ContainerContainer',
  3518.         X9:out('FrozenSet')),
  3519.       f(paint, X4:'Grid', X9:obj:'Object', OUT:out('Grid'))
  3520.     ].
  3521. solve('3de23699', IN, OUT) :-
  3522.     [ f(fgpartition, IN:'Grid', X1:out('Objects')),
  3523.       f(sizefilter, X1:'Container', 'FOUR':n:'Integer', X2:out('FrozenSet')),
  3524.       f(first, X2:'Container', X3:out('Any')),
  3525.       f(difference,
  3526.         X1:a:'FrozenSet',
  3527.         X2:b:'FrozenSet',
  3528.         X4:out('FrozenSet')),
  3529.       f(first, X4:'Container', X5:out('Any')),
  3530.       f(color, X3:obj:'Object', X6:out('Integer')),
  3531.       f(color, X5:obj:'Object', X7:out('Integer')),
  3532.       f(subgrid, X3:'Patch', IN:'Grid', X8:out('Grid')),
  3533.       f(trim, X8:'Grid', X9:out('Grid')),
  3534.       f(replace,
  3535.         X9:'Grid',
  3536.         X7:replacee:'Integer',
  3537.         X6:replacer:'Integer',
  3538.         OUT:out('Grid'))
  3539.     ].
  3540. solve('54d9e175', IN, OUT) :-
  3541.     [ f(objects,
  3542.         IN:'Grid',
  3543.         univalued=true,
  3544.         diagonal=false,
  3545.         without_bg=true,
  3546.         X1:out('Objects')),
  3547.       f(sizefilter, X1:'Container', 'ONE':n:'Integer', X2:out('FrozenSet')),
  3548.       f(compose,
  3549.         neighbors:outer:'Callable',
  3550.         center:inner:'Callable',
  3551.         X3:out('Callable')),
  3552.       f(fork,
  3553.         recolor:outer:'Callable',
  3554.         color:a:'Callable',
  3555.         X3:b:'Callable',
  3556.         X4:out('Callable')),
  3557.       f(mapply,
  3558.         X4,
  3559.         X2:container:'ContainerContainer',
  3560.         X5:out('FrozenSet')),
  3561.       f(paint, IN:'Grid', X5:obj:'Object', X6:out('Grid')),
  3562.       f(replace,
  3563.         X6:'Grid',
  3564.         'ONE':replacee:'Integer',
  3565.         'SIX':replacer:'Integer',
  3566.         X7:out('Grid')),
  3567.       f(replace,
  3568.         X7:'Grid',
  3569.         'TWO':replacee:'Integer',
  3570.         'SEVEN':replacer:'Integer',
  3571.         X8:out('Grid')),
  3572.       f(replace,
  3573.         X8:'Grid',
  3574.         'THREE':replacee:'Integer',
  3575.         'EIGHT':replacer:'Integer',
  3576.         X9:out('Grid')),
  3577.       f(replace,
  3578.         X9:'Grid',
  3579.         'FOUR':replacee:'Integer',
  3580.         'NINE':replacer:'Integer',
  3581.         OUT:out('Grid'))
  3582.     ].
  3583. solve('5ad4f10b', IN, OUT) :-
  3584.     [ f(objects,
  3585.         IN:'Grid',
  3586.         univalued=true,
  3587.         diagonal=true,
  3588.         without_bg=true,
  3589.         X1:out('Objects')),
  3590.       f(argmax, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  3591.       f(color, X2:obj:'Object', X3:out('Integer')),
  3592.       f(subgrid, X2:'Patch', IN:'Grid', X4:out('Grid')),
  3593.       f(leastcolor, X4:'Element', X5:out('Integer')),
  3594.       f(replace,
  3595.         X4:'Grid',
  3596.         X5:replacee:'Integer',
  3597.         'ZERO':replacer:'Integer',
  3598.         X6:out('Grid')),
  3599.       f(replace,
  3600.         X6:'Grid',
  3601.         X3:replacee:'Integer',
  3602.         X5:replacer:'Integer',
  3603.         X7:out('Grid')),
  3604.       f(height, X7:'Piece', X8:out('Integer')),
  3605.       f(divide, X8:a:'Numerical', 'THREE':b:'Numerical', X9:out('Numerical')),
  3606.       f(downscale, X7:'Grid', X9:factor:'Integer', OUT:out('Grid'))
  3607.     ].
  3608. solve('623ea044', IN, OUT) :-
  3609.     [ f(objects,
  3610.         IN:'Grid',
  3611.         univalued=true,
  3612.         diagonal=false,
  3613.         without_bg=true,
  3614.         X1:out('Objects')),
  3615.       f(first, X1:'Container', X2:out('Any')),
  3616.       f(center, X2:'Patch', X3:out('Point')),
  3617.       f(color, X2:obj:'Object', X4:out('Integer')),
  3618.       f(astuple, (1, 1):a:'Integer', (-1, -1):b:'Integer', X5:out('Point')),
  3619.       f(astuple, (-1, 1):a:'Integer', (1, -1):b:'Integer', X6:out('Point')),
  3620.       f(combine,
  3621.         X5:a:'Container',
  3622.         X6:b:'Container',
  3623.         X7:out('Container')),
  3624.       f(lbind, shoot, X3:fixed:'Any', X8:out('Callable')),
  3625.       f(mapply,
  3626.         X8,
  3627.         X7:container:'ContainerContainer',
  3628.         X9:out('FrozenSet')),
  3629.       f(fill,
  3630.         IN:'Grid',
  3631.         X4:value:'Integer',
  3632.         X9:'Patch',
  3633.         OUT:out('Grid'))
  3634.     ].
  3635. solve('6b9890af', IN, OUT) :-
  3636.     [ f(objects,
  3637.         IN:'Grid',
  3638.         univalued=true,
  3639.         diagonal=true,
  3640.         without_bg=true,
  3641.         X1:out('Objects')),
  3642.       f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X2:out('Indices')),
  3643.       f(argmin, X1:'Container', size:compfunc:'Callable', X3:out('Any')),
  3644.       f(subgrid, X2:'Patch', IN:'Grid', X4:out('Grid')),
  3645.       f(width, X4:'Piece', X5:out('Integer')),
  3646.       f(divide, X5:a:'Numerical', 'THREE':b:'Numerical', X6:out('Numerical')),
  3647.       f(upscale,
  3648.         X3:'Element',
  3649.         X6:factor:'Integer',
  3650.         X7:out('Element')),
  3651.       f(normalize, X7:'Patch', X8:out('Patch')),
  3652.       f(shift, X8:'Patch', (1, 1):directions:'Point', X9:out('Patch')),
  3653.       f(paint, X4:'Grid', X9:obj:'Object', OUT:out('Grid'))
  3654.     ].
  3655. solve('794b24be', IN, OUT) :-
  3656.     [ f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X1:out('Indices')),
  3657.       f(size, X1:'Container', X2:out('Integer')),
  3658.       f(decrement, X2:x:'Numerical', X3:out('Numerical')),
  3659.       f(canvas, 'ZERO':value:'Integer', (3, 3):dimensions:'Point', X4:out('Grid')),
  3660.       f(tojvec, X3:j:'Integer', X5:out('Point')),
  3661.       f(connect, (0, 0):a:'Point', X5:b:'Point', X6:out('Indices')),
  3662.       f(equality, X2:a:'Any', 'FOUR':b:'Any', returns=X7),
  3663.       f(insert,
  3664.         (1, 1):value:'Any',
  3665.         X6:container:'FrozenSet',
  3666.         X8:out('FrozenSet')),
  3667.       f(branch,
  3668.         condition=X7,
  3669.         X8:a:'Any',
  3670.         X6:b:'Any',
  3671.         X9:out('Any')),
  3672.       f(fill,
  3673.         X4:'Grid',
  3674.         'TWO':value:'Integer',
  3675.         X9:'Patch',
  3676.         OUT:out('Grid'))
  3677.     ].
  3678. solve('88a10436', IN, OUT) :-
  3679.     [ f(objects,
  3680.         IN:'Grid',
  3681.         univalued=false,
  3682.         diagonal=false,
  3683.         without_bg=true,
  3684.         X1:out('Objects')),
  3685.       f(colorfilter,
  3686.         X1:objs:'Objects',
  3687.         'FIVE':value:'Integer',
  3688.         X2:out('Objects')),
  3689.       f(first, X2:'Container', X3:out('Any')),
  3690.       f(center, X3:'Patch', X4:out('Point')),
  3691.       f(difference,
  3692.         X1:a:'FrozenSet',
  3693.         X2:b:'FrozenSet',
  3694.         X5:out('FrozenSet')),
  3695.       f(first, X5:'Container', X6:out('Any')),
  3696.       f(normalize, X6:'Patch', X7:out('Patch')),
  3697.       f(shift, X7:'Patch', X4:directions:'Point', X8:out('Patch')),
  3698.       f(shift, X8:'Patch', (-1, -1):directions:'Point', X9:out('Patch')),
  3699.       f(paint, IN:'Grid', X9:obj:'Object', OUT:out('Grid'))
  3700.     ].
  3701. solve('88a62173', IN, OUT) :-
  3702.     [ f(lefthalf, IN:'Grid', X1:out('Grid')),
  3703.       f(righthalf, IN:'Grid', X2:out('Grid')),
  3704.       f(tophalf, X1:'Grid', X3:out('Grid')),
  3705.       f(tophalf, X2:'Grid', X4:out('Grid')),
  3706.       f(bottomhalf, X1:'Grid', X5:out('Grid')),
  3707.       f(bottomhalf, X2:'Grid', X6:out('Grid')),
  3708.       f(astuple, X3:a:'Integer', X4:b:'Integer', X7:out('Point')),
  3709.       f(astuple, X5:a:'Integer', X6:b:'Integer', X8:out('Point')),
  3710.       f(combine,
  3711.         X7:a:'Container',
  3712.         X8:b:'Container',
  3713.         X9:out('Container')),
  3714.       f(leastcommon, X9:'Container', OUT:out('Any'))
  3715.     ].
  3716. solve(890034000000000.0, IN, OUT) :-
  3717.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  3718.       f(ofcolor, IN:'Grid', X1:value:'Integer', X2:out('Indices')),
  3719.       f(inbox, X2:'Patch', X3:out('Indices')),
  3720.       f(recolor, 'ZERO':value:'Integer', X3:'Patch', X4:out('Object')),
  3721.       f(occurrences, IN:'Grid', X4:obj:'Object', X5:out('Indices')),
  3722.       f(normalize, X2:'Patch', X6:out('Patch')),
  3723.       f(shift, X6:'Patch', (-1, -1):directions:'Point', X7:out('Patch')),
  3724.       f(lbind, shift, X7:fixed:'Any', X8:out('Callable')),
  3725.       f(mapply,
  3726.         X8,
  3727.         X5:container:'ContainerContainer',
  3728.         X9:out('FrozenSet')),
  3729.       f(fill,
  3730.         IN:'Grid',
  3731.         X1:value:'Integer',
  3732.         X9:'Patch',
  3733.         OUT:out('Grid'))
  3734.     ].
  3735. solve('99b1bc43', IN, OUT) :-
  3736.     [ f(tophalf, IN:'Grid', X1:out('Grid')),
  3737.       f(bottomhalf, IN:'Grid', X2:out('Grid')),
  3738.       f(ofcolor, X1:'Grid', 'ZERO':value:'Integer', X3:out('Indices')),
  3739.       f(ofcolor, X2:'Grid', 'ZERO':value:'Integer', X4:out('Indices')),
  3740.       f(combine,
  3741.         X3:a:'Container',
  3742.         X4:b:'Container',
  3743.         X5:out('Container')),
  3744.       f(intersection,
  3745.         X3:a:'FrozenSet',
  3746.         X4:b:'FrozenSet',
  3747.         X6:out('FrozenSet')),
  3748.       f(difference,
  3749.         X5:a:'FrozenSet',
  3750.         X6:b:'FrozenSet',
  3751.         X7:out('FrozenSet')),
  3752.       f(shape, X1:'Piece', X8:out('Point')),
  3753.       f(canvas,
  3754.         'ZERO':value:'Integer',
  3755.         X8:dimensions:'Point',
  3756.         X9:out('Grid')),
  3757.       f(fill,
  3758.         X9:'Grid',
  3759.         'THREE':value:'Integer',
  3760.         X7:'Patch',
  3761.         OUT:out('Grid'))
  3762.     ].
  3763. solve(a9f96cdd, IN, OUT) :-
  3764.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  3765.       f(replace,
  3766.         IN:'Grid',
  3767.         'TWO':replacee:'Integer',
  3768.         'ZERO':replacer:'Integer',
  3769.         X2:out('Grid')),
  3770.       f(shift, X1:'Patch', (-1, -1):directions:'Point', X3:out('Patch')),
  3771.       f(fill,
  3772.         X2:'Grid',
  3773.         'THREE':value:'Integer',
  3774.         X3:'Patch',
  3775.         X4:out('Grid')),
  3776.       f(shift, X1:'Patch', (-1, 1):directions:'Point', X5:out('Patch')),
  3777.       f(fill,
  3778.         X4:'Grid',
  3779.         'SIX':value:'Integer',
  3780.         X5:'Patch',
  3781.         X6:out('Grid')),
  3782.       f(shift, X1:'Patch', (1, -1):directions:'Point', X7:out('Patch')),
  3783.       f(fill,
  3784.         X6:'Grid',
  3785.         'EIGHT':value:'Integer',
  3786.         X7:'Patch',
  3787.         X8:out('Grid')),
  3788.       f(shift, X1:'Patch', (1, 1):directions:'Point', X9:out('Patch')),
  3789.       f(fill,
  3790.         X8:'Grid',
  3791.         'SEVEN':value:'Integer',
  3792.         X9:'Patch',
  3793.         OUT:out('Grid'))
  3794.     ].
  3795. solve(af902bf9, IN, OUT) :-
  3796.     [ f(ofcolor, IN:'Grid', 'FOUR':value:'Integer', X1:out('Indices')),
  3797.       f(prapply, connect, X1, X1, X2),
  3798.       f(fork,
  3799.         either:outer:'Callable',
  3800.         vline:a:'Callable',
  3801.         hline:b:'Callable',
  3802.         X3:out('Callable')),
  3803.       f(mfilter, X2:'Container', X3, X4:out('FrozenSet')),
  3804.       f(underfill,
  3805.         IN:'Grid',
  3806.         'NEG_ONE':value:'Integer',
  3807.         X4:'Patch',
  3808.         X5:out('Grid')),
  3809.       f(objects,
  3810.         X5:'Grid',
  3811.         univalued=false,
  3812.         diagonal=false,
  3813.         without_bg=true,
  3814.         X6:out('Objects')),
  3815.       f(compose,
  3816.         backdrop:outer:'Callable',
  3817.         inbox:inner:'Callable',
  3818.         X7:out('Callable')),
  3819.       f(mapply,
  3820.         X7,
  3821.         X6:container:'ContainerContainer',
  3822.         X8:out('FrozenSet')),
  3823.       f(fill,
  3824.         X5:'Grid',
  3825.         'TWO':value:'Integer',
  3826.         X8:'Patch',
  3827.         X9:out('Grid')),
  3828.       f(replace,
  3829.         X9:'Grid',
  3830.         'NEG_ONE':replacee:'Integer',
  3831.         'ZERO':replacer:'Integer',
  3832.         OUT:out('Grid'))
  3833.     ].
  3834. solve(b548a754, IN, OUT) :-
  3835.     [ f(objects,
  3836.         IN:'Grid',
  3837.         univalued=true,
  3838.         diagonal=false,
  3839.         without_bg=true,
  3840.         X1:out('Objects')),
  3841.       f(replace,
  3842.         IN:'Grid',
  3843.         'EIGHT':replacee:'Integer',
  3844.         'ZERO':replacer:'Integer',
  3845.         X2:out('Grid')),
  3846.       f(leastcolor, X2:'Element', X3:out('Integer')),
  3847.       f(replace,
  3848.         X2:'Grid',
  3849.         X3:replacee:'Integer',
  3850.         'ZERO':replacer:'Integer',
  3851.         X4:out('Grid')),
  3852.       f(leastcolor, X4:'Element', X5:out('Integer')),
  3853.       f(merge, X1:containers:'ContainerContainer', X6:out('Container')),
  3854.       f(backdrop, X6:'Patch', X7:out('Indices')),
  3855.       f(box, X6:'Patch', X8:out('Indices')),
  3856.       f(fill,
  3857.         IN:'Grid',
  3858.         X3:value:'Integer',
  3859.         X7:'Patch',
  3860.         X9:out('Grid')),
  3861.       f(fill,
  3862.         X9:'Grid',
  3863.         X5:value:'Integer',
  3864.         X8:'Patch',
  3865.         OUT:out('Grid'))
  3866.     ].
  3867. solve(bdad9b1f, IN, OUT) :-
  3868.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  3869.       f(ofcolor, IN:'Grid', 'EIGHT':value:'Integer', X2:out('Indices')),
  3870.       f(center, X1:'Patch', X3:out('Point')),
  3871.       f(center, X2:'Patch', X4:out('Point')),
  3872.       f(hfrontier, X3:location:'Point', X5:out('Indices')),
  3873.       f(vfrontier, X4:location:'Point', X6:out('Indices')),
  3874.       f(intersection,
  3875.         X5:a:'FrozenSet',
  3876.         X6:b:'FrozenSet',
  3877.         X7:out('FrozenSet')),
  3878.       f(fill,
  3879.         IN:'Grid',
  3880.         'TWO':value:'Integer',
  3881.         X5:'Patch',
  3882.         X8:out('Grid')),
  3883.       f(fill,
  3884.         X8:'Grid',
  3885.         'EIGHT':value:'Integer',
  3886.         X6:'Patch',
  3887.         X9:out('Grid')),
  3888.       f(fill,
  3889.         X9:'Grid',
  3890.         'FOUR':value:'Integer',
  3891.         X7:'Patch',
  3892.         OUT:out('Grid'))
  3893.     ].
  3894. solve(c3e719e8, IN, OUT) :-
  3895.     [ f(mostcolor, IN:'Element', X1:out('Integer')),
  3896.       f(hconcat, IN:a:'Grid', IN:b:'Grid', X2:out('Grid')),
  3897.       f(upscale, IN:'Element', 'THREE':factor:'Integer', X3:out('Element')),
  3898.       f(ofcolor, X3:'Grid', X1:value:'Integer', X4:out('Indices')),
  3899.       f(asindices, X3:'Grid', X5:out('Indices')),
  3900.       f(difference,
  3901.         X5:a:'FrozenSet',
  3902.         X4:b:'FrozenSet',
  3903.         X6:out('FrozenSet')),
  3904.       f(hconcat, X2:a:'Grid', IN:b:'Grid', X7:out('Grid')),
  3905.       f(vconcat, X7:a:'Grid', X7:b:'Grid', X8:out('Grid')),
  3906.       f(vconcat, X8:a:'Grid', X7:b:'Grid', X9:out('Grid')),
  3907.       f(fill,
  3908.         X9:'Grid',
  3909.         'ZERO':value:'Integer',
  3910.         X6:'Patch',
  3911.         OUT:out('Grid'))
  3912.     ].
  3913. solve(de1cd16c, IN, OUT) :-
  3914.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  3915.       f(objects,
  3916.         IN:'Grid',
  3917.         univalued=true,
  3918.         diagonal=false,
  3919.         without_bg=false,
  3920.         X2:out('Objects')),
  3921.       f(sizefilter, X2:'Container', 'ONE':n:'Integer', X3:out('FrozenSet')),
  3922.       f(difference,
  3923.         X2:a:'FrozenSet',
  3924.         X3:b:'FrozenSet',
  3925.         X4:out('FrozenSet')),
  3926.       f(rbind, subgrid, IN:fixed:'Any', X5:out('Callable')),
  3927.       f(apply, X5, X4:'Container', X6:out('Container')),
  3928.       f(rbind, colorcount, X1:fixed:'Any', X7:out('Callable')),
  3929.       f(argmax,
  3930.         X6:'Container',
  3931.         X7:compfunc:'Callable',
  3932.         X8:out('Any')),
  3933.       f(mostcolor, X8:'Element', X9:out('Integer')),
  3934.       f(canvas,
  3935.         X9:value:'Integer',
  3936.         (1, 1):dimensions:'Point',
  3937.         OUT:out('Grid'))
  3938.     ].
  3939. solve(d8c310e9, IN, OUT) :-
  3940.     [ f(objects,
  3941.         IN:'Grid',
  3942.         univalued=false,
  3943.         diagonal=false,
  3944.         without_bg=true,
  3945.         X1:out('Objects')),
  3946.       f(first, X1:'Container', X2:out('Any')),
  3947.       f(hperiod, X2:obj:'Object', X3:out('Integer')),
  3948.       f(multiply,
  3949.         X3:a:'Numerical',
  3950.         'THREE':b:'Numerical',
  3951.         X4:out('Numerical')),
  3952.       f(tojvec, X3:j:'Integer', X5:out('Point')),
  3953.       f(tojvec, X4:j:'Integer', X6:out('Point')),
  3954.       f(shift, X2:'Patch', X5:directions:'Point', X7:out('Patch')),
  3955.       f(shift, X2:'Patch', X6:directions:'Point', X8:out('Patch')),
  3956.       f(paint, IN:'Grid', X7:obj:'Object', X9:out('Grid')),
  3957.       f(paint, X9:'Grid', X8:obj:'Object', OUT:out('Grid'))
  3958.     ].
  3959. solve(a3325580, IN, OUT) :-
  3960.     [ f(objects,
  3961.         IN:'Grid',
  3962.         univalued=true,
  3963.         diagonal=false,
  3964.         without_bg=true,
  3965.         X1:out('Objects')),
  3966.       f(valmax,
  3967.         X1:'Container',
  3968.         size:compfunc:'Callable',
  3969.         X2:out('Integer')),
  3970.       f(sizefilter,
  3971.         X1:'Container',
  3972.         X2:n:'Integer',
  3973.         X3:out('FrozenSet')),
  3974.       f(order,
  3975.         X3:'Container',
  3976.         leftmost:compfunc:'Callable',
  3977.         X4:out('Tuple')),
  3978.       f(apply, color, X4:'Container', X5:out('Container')),
  3979.       f(astuple, 'ONE':a:'Integer', X2:b:'Integer', X6:out('Point')),
  3980.       f(rbind, canvas, X6:fixed:'Any', X7:out('Callable')),
  3981.       f(apply, X7, X5:'Container', X8:out('Container')),
  3982.       f(merge, X8:containers:'ContainerContainer', X9:out('Container')),
  3983.       f(dmirror, X9:'Piece', OUT:out('Piece'))
  3984.     ].
  3985. solve('8eb1be9a', IN, OUT) :-
  3986.     [ f(objects,
  3987.         IN:'Grid',
  3988.         univalued=true,
  3989.         diagonal=true,
  3990.         without_bg=true,
  3991.         X1:out('Objects')),
  3992.       f(first, X1:'Container', X2:out('Any')),
  3993.       f(interval,
  3994.         'NEG_TWO':start:'Integer',
  3995.         'FOUR':stop:'Integer',
  3996.         'ONE':step:'Integer',
  3997.         X3:out('Tuple')),
  3998.       f(lbind, shift, X2:fixed:'Any', X4:out('Callable')),
  3999.       f(height, X2:'Piece', X5:out('Integer')),
  4000.       f(rbind, multiply, X5:fixed:'Any', X6:out('Callable')),
  4001.       f(apply, X6, X3:'Container', X7:out('Container')),
  4002.       f(apply, toivec, X7:'Container', X8:out('Container')),
  4003.       f(mapply,
  4004.         X4,
  4005.         X8:container:'ContainerContainer',
  4006.         X9:out('FrozenSet')),
  4007.       f(paint, IN:'Grid', X9:obj:'Object', OUT:out('Grid'))
  4008.     ].
  4009. solve('321b1fc6', IN, OUT) :-
  4010.     [ f(objects,
  4011.         IN:'Grid',
  4012.         univalued=false,
  4013.         diagonal=false,
  4014.         without_bg=true,
  4015.         X1:out('Objects')),
  4016.       f(colorfilter,
  4017.         X1:objs:'Objects',
  4018.         'EIGHT':value:'Integer',
  4019.         X2:out('Objects')),
  4020.       f(difference,
  4021.         X1:a:'FrozenSet',
  4022.         X2:b:'FrozenSet',
  4023.         X3:out('FrozenSet')),
  4024.       f(first, X3:'Container', X4:out('Any')),
  4025.       f(cover, IN:'Grid', X4:'Patch', X5:out('Grid')),
  4026.       f(normalize, X4:'Patch', X6:out('Patch')),
  4027.       f(lbind, shift, X6:fixed:'Any', X7:out('Callable')),
  4028.       f(apply, ulcorner, X2:'Container', X8:out('Container')),
  4029.       f(mapply,
  4030.         X7,
  4031.         X8:container:'ContainerContainer',
  4032.         X9:out('FrozenSet')),
  4033.       f(paint, X5:'Grid', X9:obj:'Object', OUT:out('Grid'))
  4034.     ].
  4035. solve('1caeab9d', IN, OUT) :-
  4036.     [ f(objects,
  4037.         IN:'Grid',
  4038.         univalued=true,
  4039.         diagonal=true,
  4040.         without_bg=true,
  4041.         X1:out('Objects')),
  4042.       f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X2:out('Indices')),
  4043.       f(lowermost, X2:'Patch', X3:out('Integer')),
  4044.       f(lbind, subtract, X3:fixed:'Any', X4:out('Callable')),
  4045.       f(chain,
  4046.         toivec:h:'Callable',
  4047.         X4:g:'Callable',
  4048.         lowermost:f:'Callable',
  4049.         X5:out('Callable')),
  4050.       f(fork,
  4051.         shift:outer:'Callable',
  4052.         identity:a:'Callable',
  4053.         X5:b:'Callable',
  4054.         X6:out('Callable')),
  4055.       f(merge, X1:containers:'ContainerContainer', X7:out('Container')),
  4056.       f(cover, IN:'Grid', X7:'Patch', X8:out('Grid')),
  4057.       f(mapply,
  4058.         X6,
  4059.         X1:container:'ContainerContainer',
  4060.         X9:out('FrozenSet')),
  4061.       f(paint, X8:'Grid', X9:obj:'Object', OUT:out('Grid'))
  4062.     ].
  4063. solve('77fdfe62', IN, OUT) :-
  4064.     [ f(ofcolor, IN:'Grid', 'EIGHT':value:'Integer', X1:out('Indices')),
  4065.       f(subgrid, X1:'Patch', IN:'Grid', X2:out('Grid')),
  4066.       f(replace,
  4067.         IN:'Grid',
  4068.         'EIGHT':replacee:'Integer',
  4069.         'ZERO':replacer:'Integer',
  4070.         X3:out('Grid')),
  4071.       f(replace,
  4072.         X3:'Grid',
  4073.         'ONE':replacee:'Integer',
  4074.         'ZERO':replacer:'Integer',
  4075.         X4:out('Grid')),
  4076.       f(compress, X4:'Grid', X5:out('Grid')),
  4077.       f(width, X2:'Piece', X6:out('Integer')),
  4078.       f(halve, X6:n:'Numerical', X7:out('Numerical')),
  4079.       f(upscale,
  4080.         X5:'Element',
  4081.         X7:factor:'Integer',
  4082.         X8:out('Element')),
  4083.       f(ofcolor, X2:'Grid', 'ZERO':value:'Integer', X9:out('Indices')),
  4084.       f(fill,
  4085.         X8:'Grid',
  4086.         'ZERO':value:'Integer',
  4087.         X9:'Patch',
  4088.         OUT:out('Grid'))
  4089.     ].
  4090. solve(c0f76784, IN, OUT) :-
  4091.     [ f(objects,
  4092.         IN:'Grid',
  4093.         univalued=true,
  4094.         diagonal=false,
  4095.         without_bg=false,
  4096.         X1:out('Objects')),
  4097.       f(colorfilter,
  4098.         X1:objs:'Objects',
  4099.         'ZERO':value:'Integer',
  4100.         X2:out('Objects')),
  4101.       f(sfilter,
  4102.         X2:'Container',
  4103.         square:condition:'Callable',
  4104.         X3:out('Container')),
  4105.       f(sizefilter, X3:'Container', 'ONE':n:'Integer', X4:out('FrozenSet')),
  4106.       f(merge, X4:containers:'ContainerContainer', X5:out('Container')),
  4107.       f(argmax, X3:'Container', size:compfunc:'Callable', X6:out('Any')),
  4108.       f(merge, X3:containers:'ContainerContainer', X7:out('Container')),
  4109.       f(fill,
  4110.         IN:'Grid',
  4111.         'SEVEN':value:'Integer',
  4112.         X7:'Patch',
  4113.         X8:out('Grid')),
  4114.       f(fill,
  4115.         X8:'Grid',
  4116.         'EIGHT':value:'Integer',
  4117.         X6:'Patch',
  4118.         X9:out('Grid')),
  4119.       f(fill,
  4120.         X9:'Grid',
  4121.         'SIX':value:'Integer',
  4122.         X5:'Patch',
  4123.         OUT:out('Grid'))
  4124.     ].
  4125. solve('1b60fb0c', IN, OUT) :-
  4126.     [ f(rot90, IN:'Grid', X1:out('Grid')),
  4127.       f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X2:out('Indices')),
  4128.       f(ofcolor, X1:'Grid', 'ONE':value:'Integer', X3:out('Indices')),
  4129.       f(neighbors, (0, 0):loc:'Point', X4:out('Indices')),
  4130.       f(mapply,
  4131.         neighbors,
  4132.         X4:container:'ContainerContainer',
  4133.         X5:out('FrozenSet')),
  4134.       f(lbind, shift, X3:fixed:'Any', X6:out('Callable')),
  4135.       f(apply, X6, X5:'Container', X7:out('Container')),
  4136.       f(lbind, intersection, X2:fixed:'Any', X8:out('Callable')),
  4137.       f(argmax,
  4138.         X7:'Container',
  4139.         X8:compfunc:'Callable',
  4140.         X9:out('Any')),
  4141.       f(underfill,
  4142.         IN:'Grid',
  4143.         'TWO':value:'Integer',
  4144.         X9:'Patch',
  4145.         OUT:out('Grid'))
  4146.     ].
  4147. solve(ddf7fa4f, IN, OUT) :-
  4148.     [ f(objects,
  4149.         IN:'Grid',
  4150.         univalued=true,
  4151.         diagonal=false,
  4152.         without_bg=true,
  4153.         X1:out('Objects')),
  4154.       f(sizefilter, X1:'Container', 'ONE':n:'Integer', X2:out('FrozenSet')),
  4155.       f(colorfilter,
  4156.         X1:objs:'Objects',
  4157.         'FIVE':value:'Integer',
  4158.         X3:out('Objects')),
  4159.       f(product,
  4160.         X2:a:'Container',
  4161.         X3:b:'Container',
  4162.         X4:out('FrozenSet')),
  4163.       f(fork,
  4164.         vmatching:outer:'Callable',
  4165.         first:a:'Callable',
  4166.         last:b:'Callable',
  4167.         X5:out('Callable')),
  4168.       f(sfilter,
  4169.         X4:'Container',
  4170.         X5:condition:'Callable',
  4171.         X6:out('Container')),
  4172.       f(compose,
  4173.         color:outer:'Callable',
  4174.         first:inner:'Callable',
  4175.         X7:out('Callable')),
  4176.       f(fork,
  4177.         recolor:outer:'Callable',
  4178.         X7:a:'Callable',
  4179.         last:b:'Callable',
  4180.         X8:out('Callable')),
  4181.       f(mapply,
  4182.         X8,
  4183.         X6:container:'ContainerContainer',
  4184.         X9:out('FrozenSet')),
  4185.       f(paint, IN:'Grid', X9:obj:'Object', OUT:out('Grid'))
  4186.     ].
  4187. solve('47c1f68c', IN, OUT) :-
  4188.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  4189.       f(vmirror, IN:'Piece', X2:out('Piece')),
  4190.       f(objects,
  4191.         IN:'Grid',
  4192.         univalued=true,
  4193.         diagonal=true,
  4194.         without_bg=true,
  4195.         X3:out('Objects')),
  4196.       f(merge, X3:containers:'ContainerContainer', X4:out('Container')),
  4197.       f(mostcolor, X4:'Element', X5:out('Integer')),
  4198.       f(cellwise,
  4199.         IN:a:'Grid',
  4200.         X2:b:'Grid',
  4201.         X1:fallback:'Integer',
  4202.         X6:out('Grid')),
  4203.       f(hmirror, X6:'Piece', X7:out('Piece')),
  4204.       f(cellwise,
  4205.         X6:a:'Grid',
  4206.         X7:b:'Grid',
  4207.         X1:fallback:'Integer',
  4208.         X8:out('Grid')),
  4209.       f(compress, X8:'Grid', X9:out('Grid')),
  4210.       f(replace,
  4211.         X9:'Grid',
  4212.         X1:replacee:'Integer',
  4213.         X5:replacer:'Integer',
  4214.         OUT:out('Grid'))
  4215.     ].
  4216. solve('6c434453', IN, OUT) :-
  4217.     [ f(objects,
  4218.         IN:'Grid',
  4219.         univalued=true,
  4220.         diagonal=false,
  4221.         without_bg=true,
  4222.         X1:out('Objects')),
  4223.       f(sizefilter, X1:'Container', 'EIGHT':n:'Integer', X2:out('FrozenSet')),
  4224.       f(dneighbors, (1, 1):loc:'Point', X3:out('Indices')),
  4225.       f(insert,
  4226.         (1, 1):value:'Any',
  4227.         X3:container:'FrozenSet',
  4228.         X4:out('FrozenSet')),
  4229.       f(merge, X2:containers:'ContainerContainer', X5:out('Container')),
  4230.       f(cover, IN:'Grid', X5:'Patch', X6:out('Grid')),
  4231.       f(apply, ulcorner, X2:'Container', X7:out('Container')),
  4232.       f(lbind, shift, X4:fixed:'Any', X8:out('Callable')),
  4233.       f(mapply,
  4234.         X8,
  4235.         X7:container:'ContainerContainer',
  4236.         X9:out('FrozenSet')),
  4237.       f(fill,
  4238.         X6:'Grid',
  4239.         'TWO':value:'Integer',
  4240.         X9:'Patch',
  4241.         OUT:out('Grid'))
  4242.     ].
  4243. solve(23581191, IN, OUT) :-
  4244.     [ f(objects,
  4245.         IN:'Grid',
  4246.         univalued=true,
  4247.         diagonal=true,
  4248.         without_bg=true,
  4249.         X1:out('Objects')),
  4250.       f(fork,
  4251.         combine:outer:'Callable',
  4252.         vfrontier:a:'Callable',
  4253.         hfrontier:b:'Callable',
  4254.         X2:out('Callable')),
  4255.       f(compose,
  4256.         X2:outer:'Callable',
  4257.         center:inner:'Callable',
  4258.         X3:out('Callable')),
  4259.       f(fork,
  4260.         recolor:outer:'Callable',
  4261.         color:a:'Callable',
  4262.         X3:b:'Callable',
  4263.         X4:out('Callable')),
  4264.       f(mapply,
  4265.         X4,
  4266.         X1:container:'ContainerContainer',
  4267.         X5:out('FrozenSet')),
  4268.       f(paint, IN:'Grid', X5:obj:'Object', X6:out('Grid')),
  4269.       f(fork,
  4270.         intersection:outer:'Callable',
  4271.         first:a:'Callable',
  4272.         last:b:'Callable',
  4273.         X7:out('Callable')),
  4274.       f(apply, X3, X1:'Container', X8:out('Container')),
  4275.       f(X7, X8, X9),
  4276.       f(fill,
  4277.         X6:'Grid',
  4278.         'TWO':value:'Integer',
  4279.         X9:'Patch',
  4280.         OUT:out('Grid'))
  4281.     ].
  4282. solve(c8cbb738, IN, OUT) :-
  4283.     [ f(mostcolor, IN:'Element', X1:out('Integer')),
  4284.       f(fgpartition, IN:'Grid', X2:out('Objects')),
  4285.       f(valmax,
  4286.         X2:'Container',
  4287.         shape:compfunc:'Callable',
  4288.         X3:out('Integer')),
  4289.       f(canvas,
  4290.         X1:value:'Integer',
  4291.         X3:dimensions:'Point',
  4292.         X4:out('Grid')),
  4293.       f(apply, normalize, X2:'Container', X5:out('Container')),
  4294.       f(lbind, subtract, X3:fixed:'Any', X6:out('Callable')),
  4295.       f(chain,
  4296.         halve:h:'Callable',
  4297.         X6:g:'Callable',
  4298.         shape:f:'Callable',
  4299.         X7:out('Callable')),
  4300.       f(fork,
  4301.         shift:outer:'Callable',
  4302.         identity:a:'Callable',
  4303.         X7:b:'Callable',
  4304.         X8:out('Callable')),
  4305.       f(mapply,
  4306.         X8,
  4307.         X5:container:'ContainerContainer',
  4308.         X9:out('FrozenSet')),
  4309.       f(paint, X4:'Grid', X9:obj:'Object', OUT:out('Grid'))
  4310.     ].
  4311. solve('3eda0437', IN, OUT) :-
  4312.     [ f(interval,
  4313.         'TWO':start:'Integer',
  4314.         'TEN':stop:'Integer',
  4315.         'ONE':step:'Integer',
  4316.         X1:out('Tuple')),
  4317.       f(prapply, astuple, X1, X1, X2),
  4318.       f(lbind, canvas, 'ZERO':fixed:'Any', X3:out('Callable')),
  4319.       f(lbind, occurrences, IN:fixed:'Any', X4:out('Callable')),
  4320.       f(lbind, lbind, shift:fixed:'Any', X5:out('Callable')),
  4321.       f(fork,
  4322.         apply:outer:'Callable',
  4323.         X5:a:'Callable',
  4324.         X4:b:'Callable',
  4325.         X6:out('Callable')),
  4326.       f(chain,
  4327.         X6:h:'Callable',
  4328.         asobject:g:'Callable',
  4329.         X3:f:'Callable',
  4330.         X7:out('Callable')),
  4331.       f(mapply,
  4332.         X7,
  4333.         X2:container:'ContainerContainer',
  4334.         X8:out('FrozenSet')),
  4335.       f(argmax, X8:'Container', size:compfunc:'Callable', X9:out('Any')),
  4336.       f(fill,
  4337.         IN:'Grid',
  4338.         'SIX':value:'Integer',
  4339.         X9:'Patch',
  4340.         OUT:out('Grid'))
  4341.     ].
  4342. solve(dc0a314f, IN, OUT) :-
  4343.     [ f(ofcolor, IN:'Grid', 'THREE':value:'Integer', X1:out('Indices')),
  4344.       f(replace,
  4345.         IN:'Grid',
  4346.         'THREE':replacee:'Integer',
  4347.         'ZERO':replacer:'Integer',
  4348.         X2:out('Grid')),
  4349.       f(dmirror, X2:'Piece', X3:out('Piece')),
  4350.       f(papply, pair, X2:a:'Tuple', X3:b:'Tuple', X4:out('Tuple')),
  4351.       f(lbind, apply, maximum:fixed:'Any', X5:out('Callable')),
  4352.       f(apply, X5, X4:'Container', X6:out('Container')),
  4353.       f(cmirror, X6:'Piece', X7:out('Piece')),
  4354.       f(papply, pair, X6:a:'Tuple', X7:b:'Tuple', X8:out('Tuple')),
  4355.       f(apply, X5, X8:'Container', X9:out('Container')),
  4356.       f(subgrid, X1:'Patch', X9:'Grid', OUT:out('Grid'))
  4357.     ].
  4358. solve(d4469b4b, IN, OUT) :-
  4359.     [ f(palette, IN:'Element', X1:out('IntegerSet')),
  4360.       f(other, X1:'Container', 'ZERO':value:'Any', X2:out('Any')),
  4361.       f(equality, X2:a:'Any', 'ONE':b:'Any', returns=X3),
  4362.       f(equality, X2:a:'Any', 'TWO':b:'Any', returns=X4),
  4363.       f(branch, condition=X3, (1, 1):a:'Any', (2, 2):b:'Any', X5:out('Any')),
  4364.       f(branch,
  4365.         condition=X4,
  4366.         (0, 1):a:'Any',
  4367.         X5:b:'Any',
  4368.         X6:out('Any')),
  4369.       f(fork,
  4370.         combine:outer:'Callable',
  4371.         vfrontier:a:'Callable',
  4372.         hfrontier:b:'Callable',
  4373.         X7:out('Callable')),
  4374.       f(X7, X6, X8),
  4375.       f(canvas, 'ZERO':value:'Integer', (3, 3):dimensions:'Point', X9:out('Grid')),
  4376.       f(fill,
  4377.         X9:'Grid',
  4378.         'FIVE':value:'Integer',
  4379.         X8:'Patch',
  4380.         OUT:out('Grid'))
  4381.     ].
  4382. solve('6ecd11f4', IN, OUT) :-
  4383.     [ f(objects,
  4384.         IN:'Grid',
  4385.         univalued=false,
  4386.         diagonal=true,
  4387.         without_bg=true,
  4388.         X1:out('Objects')),
  4389.       f(argmax, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  4390.       f(argmin, X1:'Container', size:compfunc:'Callable', X3:out('Any')),
  4391.       f(subgrid, X2:'Patch', IN:'Grid', X4:out('Grid')),
  4392.       f(subgrid, X3:'Patch', IN:'Grid', X5:out('Grid')),
  4393.       f(width, X4:'Piece', X6:out('Integer')),
  4394.       f(width, X5:'Piece', X7:out('Integer')),
  4395.       f(divide,
  4396.         X6:a:'Numerical',
  4397.         X7:b:'Numerical',
  4398.         X8:out('Numerical')),
  4399.       f(downscale, X4:'Grid', X8:factor:'Integer', X9:out('Grid')),
  4400.       f(ofcolor, X9:'Grid', 'ZERO':value:'Integer', X10:out('Indices')),
  4401.       f(fill,
  4402.         X5:'Grid',
  4403.         'ZERO':value:'Integer',
  4404.         X10:'Patch',
  4405.         OUT:out('Grid'))
  4406.     ].
  4407. solve('760b3cac', IN, OUT) :-
  4408.     [ f(ofcolor, IN:'Grid', 'FOUR':value:'Integer', X1:out('Indices')),
  4409.       f(ofcolor, IN:'Grid', 'EIGHT':value:'Integer', X2:out('Indices')),
  4410.       f(ulcorner, X1:'Patch', X3:out('Point')),
  4411.       f(index, IN:'Grid', X3:loc:'Point', X4:out('Integer')),
  4412.       f(equality, X4:a:'Any', 'FOUR':b:'Any', returns=X5),
  4413.       f(branch, condition=X5, 'NEG_ONE':a:'Any', 'ONE':b:'Any', X6:out('Any')),
  4414.       f(multiply,
  4415.         X6:a:'Numerical',
  4416.         'THREE':b:'Numerical',
  4417.         X7:out('Numerical')),
  4418.       f(tojvec, X7:j:'Integer', X8:out('Point')),
  4419.       f(vmirror, X2:'Piece', X9:out('Piece')),
  4420.       f(shift, X9:'Patch', X8:directions:'Point', X10:out('Patch')),
  4421.       f(fill,
  4422.         IN:'Grid',
  4423.         'EIGHT':value:'Integer',
  4424.         X10:'Patch',
  4425.         OUT:out('Grid'))
  4426.     ].
  4427. solve(c444b776, IN, OUT) :-
  4428.     [ f(objects,
  4429.         IN:'Grid',
  4430.         univalued=true,
  4431.         diagonal=false,
  4432.         without_bg=false,
  4433.         X1:out('Objects')),
  4434.       f(colorfilter,
  4435.         X1:objs:'Objects',
  4436.         'ZERO':value:'Integer',
  4437.         X2:out('Objects')),
  4438.       f(argmin, X2:'Container', size:compfunc:'Callable', X3:out('Any')),
  4439.       f(backdrop, X3:'Patch', X4:out('Indices')),
  4440.       f(toobject, X4:'Patch', IN:'Grid', X5:out('Object')),
  4441.       f(normalize, X5:'Patch', X6:out('Patch')),
  4442.       f(lbind, shift, X6:fixed:'Any', X7:out('Callable')),
  4443.       f(compose,
  4444.         X7:outer:'Callable',
  4445.         ulcorner:inner:'Callable',
  4446.         X8:out('Callable')),
  4447.       f(remove, X3:value:'Any', X2:'Container', X9:out('Container')),
  4448.       f(mapply,
  4449.         X8,
  4450.         X9:container:'ContainerContainer',
  4451.         X10:out('FrozenSet')),
  4452.       f(paint, IN:'Grid', X10:obj:'Object', OUT:out('Grid'))
  4453.     ].
  4454. solve(d4a91cb9, IN, OUT) :-
  4455.     [ f(ofcolor, IN:'Grid', 'EIGHT':value:'Integer', X1:out('Indices')),
  4456.       f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X2:out('Indices')),
  4457.       f(first, X1:'Container', X3:out('Any')),
  4458.       f(first, X2:'Container', X4:out('Any')),
  4459.       f(last, X3:'Container', X5:out('Any')),
  4460.       f(first, X4:'Container', X6:out('Any')),
  4461.       f(astuple, X6:a:'Integer', X5:b:'Integer', X7:out('Point')),
  4462.       f(connect, X7:a:'Point', X3:b:'Point', X8:out('Indices')),
  4463.       f(connect, X7:a:'Point', X4:b:'Point', X9:out('Indices')),
  4464.       f(combine,
  4465.         X8:a:'Container',
  4466.         X9:b:'Container',
  4467.         X10:out('Container')),
  4468.       f(underfill,
  4469.         IN:'Grid',
  4470.         'FOUR':value:'Integer',
  4471.         X10:'Patch',
  4472.         OUT:out('Grid'))
  4473.     ].
  4474. solve(eb281b96, IN, OUT) :-
  4475.     [ f(height, IN:'Piece', X1:out('Integer')),
  4476.       f(width, IN:'Piece', X2:out('Integer')),
  4477.       f(decrement, X1:x:'Numerical', X3:out('Numerical')),
  4478.       f(astuple, X3:a:'Integer', X2:b:'Integer', X4:out('Point')),
  4479.       f(crop,
  4480.         IN:'Grid',
  4481.         (0, 0):start:'Point',
  4482.         X4:dims:'Point',
  4483.         X5:out('Grid')),
  4484.       f(hmirror, X5:'Piece', X6:out('Piece')),
  4485.       f(vconcat, IN:a:'Grid', X6:b:'Grid', X7:out('Grid')),
  4486.       f(double, X3:n:'Numerical', X8:out('Numerical')),
  4487.       f(astuple, X8:a:'Integer', X2:b:'Integer', X9:out('Point')),
  4488.       f(crop,
  4489.         X7:'Grid',
  4490.         (1, 0):start:'Point',
  4491.         X9:dims:'Point',
  4492.         X10:out('Grid')),
  4493.       f(vconcat, X7:a:'Grid', X10:b:'Grid', OUT:out('Grid'))
  4494.     ].
  4495. solve(ff28f65a, IN, OUT) :-
  4496.     [ f(objects,
  4497.         IN:'Grid',
  4498.         univalued=true,
  4499.         diagonal=false,
  4500.         without_bg=true,
  4501.         X1:out('Objects')),
  4502.       f(colorfilter,
  4503.         X1:objs:'Objects',
  4504.         'TWO':value:'Integer',
  4505.         X2:out('Objects')),
  4506.       f(size, X2:'Container', X3:out('Integer')),
  4507.       f(double, X3:n:'Numerical', X4:out('Numerical')),
  4508.       f(interval,
  4509.         'ZERO':start:'Integer',
  4510.         X4:stop:'Integer',
  4511.         'TWO':step:'Integer',
  4512.         X5:out('Tuple')),
  4513.       f(apply, tojvec, X5:'Container', X6:out('Container')),
  4514.       f(astuple, 'ONE':a:'Integer', 'NINE':b:'Integer', X7:out('Point')),
  4515.       f(canvas,
  4516.         'ZERO':value:'Integer',
  4517.         X7:dimensions:'Point',
  4518.         X8:out('Grid')),
  4519.       f(fill,
  4520.         X8:'Grid',
  4521.         'ONE':value:'Integer',
  4522.         X6:'Patch',
  4523.         X9:out('Grid')),
  4524.       f(hsplit, X9:'Grid', 'THREE':n:'Integer', X10:out('Tuple')),
  4525.       f(merge,
  4526.         X10:containers:'ContainerContainer',
  4527.         OUT:out('Container'))
  4528.     ].
  4529. solve('7e0986d6', IN, OUT) :-
  4530.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  4531.       f(ofcolor, IN:'Grid', X1:value:'Integer', X2:out('Indices')),
  4532.       f(replace,
  4533.         IN:'Grid',
  4534.         X1:replacee:'Integer',
  4535.         'ZERO':replacer:'Integer',
  4536.         X3:out('Grid')),
  4537.       f(leastcolor, X3:'Element', X4:out('Integer')),
  4538.       f(rbind, colorcount, X4:fixed:'Any', X5:out('Callable')),
  4539.       f(rbind, greater, 'ONE':fixed:'Any', X6:out('Callable')),
  4540.       f(compose,
  4541.         X6:outer:'Callable',
  4542.         X5:inner:'Callable',
  4543.         X7:out('Callable')),
  4544.       f(rbind, toobject, X3:fixed:'Any', X8:out('Callable')),
  4545.       f(chain,
  4546.         X7:h:'Callable',
  4547.         X8:g:'Callable',
  4548.         dneighbors:f:'Callable',
  4549.         X9:out('Callable')),
  4550.       f(sfilter,
  4551.         X2:'Container',
  4552.         X9:condition:'Callable',
  4553.         X10:out('Container')),
  4554.       f(fill,
  4555.         X3:'Grid',
  4556.         X4:value:'Integer',
  4557.         X10:'Patch',
  4558.         OUT:out('Grid'))
  4559.     ].
  4560. solve('09629e4f', IN, OUT) :-
  4561.     [ f(objects,
  4562.         IN:'Grid',
  4563.         univalued=false,
  4564.         diagonal=true,
  4565.         without_bg=true,
  4566.         X1:out('Objects')),
  4567.       f(rbind, subgrid, IN:fixed:'Any', X2:out('Callable')),
  4568.       f(apply, X2, X1:'Container', X3:out('Container')),
  4569.       f(argmin,
  4570.         X3:'Container',
  4571.         numcolors:compfunc:'Callable',
  4572.         X4:out('Any')),
  4573.       f(upscale, X4:'Element', 'FOUR':factor:'Integer', X5:out('Element')),
  4574.       f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X6:out('Indices')),
  4575.       f(shift, X6:'Patch', (1, 1):directions:'Point', X7:out('Patch')),
  4576.       f(fill,
  4577.         X5:'Grid',
  4578.         'FIVE':value:'Integer',
  4579.         X7:'Patch',
  4580.         X8:out('Grid')),
  4581.       f(shape, X8:'Piece', X9:out('Point')),
  4582.       f(decrement, X9:x:'Numerical', X10:out('Numerical')),
  4583.       f(crop,
  4584.         X8:'Grid',
  4585.         (1, 1):start:'Point',
  4586.         X10:dims:'Point',
  4587.         OUT:out('Grid'))
  4588.     ].
  4589. solve(a85d4709, IN, OUT) :-
  4590.     [ f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X1:out('Indices')),
  4591.       f(lbind, matcher, last:fixed:'Any', X2:out('Callable')),
  4592.       f(lbind, sfilter, X1:fixed:'Any', X3:out('Callable')),
  4593.       f(lbind, mapply, hfrontier:fixed:'Any', X4:out('Callable')),
  4594.       f(chain,
  4595.         X4:h:'Callable',
  4596.         X3:g:'Callable',
  4597.         X2:f:'Callable',
  4598.         X5:out('Callable')),
  4599.       f(X5, 'ZERO', X6),
  4600.       f(X5, 'TWO', X7),
  4601.       f(X5, 'ONE', X8),
  4602.       f(fill,
  4603.         IN:'Grid',
  4604.         'TWO':value:'Integer',
  4605.         X6:'Patch',
  4606.         X9:out('Grid')),
  4607.       f(fill,
  4608.         X9:'Grid',
  4609.         'THREE':value:'Integer',
  4610.         X7:'Patch',
  4611.         X10:out('Grid')),
  4612.       f(fill,
  4613.         X10:'Grid',
  4614.         'FOUR':value:'Integer',
  4615.         X8:'Patch',
  4616.         OUT:out('Grid'))
  4617.     ].
  4618. solve(feca6190, IN, OUT) :-
  4619.     [ f(objects,
  4620.         IN:'Grid',
  4621.         univalued=true,
  4622.         diagonal=false,
  4623.         without_bg=true,
  4624.         X1:out('Objects')),
  4625.       f(size, X1:'Container', X2:out('Integer')),
  4626.       f(multiply,
  4627.         X2:a:'Numerical',
  4628.         'FIVE':b:'Numerical',
  4629.         X3:out('Numerical')),
  4630.       f(astuple, X3:a:'Integer', X3:b:'Integer', X4:out('Point')),
  4631.       f(canvas,
  4632.         'ZERO':value:'Integer',
  4633.         X4:dimensions:'Point',
  4634.         X5:out('Grid')),
  4635.       f(rbind, shoot, (1, 1):fixed:'Any', X6:out('Callable')),
  4636.       f(compose,
  4637.         X6:outer:'Callable',
  4638.         center:inner:'Callable',
  4639.         X7:out('Callable')),
  4640.       f(fork,
  4641.         recolor:outer:'Callable',
  4642.         color:a:'Callable',
  4643.         X7:b:'Callable',
  4644.         X8:out('Callable')),
  4645.       f(mapply,
  4646.         X8,
  4647.         X1:container:'ContainerContainer',
  4648.         X9:out('FrozenSet')),
  4649.       f(paint, X5:'Grid', X9:obj:'Object', X10:out('Grid')),
  4650.       f(hmirror, X10:'Piece', OUT:out('Piece'))
  4651.     ].
  4652. solve(a68b268e, IN, OUT) :-
  4653.     [ f(tophalf, IN:'Grid', X1:out('Grid')),
  4654.       f(bottomhalf, IN:'Grid', X2:out('Grid')),
  4655.       f(lefthalf, X1:'Grid', X3:out('Grid')),
  4656.       f(righthalf, X1:'Grid', X4:out('Grid')),
  4657.       f(lefthalf, X2:'Grid', X5:out('Grid')),
  4658.       f(righthalf, X2:'Grid', X6:out('Grid')),
  4659.       f(ofcolor, X4:'Grid', 'FOUR':value:'Integer', X7:out('Indices')),
  4660.       f(ofcolor, X3:'Grid', 'SEVEN':value:'Integer', X8:out('Indices')),
  4661.       f(ofcolor, X5:'Grid', 'EIGHT':value:'Integer', X9:out('Indices')),
  4662.       f(fill,
  4663.         X6:'Grid',
  4664.         'EIGHT':value:'Integer',
  4665.         X9:'Patch',
  4666.         X10:out('Grid')),
  4667.       f(fill,
  4668.         X10:'Grid',
  4669.         'FOUR':value:'Integer',
  4670.         X7:'Patch',
  4671.         X11:out('Grid')),
  4672.       f(fill,
  4673.         X11:'Grid',
  4674.         'SEVEN':value:'Integer',
  4675.         X8:'Patch',
  4676.         OUT:out('Grid'))
  4677.     ].
  4678. solve(beb8660c, IN, OUT) :-
  4679.     [ f(shape, IN:'Piece', X1:out('Point')),
  4680.       f(objects,
  4681.         IN:'Grid',
  4682.         univalued=true,
  4683.         diagonal=false,
  4684.         without_bg=true,
  4685.         X2:out('Objects')),
  4686.       f(compose,
  4687.         invert:outer:'Callable',
  4688.         size:inner:'Callable',
  4689.         X3:out('Callable')),
  4690.       f(order,
  4691.         X2:'Container',
  4692.         X3:compfunc:'Callable',
  4693.         X4:out('Tuple')),
  4694.       f(apply, normalize, X4:'Container', X5:out('Container')),
  4695.       f(size, X5:'Container', X6:out('Integer')),
  4696.       f(interval,
  4697.         'ZERO':start:'Integer',
  4698.         X6:stop:'Integer',
  4699.         'ONE':step:'Integer',
  4700.         X7:out('Tuple')),
  4701.       f(apply, toivec, X7:'Container', X8:out('Container')),
  4702.       f(mpapply, shift, X5:a:'Tuple', X8:b:'Tuple', X9:out('Tuple')),
  4703.       f(canvas,
  4704.         'ZERO':value:'Integer',
  4705.         X1:dimensions:'Point',
  4706.         X10:out('Grid')),
  4707.       f(paint, X10:'Grid', X9:obj:'Object', X11:out('Grid')),
  4708.       f(rot180, X11:'Grid', OUT:out('Grid'))
  4709.     ].
  4710. solve('913fb3ed', IN, OUT) :-
  4711.     [ f(lbind, ofcolor, IN:fixed:'Any', X1:out('Callable')),
  4712.       f(lbind, mapply, neighbors:fixed:'Any', X2:out('Callable')),
  4713.       f(chain,
  4714.         X2:h:'Callable',
  4715.         X1:g:'Callable',
  4716.         last:f:'Callable',
  4717.         X3:out('Callable')),
  4718.       f(fork,
  4719.         recolor:outer:'Callable',
  4720.         first:a:'Callable',
  4721.         X3:b:'Callable',
  4722.         X4:out('Callable')),
  4723.       f(astuple, 'SIX':a:'Integer', 'THREE':b:'Integer', X5:out('Point')),
  4724.       f(astuple, 'FOUR':a:'Integer', 'EIGHT':b:'Integer', X6:out('Point')),
  4725.       f(astuple, 'ONE':a:'Integer', 'TWO':b:'Integer', X7:out('Point')),
  4726.       f(initset, X5:value:'Any', X8:out('FrozenSet')),
  4727.       f(insert,
  4728.         X6:value:'Any',
  4729.         X8:container:'FrozenSet',
  4730.         X9:out('FrozenSet')),
  4731.       f(insert,
  4732.         X7:value:'Any',
  4733.         X9:container:'FrozenSet',
  4734.         X10:out('FrozenSet')),
  4735.       f(mapply,
  4736.         X4,
  4737.         X10:container:'ContainerContainer',
  4738.         X11:out('FrozenSet')),
  4739.       f(paint, IN:'Grid', X11:obj:'Object', OUT:out('Grid'))
  4740.     ].
  4741. solve('0962bcdd', IN, OUT) :-
  4742.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  4743.       f(replace,
  4744.         IN:'Grid',
  4745.         'ZERO':replacee:'Integer',
  4746.         X1:replacer:'Integer',
  4747.         X2:out('Grid')),
  4748.       f(leastcolor, X2:'Element', X3:out('Integer')),
  4749.       f(ofcolor, IN:'Grid', X3:value:'Integer', X4:out('Indices')),
  4750.       f(mapply,
  4751.         dneighbors,
  4752.         X4:container:'ContainerContainer',
  4753.         X5:out('FrozenSet')),
  4754.       f(fill,
  4755.         IN:'Grid',
  4756.         X3:value:'Integer',
  4757.         X5:'Patch',
  4758.         X6:out('Grid')),
  4759.       f(objects,
  4760.         X6:'Grid',
  4761.         univalued=false,
  4762.         diagonal=true,
  4763.         without_bg=true,
  4764.         X7:out('Objects')),
  4765.       f(fork,
  4766.         connect:outer:'Callable',
  4767.         ulcorner:a:'Callable',
  4768.         lrcorner:b:'Callable',
  4769.         X8:out('Callable')),
  4770.       f(fork,
  4771.         connect:outer:'Callable',
  4772.         llcorner:a:'Callable',
  4773.         urcorner:b:'Callable',
  4774.         X9:out('Callable')),
  4775.       f(fork,
  4776.         combine:outer:'Callable',
  4777.         X8:a:'Callable',
  4778.         X9:b:'Callable',
  4779.         X10:out('Callable')),
  4780.       f(mapply,
  4781.         X10,
  4782.         X7:container:'ContainerContainer',
  4783.         X11:out('FrozenSet')),
  4784.       f(fill,
  4785.         X6:'Grid',
  4786.         X1:value:'Integer',
  4787.         X11:'Patch',
  4788.         OUT:out('Grid'))
  4789.     ].
  4790. solve('3631a71a', IN, OUT) :-
  4791.     [ f(shape, IN:'Piece', X1:out('Point')),
  4792.       f(replace,
  4793.         IN:'Grid',
  4794.         'NINE':replacee:'Integer',
  4795.         'ZERO':replacer:'Integer',
  4796.         X2:out('Grid')),
  4797.       f(lbind, apply, maximum:fixed:'Any', X3:out('Callable')),
  4798.       f(dmirror, X2:'Piece', X4:out('Piece')),
  4799.       f(papply, pair, X2:a:'Tuple', X4:b:'Tuple', X5:out('Tuple')),
  4800.       f(apply, X3, X5:'Container', X6:out('Container')),
  4801.       f(subtract,
  4802.         X1:a:'Numerical',
  4803.         (2, 2):b:'Numerical',
  4804.         X7:out('Numerical')),
  4805.       f(crop,
  4806.         X6:'Grid',
  4807.         (2, 2):start:'Point',
  4808.         X7:dims:'Point',
  4809.         X8:out('Grid')),
  4810.       f(vmirror, X8:'Piece', X9:out('Piece')),
  4811.       f(objects,
  4812.         X9:'Grid',
  4813.         univalued=true,
  4814.         diagonal=false,
  4815.         without_bg=true,
  4816.         X10:out('Objects')),
  4817.       f(merge,
  4818.         X10:containers:'ContainerContainer',
  4819.         X11:out('Container')),
  4820.       f(shift, X11:'Patch', (2, 2):directions:'Point', X12:out('Patch')),
  4821.       f(paint, X6:'Grid', X12:obj:'Object', OUT:out('Grid'))
  4822.     ].
  4823. solve(5269061, IN, OUT) :-
  4824.     [ f(objects,
  4825.         IN:'Grid',
  4826.         univalued=true,
  4827.         diagonal=true,
  4828.         without_bg=true,
  4829.         X1:out('Objects')),
  4830.       f(neighbors, (0, 0):loc:'Point', X2:out('Indices')),
  4831.       f(mapply,
  4832.         neighbors,
  4833.         X2:container:'ContainerContainer',
  4834.         X3:out('FrozenSet')),
  4835.       f(rbind, multiply, 'THREE':fixed:'Any', X4:out('Callable')),
  4836.       f(apply, X4, X3:'Container', X5:out('Container')),
  4837.       f(merge, X1:containers:'ContainerContainer', X6:out('Container')),
  4838.       f(lbind, shift, X6:fixed:'Any', X7:out('Callable')),
  4839.       f(mapply,
  4840.         X7,
  4841.         X5:container:'ContainerContainer',
  4842.         X8:out('FrozenSet')),
  4843.       f(shift, X8:'Patch', (-1, 1):directions:'Point', X9:out('Patch')),
  4844.       f(shift, X8:'Patch', (1, -1):directions:'Point', X10:out('Patch')),
  4845.       f(paint, IN:'Grid', X8:obj:'Object', X11:out('Grid')),
  4846.       f(paint, X11:'Grid', X9:obj:'Object', X12:out('Grid')),
  4847.       f(paint, X12:'Grid', X10:obj:'Object', OUT:out('Grid'))
  4848.     ].
  4849. solve(95990924, IN, OUT) :-
  4850.     [ f(objects,
  4851.         IN:'Grid',
  4852.         univalued=true,
  4853.         diagonal=false,
  4854.         without_bg=true,
  4855.         X1:out('Objects')),
  4856.       f(apply, ulcorner, X1:'Container', X2:out('Container')),
  4857.       f(apply, urcorner, X1:'Container', X3:out('Container')),
  4858.       f(apply, llcorner, X1:'Container', X4:out('Container')),
  4859.       f(apply, lrcorner, X1:'Container', X5:out('Container')),
  4860.       f(shift, X2:'Patch', (-1, -1):directions:'Point', X6:out('Patch')),
  4861.       f(shift, X3:'Patch', (-1, 1):directions:'Point', X7:out('Patch')),
  4862.       f(shift, X4:'Patch', (1, -1):directions:'Point', X8:out('Patch')),
  4863.       f(shift, X5:'Patch', (1, 1):directions:'Point', X9:out('Patch')),
  4864.       f(fill,
  4865.         IN:'Grid',
  4866.         'ONE':value:'Integer',
  4867.         X6:'Patch',
  4868.         X10:out('Grid')),
  4869.       f(fill,
  4870.         X10:'Grid',
  4871.         'TWO':value:'Integer',
  4872.         X7:'Patch',
  4873.         X11:out('Grid')),
  4874.       f(fill,
  4875.         X11:'Grid',
  4876.         'THREE':value:'Integer',
  4877.         X8:'Patch',
  4878.         X12:out('Grid')),
  4879.       f(fill,
  4880.         X12:'Grid',
  4881.         'FOUR':value:'Integer',
  4882.         X9:'Patch',
  4883.         OUT:out('Grid'))
  4884.     ].
  4885. solve(e509e548, IN, OUT) :-
  4886.     [ f(objects,
  4887.         IN:'Grid',
  4888.         univalued=true,
  4889.         diagonal=false,
  4890.         without_bg=true,
  4891.         X1:out('Objects')),
  4892.       f(rbind, subgrid, IN:fixed:'Any', X2:out('Callable')),
  4893.       f(chain,
  4894.         palette:h:'Callable',
  4895.         trim:g:'Callable',
  4896.         X2:f:'Callable',
  4897.         X3:out('Callable')),
  4898.       f(lbind, contained, 'THREE':fixed:'Any', X4:out('Callable')),
  4899.       f(compose,
  4900.         X4:outer:'Callable',
  4901.         X3:inner:'Callable',
  4902.         X5:out('Callable')),
  4903.       f(fork,
  4904.         add:outer:'Callable',
  4905.         height:a:'Callable',
  4906.         width:b:'Callable',
  4907.         X6:out('Callable')),
  4908.       f(compose,
  4909.         decrement:outer:'Callable',
  4910.         X6:inner:'Callable',
  4911.         X7:out('Callable')),
  4912.       f(fork,
  4913.         equality:outer:'Callable',
  4914.         size:a:'Callable',
  4915.         X7:b:'Callable',
  4916.         X8:out('Callable')),
  4917.       f(mfilter, X1:'Container', X5, X9:out('FrozenSet')),
  4918.       f(mfilter, X1:'Container', X8, X10:out('FrozenSet')),
  4919.       f(replace,
  4920.         IN:'Grid',
  4921.         'THREE':replacee:'Integer',
  4922.         'SIX':replacer:'Integer',
  4923.         X11:out('Grid')),
  4924.       f(fill,
  4925.         X11:'Grid',
  4926.         'TWO':value:'Integer',
  4927.         X9:'Patch',
  4928.         X12:out('Grid')),
  4929.       f(fill,
  4930.         X12:'Grid',
  4931.         'ONE':value:'Integer',
  4932.         X10:'Patch',
  4933.         OUT:out('Grid'))
  4934.     ].
  4935. solve(d43fd935, IN, OUT) :-
  4936.     [ f(objects,
  4937.         IN:'Grid',
  4938.         univalued=true,
  4939.         diagonal=false,
  4940.         without_bg=true,
  4941.         X1:out('Objects')),
  4942.       f(ofcolor, IN:'Grid', 'THREE':value:'Integer', X2:out('Indices')),
  4943.       f(sizefilter, X1:'Container', 'ONE':n:'Integer', X3:out('FrozenSet')),
  4944.       f(rbind, vmatching, X2:fixed:'Any', X4:out('Callable')),
  4945.       f(rbind, hmatching, X2:fixed:'Any', X5:out('Callable')),
  4946.       f(fork,
  4947.         either:outer:'Callable',
  4948.         X4:a:'Callable',
  4949.         X5:b:'Callable',
  4950.         X6:out('Callable')),
  4951.       f(sfilter,
  4952.         X3:'Container',
  4953.         X6:condition:'Callable',
  4954.         X7:out('Container')),
  4955.       f(rbind, gravitate, X2:fixed:'Any', X8:out('Callable')),
  4956.       f(fork,
  4957.         add:outer:'Callable',
  4958.         center:a:'Callable',
  4959.         X8:b:'Callable',
  4960.         X9:out('Callable')),
  4961.       f(fork,
  4962.         connect:outer:'Callable',
  4963.         center:a:'Callable',
  4964.         X9:b:'Callable',
  4965.         X10:out('Callable')),
  4966.       f(fork,
  4967.         recolor:outer:'Callable',
  4968.         color:a:'Callable',
  4969.         X10:b:'Callable',
  4970.         X11:out('Callable')),
  4971.       f(mapply,
  4972.         X11,
  4973.         X7:container:'ContainerContainer',
  4974.         X12:out('FrozenSet')),
  4975.       f(paint, IN:'Grid', X12:obj:'Object', OUT:out('Grid'))
  4976.     ].
  4977. solve(db3e9e38, IN, OUT) :-
  4978.     [ f(ofcolor, IN:'Grid', 'SEVEN':value:'Integer', X1:out('Indices')),
  4979.       f(lrcorner, X1:'Patch', X2:out('Point')),
  4980.       f(shoot,
  4981.         X2:start:'Point',
  4982.         (-1, 1):direction:'Point',
  4983.         X3:out('Indices')),
  4984.       f(shoot,
  4985.         X2:start:'Point',
  4986.         (-1, -1):direction:'Point',
  4987.         X4:out('Indices')),
  4988.       f(combine,
  4989.         X3:a:'Container',
  4990.         X4:b:'Container',
  4991.         X5:out('Container')),
  4992.       f(rbind, shoot, (-1, 0):fixed:'Any', X6:out('Callable')),
  4993.       f(mapply,
  4994.         X6,
  4995.         X5:container:'ContainerContainer',
  4996.         X7:out('FrozenSet')),
  4997.       f(last, X2:'Container', X8:out('Any')),
  4998.       f(rbind, subtract, X8:fixed:'Any', X9:out('Callable')),
  4999.       f(chain,
  5000.         even:h:'Callable',
  5001.         X9:g:'Callable',
  5002.         last:f:'Callable',
  5003.         X10:out('Callable')),
  5004.       f(fill,
  5005.         IN:'Grid',
  5006.         'EIGHT':value:'Integer',
  5007.         X7:'Patch',
  5008.         X11:out('Grid')),
  5009.       f(sfilter,
  5010.         X7:'Container',
  5011.         X10:condition:'Callable',
  5012.         X12:out('Container')),
  5013.       f(fill,
  5014.         X11:'Grid',
  5015.         'SEVEN':value:'Integer',
  5016.         X12:'Patch',
  5017.         OUT:out('Grid'))
  5018.     ].
  5019. solve(e73095fd, IN, OUT) :-
  5020.     [ f(objects,
  5021.         IN:'Grid',
  5022.         univalued=true,
  5023.         diagonal=false,
  5024.         without_bg=false,
  5025.         X1:out('Objects')),
  5026.       f(colorfilter,
  5027.         X1:objs:'Objects',
  5028.         'ZERO':value:'Integer',
  5029.         X2:out('Objects')),
  5030.       f(fork,
  5031.         equality:outer:'Callable',
  5032.         toindices:a:'Callable',
  5033.         backdrop:b:'Callable',
  5034.         X3:out('Callable')),
  5035.       f(sfilter,
  5036.         X2:'Container',
  5037.         X3:condition:'Callable',
  5038.         X4:out('Container')),
  5039.       f(lbind, mapply, dneighbors:fixed:'Any', X5:out('Callable')),
  5040.       f(chain,
  5041.         X5:h:'Callable',
  5042.         corners:g:'Callable',
  5043.         outbox:f:'Callable',
  5044.         X6:out('Callable')),
  5045.       f(fork,
  5046.         difference:outer:'Callable',
  5047.         X6:a:'Callable',
  5048.         outbox:b:'Callable',
  5049.         X7:out('Callable')),
  5050.       f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X8:out('Indices')),
  5051.       f(rbind, intersection, X8:fixed:'Any', X9:out('Callable')),
  5052.       f(matcher, size, 'ZERO':target:'Any', X10:out('Callable')),
  5053.       f(chain,
  5054.         X10:h:'Callable',
  5055.         X9:g:'Callable',
  5056.         X7:f:'Callable',
  5057.         X11:out('Callable')),
  5058.       f(mfilter, X4:'Container', X11, X12:out('FrozenSet')),
  5059.       f(fill,
  5060.         IN:'Grid',
  5061.         'FOUR':value:'Integer',
  5062.         X12:'Patch',
  5063.         OUT:out('Grid'))
  5064.     ].
  5065. solve('1bfc4729', IN, OUT) :-
  5066.     [ f(asindices, IN:'Grid', X1:out('Indices')),
  5067.       f(tophalf, IN:'Grid', X2:out('Grid')),
  5068.       f(bottomhalf, IN:'Grid', X3:out('Grid')),
  5069.       f(leastcolor, X2:'Element', X4:out('Integer')),
  5070.       f(leastcolor, X3:'Element', X5:out('Integer')),
  5071.       f(ofcolor, X2:'Grid', X4:value:'Integer', X6:out('Indices')),
  5072.       f(first, X6:'Container', X7:out('Any')),
  5073.       f(hfrontier, X7:location:'Point', X8:out('Indices')),
  5074.       f(box, X1:'Patch', X9:out('Indices')),
  5075.       f(combine,
  5076.         X8:a:'Container',
  5077.         X9:b:'Container',
  5078.         X10:out('Container')),
  5079.       f(fill,
  5080.         X2:'Grid',
  5081.         X4:value:'Integer',
  5082.         X10:'Patch',
  5083.         X11:out('Grid')),
  5084.       f(hmirror, X11:'Piece', X12:out('Piece')),
  5085.       f(replace,
  5086.         X12:'Grid',
  5087.         X4:replacee:'Integer',
  5088.         X5:replacer:'Integer',
  5089.         X13:out('Grid')),
  5090.       f(vconcat, X11:a:'Grid', X13:b:'Grid', OUT:out('Grid'))
  5091.     ].
  5092. solve('93b581b8', IN, OUT) :-
  5093.     [ f(objects,
  5094.         IN:'Grid',
  5095.         univalued=false,
  5096.         diagonal=false,
  5097.         without_bg=true,
  5098.         X1:out('Objects')),
  5099.       f(first, X1:'Container', X2:out('Any')),
  5100.       f(dmirror, X2:'Piece', X3:out('Piece')),
  5101.       f(cmirror, X3:'Piece', X4:out('Piece')),
  5102.       f(upscale, X4:'Element', 'THREE':factor:'Integer', X5:out('Element')),
  5103.       f(astuple, 'NEG_TWO':a:'Integer', 'NEG_TWO':b:'Integer', X6:out('Point')),
  5104.       f(shift, X5:'Patch', X6:directions:'Point', X7:out('Patch')),
  5105.       f(underpaint, IN:'Grid', X7:obj:'Object', X8:out('Grid')),
  5106.       f(toindices, X2:'Patch', X9:out('Indices')),
  5107.       f(mapply,
  5108.         vfrontier,
  5109.         X9:container:'ContainerContainer',
  5110.         X10:out('FrozenSet')),
  5111.       f(mapply,
  5112.         hfrontier,
  5113.         X9:container:'ContainerContainer',
  5114.         X11:out('FrozenSet')),
  5115.       f(combine,
  5116.         X10:a:'Container',
  5117.         X11:b:'Container',
  5118.         X12:out('Container')),
  5119.       f(fill,
  5120.         X8:'Grid',
  5121.         'ZERO':value:'Integer',
  5122.         X12:'Patch',
  5123.         X13:out('Grid')),
  5124.       f(paint, X13:'Grid', X2:obj:'Object', OUT:out('Grid'))
  5125.     ].
  5126. solve('9edfc990', IN, OUT) :-
  5127.     [ f(objects,
  5128.         IN:'Grid',
  5129.         univalued=true,
  5130.         diagonal=false,
  5131.         without_bg=false,
  5132.         X1:out('Objects')),
  5133.       f(colorfilter,
  5134.         X1:objs:'Objects',
  5135.         'ZERO':value:'Integer',
  5136.         X2:out('Objects')),
  5137.       f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X3:out('Indices')),
  5138.       f(rbind, adjacent, X3:fixed:'Any', X4:out('Callable')),
  5139.       f(mfilter, X2:'Container', X4, X5:out('FrozenSet')),
  5140.       f(recolor, 'ONE':value:'Integer', X5:'Patch', X6:out('Object')),
  5141.       f(paint, IN:'Grid', X6:obj:'Object', X7:out('Grid')),
  5142.       f(add, 'NINE':a:'Numerical', 'FOUR':b:'Numerical', X8:out('Numerical')),
  5143.       f(astuple, 'SIX':a:'Integer', X8:b:'Integer', X9:out('Point')),
  5144.       f(initset, X9:value:'Any', X10:out('FrozenSet')),
  5145.       f(fill,
  5146.         X7:'Grid',
  5147.         'ZERO':value:'Integer',
  5148.         X10:'Patch',
  5149.         X11:out('Grid')),
  5150.       f(index, X7:'Grid', X9:loc:'Point', X12:out('Integer')),
  5151.       f(equality, X12:a:'Any', 'ONE':b:'Any', returns=X13),
  5152.       f(branch,
  5153.         condition=X13,
  5154.         X11:a:'Any',
  5155.         X7:b:'Any',
  5156.         OUT:out('Any'))
  5157.     ].
  5158. solve(a65b410d, IN, OUT) :-
  5159.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  5160.       f(urcorner, X1:'Patch', X2:out('Point')),
  5161.       f(add, X2:a:'Numerical', (-1, 1):b:'Numerical', X3:out('Numerical')),
  5162.       f(add, X2:a:'Numerical', (1, -1):b:'Numerical', X4:out('Numerical')),
  5163.       f(shoot,
  5164.         X3:start:'Point',
  5165.         (-1, 1):direction:'Point',
  5166.         X5:out('Indices')),
  5167.       f(shoot,
  5168.         X4:start:'Point',
  5169.         (1, -1):direction:'Point',
  5170.         X6:out('Indices')),
  5171.       f(fill,
  5172.         IN:'Grid',
  5173.         'THREE':value:'Integer',
  5174.         X5:'Patch',
  5175.         X7:out('Grid')),
  5176.       f(fill,
  5177.         X7:'Grid',
  5178.         'ONE':value:'Integer',
  5179.         X6:'Patch',
  5180.         X8:out('Grid')),
  5181.       f(objects,
  5182.         X8:'Grid',
  5183.         univalued=true,
  5184.         diagonal=false,
  5185.         without_bg=true,
  5186.         X9:out('Objects')),
  5187.       f(rbind, shoot, (0, -1):fixed:'Any', X10:out('Callable')),
  5188.       f(compose,
  5189.         X10:outer:'Callable',
  5190.         urcorner:inner:'Callable',
  5191.         X11:out('Callable')),
  5192.       f(fork,
  5193.         recolor:outer:'Callable',
  5194.         color:a:'Callable',
  5195.         X11:b:'Callable',
  5196.         X12:out('Callable')),
  5197.       f(mapply,
  5198.         X12,
  5199.         X9:container:'ContainerContainer',
  5200.         X13:out('FrozenSet')),
  5201.       f(paint, X8:'Grid', X13:obj:'Object', OUT:out('Grid'))
  5202.     ].
  5203. solve('7447852a', IN, OUT) :-
  5204.     [ f(objects,
  5205.         IN:'Grid',
  5206.         univalued=true,
  5207.         diagonal=false,
  5208.         without_bg=false,
  5209.         X1:out('Objects')),
  5210.       f(colorfilter,
  5211.         X1:objs:'Objects',
  5212.         'ZERO':value:'Integer',
  5213.         X2:out('Objects')),
  5214.       f(compose,
  5215.         last:outer:'Callable',
  5216.         center:inner:'Callable',
  5217.         X3:out('Callable')),
  5218.       f(order,
  5219.         X2:'Container',
  5220.         X3:compfunc:'Callable',
  5221.         X4:out('Tuple')),
  5222.       f(size, X4:'Container', X5:out('Integer')),
  5223.       f(interval,
  5224.         'ZERO':start:'Integer',
  5225.         X5:stop:'Integer',
  5226.         'THREE':step:'Integer',
  5227.         X6:out('Tuple')),
  5228.       f(rbind, contained, X6:fixed:'Any', X7:out('Callable')),
  5229.       f(compose,
  5230.         X7:outer:'Callable',
  5231.         last:inner:'Callable',
  5232.         X8:out('Callable')),
  5233.       f(interval,
  5234.         'ZERO':start:'Integer',
  5235.         X5:stop:'Integer',
  5236.         'ONE':step:'Integer',
  5237.         X9:out('Tuple')),
  5238.       f(pair, X4:a:'Tuple', X9:b:'Tuple', X10:out('TupleTuple')),
  5239.       f(sfilter,
  5240.         X10:'Container',
  5241.         X8:condition:'Callable',
  5242.         X11:out('Container')),
  5243.       f(mapply,
  5244.         first,
  5245.         X11:container:'ContainerContainer',
  5246.         X12:out('FrozenSet')),
  5247.       f(recolor, 'FOUR':value:'Integer', X12:'Patch', X13:out('Object')),
  5248.       f(paint, IN:'Grid', X13:obj:'Object', OUT:out('Grid'))
  5249.     ].
  5250. solve(97999447, IN, OUT) :-
  5251.     [ f(objects,
  5252.         IN:'Grid',
  5253.         univalued=true,
  5254.         diagonal=false,
  5255.         without_bg=true,
  5256.         X1:out('Objects')),
  5257.       f(apply, toindices, X1:'Container', X2:out('Container')),
  5258.       f(rbind, shoot, (0, 1):fixed:'Any', X3:out('Callable')),
  5259.       f(compose,
  5260.         X3:outer:'Callable',
  5261.         center:inner:'Callable',
  5262.         X4:out('Callable')),
  5263.       f(fork,
  5264.         recolor:outer:'Callable',
  5265.         color:a:'Callable',
  5266.         X4:b:'Callable',
  5267.         X5:out('Callable')),
  5268.       f(mapply,
  5269.         X5,
  5270.         X1:container:'ContainerContainer',
  5271.         X6:out('FrozenSet')),
  5272.       f(paint, IN:'Grid', X6:obj:'Object', X7:out('Grid')),
  5273.       f(interval,
  5274.         'ZERO':start:'Integer',
  5275.         'FIVE':stop:'Integer',
  5276.         'ONE':step:'Integer',
  5277.         X8:out('Tuple')),
  5278.       f(apply, double, X8:'Container', X9:out('Container')),
  5279.       f(apply, increment, X9:'Container', X10:out('Container')),
  5280.       f(apply, tojvec, X10:'Container', X11:out('Container')),
  5281.       f(prapply, shift, X2, X11, X12),
  5282.       f(merge,
  5283.         X12:containers:'ContainerContainer',
  5284.         X13:out('Container')),
  5285.       f(fill,
  5286.         X7:'Grid',
  5287.         'FIVE':value:'Integer',
  5288.         X13:'Patch',
  5289.         OUT:out('Grid'))
  5290.     ].
  5291. solve('91714a58', IN, OUT) :-
  5292.     [ f(shape, IN:'Piece', X1:out('Point')),
  5293.       f(asindices, IN:'Grid', X2:out('Indices')),
  5294.       f(objects,
  5295.         IN:'Grid',
  5296.         univalued=true,
  5297.         diagonal=false,
  5298.         without_bg=true,
  5299.         X3:out('Objects')),
  5300.       f(argmax, X3:'Container', size:compfunc:'Callable', X4:out('Any')),
  5301.       f(mostcolor, X4:'Element', X5:out('Integer')),
  5302.       f(canvas,
  5303.         'ZERO':value:'Integer',
  5304.         X1:dimensions:'Point',
  5305.         X6:out('Grid')),
  5306.       f(paint, X6:'Grid', X4:obj:'Object', X7:out('Grid')),
  5307.       f(rbind, toobject, X7:fixed:'Any', X8:out('Callable')),
  5308.       f(rbind, colorcount, X5:fixed:'Any', X9:out('Callable')),
  5309.       f(chain,
  5310.         X9:h:'Callable',
  5311.         X8:g:'Callable',
  5312.         neighbors:f:'Callable',
  5313.         X10:out('Callable')),
  5314.       f(lbind, greater, 'THREE':fixed:'Any', X11:out('Callable')),
  5315.       f(compose,
  5316.         X11:outer:'Callable',
  5317.         X10:inner:'Callable',
  5318.         X12:out('Callable')),
  5319.       f(sfilter,
  5320.         X2:'Container',
  5321.         X12:condition:'Callable',
  5322.         X13:out('Container')),
  5323.       f(fill,
  5324.         X7:'Grid',
  5325.         'ZERO':value:'Integer',
  5326.         X13:'Patch',
  5327.         OUT:out('Grid'))
  5328.     ].
  5329. solve(a61ba2ce, IN, OUT) :-
  5330.     [ f(objects,
  5331.         IN:'Grid',
  5332.         univalued=true,
  5333.         diagonal=false,
  5334.         without_bg=true,
  5335.         X1:out('Objects')),
  5336.       f(lbind, index, IN:fixed:'Any', X2:out('Callable')),
  5337.       f(matcher, X2, 'ZERO':target:'Any', X3:out('Callable')),
  5338.       f(lbind, extract, X1:fixed:'Any', X4:out('Callable')),
  5339.       f(rbind, subgrid, IN:fixed:'Any', X5:out('Callable')),
  5340.       f(lbind, compose, X3:fixed:'Any', X6:out('Callable')),
  5341.       f(chain,
  5342.         X5:h:'Callable',
  5343.         X4:g:'Callable',
  5344.         X6:f:'Callable',
  5345.         X7:out('Callable')),
  5346.       f(X7, ulcorner, X8),
  5347.       f(X7, urcorner, X9),
  5348.       f(X7, llcorner, X10),
  5349.       f(X7, lrcorner, X11),
  5350.       f(hconcat, X11:a:'Grid', X10:b:'Grid', X12:out('Grid')),
  5351.       f(hconcat, X9:a:'Grid', X8:b:'Grid', X13:out('Grid')),
  5352.       f(vconcat, X12:a:'Grid', X13:b:'Grid', OUT:out('Grid'))
  5353.     ].
  5354. solve('8e1813be', IN, OUT) :-
  5355.     [ f(replace,
  5356.         IN:'Grid',
  5357.         'FIVE':replacee:'Integer',
  5358.         'ZERO':replacer:'Integer',
  5359.         X1:out('Grid')),
  5360.       f(objects,
  5361.         X1:'Grid',
  5362.         univalued=true,
  5363.         diagonal=true,
  5364.         without_bg=true,
  5365.         X2:out('Objects')),
  5366.       f(first, X2:'Container', X3:out('Any')),
  5367.       f(vline, X3:'Patch', returns=X4),
  5368.       f(branch,
  5369.         condition=X4,
  5370.         dmirror:a:'Any',
  5371.         identity:b:'Any',
  5372.         X5:out('Any')),
  5373.       f(X5, X1, X6),
  5374.       f(objects,
  5375.         X6:'Grid',
  5376.         univalued=true,
  5377.         diagonal=true,
  5378.         without_bg=true,
  5379.         X7:out('Objects')),
  5380.       f(order,
  5381.         X7:'Container',
  5382.         uppermost:compfunc:'Callable',
  5383.         X8:out('Tuple')),
  5384.       f(apply, color, X8:'Container', X9:out('Container')),
  5385.       f(dedupe, X9:tup:'Tuple', X10:out('Tuple')),
  5386.       f(size, X10:'Container', X11:out('Integer')),
  5387.       f(rbind, repeat, X11:fixed:'Any', X12:out('Callable')),
  5388.       f(apply, X12, X10:'Container', X13:out('Container')),
  5389.       f(X5, X13, OUT)
  5390.     ].
  5391. solve(bc1d5164, IN, OUT) :-
  5392.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  5393.       f(crop,
  5394.         IN:'Grid',
  5395.         (0, 0):start:'Point',
  5396.         (3, 3):dims:'Point',
  5397.         X2:out('Grid')),
  5398.       f(crop,
  5399.         IN:'Grid',
  5400.         (2, 0):start:'Point',
  5401.         (3, 3):dims:'Point',
  5402.         X3:out('Grid')),
  5403.       f(tojvec, 'FOUR':j:'Integer', X4:out('Point')),
  5404.       f(crop,
  5405.         IN:'Grid',
  5406.         X4:start:'Point',
  5407.         (3, 3):dims:'Point',
  5408.         X5:out('Grid')),
  5409.       f(astuple, 'TWO':a:'Integer', 'FOUR':b:'Integer', X6:out('Point')),
  5410.       f(crop,
  5411.         IN:'Grid',
  5412.         X6:start:'Point',
  5413.         (3, 3):dims:'Point',
  5414.         X7:out('Grid')),
  5415.       f(canvas, 'ZERO':value:'Integer', (3, 3):dimensions:'Point', X8:out('Grid')),
  5416.       f(rbind, ofcolor, X1:fixed:'Any', X9:out('Callable')),
  5417.       f(astuple, X2:a:'Integer', X3:b:'Integer', X10:out('Point')),
  5418.       f(astuple, X5:a:'Integer', X7:b:'Integer', X11:out('Point')),
  5419.       f(combine,
  5420.         X10:a:'Container',
  5421.         X11:b:'Container',
  5422.         X12:out('Container')),
  5423.       f(mapply,
  5424.         X9,
  5425.         X12:container:'ContainerContainer',
  5426.         X13:out('FrozenSet')),
  5427.       f(fill,
  5428.         X8:'Grid',
  5429.         X1:value:'Integer',
  5430.         X13:'Patch',
  5431.         OUT:out('Grid'))
  5432.     ].
  5433. solve(ce602527, IN, OUT) :-
  5434.     [ f(vmirror, IN:'Piece', X1:out('Piece')),
  5435.       f(fgpartition, X1:'Grid', X2:out('Objects')),
  5436.       f(order, X2:'Container', size:compfunc:'Callable', X3:out('Tuple')),
  5437.       f(last, X3:'Container', X4:out('Any')),
  5438.       f(remove, X4:value:'Any', X3:'Container', X5:out('Container')),
  5439.       f(compose,
  5440.         toindices:outer:'Callable',
  5441.         normalize:inner:'Callable',
  5442.         X6:out('Callable')),
  5443.       f(rbind, upscale, 'TWO':fixed:'Any', X7:out('Callable')),
  5444.       f(chain,
  5445.         toindices:h:'Callable',
  5446.         X7:g:'Callable',
  5447.         normalize:f:'Callable',
  5448.         X8:out('Callable')),
  5449.       f(X6, X4, X9),
  5450.       f(rbind, intersection, X9:fixed:'Any', X10:out('Callable')),
  5451.       f(chain,
  5452.         size:h:'Callable',
  5453.         X10:g:'Callable',
  5454.         X8:f:'Callable',
  5455.         X11:out('Callable')),
  5456.       f(argmax,
  5457.         X5:'Container',
  5458.         X11:compfunc:'Callable',
  5459.         X12:out('Any')),
  5460.       f(subgrid, X12:'Patch', X1:'Grid', X13:out('Grid')),
  5461.       f(vmirror, X13:'Piece', OUT:out('Piece'))
  5462.     ].
  5463. solve('5c2c9af4', IN, OUT) :-
  5464.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  5465.       f(ofcolor, IN:'Grid', X1:value:'Integer', X2:out('Indices')),
  5466.       f(center, X2:'Patch', X3:out('Point')),
  5467.       f(ulcorner, X2:'Patch', X4:out('Point')),
  5468.       f(subtract,
  5469.         X3:a:'Numerical',
  5470.         X4:b:'Numerical',
  5471.         X5:out('Numerical')),
  5472.       f(multiply, 'NEG_ONE':a:'Numerical', 'NINE':b:'Numerical', X6:out('Numerical')),
  5473.       f(interval,
  5474.         'ZERO':start:'Integer',
  5475.         'NINE':stop:'Integer',
  5476.         'ONE':step:'Integer',
  5477.         X7:out('Tuple')),
  5478.       f(interval,
  5479.         'ZERO':start:'Integer',
  5480.         X6:stop:'Integer',
  5481.         'NEG_ONE':step:'Integer',
  5482.         X8:out('Tuple')),
  5483.       f(lbind, multiply, X5:fixed:'Any', X9:out('Callable')),
  5484.       f(apply, X9, X7:'Container', X10:out('Container')),
  5485.       f(apply, X9, X8:'Container', X11:out('Container')),
  5486.       f(pair, X10:a:'Tuple', X11:b:'Tuple', X12:out('TupleTuple')),
  5487.       f(mapply,
  5488.         box,
  5489.         X12:container:'ContainerContainer',
  5490.         X13:out('FrozenSet')),
  5491.       f(shift, X13:'Patch', X3:directions:'Point', X14:out('Patch')),
  5492.       f(fill,
  5493.         IN:'Grid',
  5494.         X1:value:'Integer',
  5495.         X14:'Patch',
  5496.         OUT:out('Grid'))
  5497.     ].
  5498. solve('75b8110e', IN, OUT) :-
  5499.     [ f(lefthalf, IN:'Grid', X1:out('Grid')),
  5500.       f(righthalf, IN:'Grid', X2:out('Grid')),
  5501.       f(tophalf, X1:'Grid', X3:out('Grid')),
  5502.       f(bottomhalf, X1:'Grid', X4:out('Grid')),
  5503.       f(tophalf, X2:'Grid', X5:out('Grid')),
  5504.       f(bottomhalf, X2:'Grid', X6:out('Grid')),
  5505.       f(rbind, ofcolor, 'ZERO':fixed:'Any', X7:out('Callable')),
  5506.       f(fork,
  5507.         difference:outer:'Callable',
  5508.         asindices:a:'Callable',
  5509.         X7:b:'Callable',
  5510.         X8:out('Callable')),
  5511.       f(fork,
  5512.         toobject:outer:'Callable',
  5513.         X8:a:'Callable',
  5514.         identity:b:'Callable',
  5515.         X9:out('Callable')),
  5516.       f(X9, X5, X10),
  5517.       f(X9, X4, X11),
  5518.       f(X9, X6, X12),
  5519.       f(paint, X3:'Grid', X12:obj:'Object', X13:out('Grid')),
  5520.       f(paint, X13:'Grid', X11:obj:'Object', X14:out('Grid')),
  5521.       f(paint, X14:'Grid', X10:obj:'Object', OUT:out('Grid'))
  5522.     ].
  5523. solve('941d9a10', IN, OUT) :-
  5524.     [ f(shape, IN:'Piece', X1:out('Point')),
  5525.       f(objects,
  5526.         IN:'Grid',
  5527.         univalued=true,
  5528.         diagonal=false,
  5529.         without_bg=false,
  5530.         X2:out('Objects')),
  5531.       f(colorfilter,
  5532.         X2:objs:'Objects',
  5533.         'ZERO':value:'Integer',
  5534.         X3:out('Objects')),
  5535.       f(apply, toindices, X3:'Container', X4:out('Container')),
  5536.       f(lbind, lbind, contained:fixed:'Any', X5:out('Callable')),
  5537.       f(lbind, extract, X4:fixed:'Any', X6:out('Callable')),
  5538.       f(compose,
  5539.         X6:outer:'Callable',
  5540.         X5:inner:'Callable',
  5541.         X7:out('Callable')),
  5542.       f(decrement, X1:x:'Numerical', X8:out('Numerical')),
  5543.       f(astuple, 'FIVE':a:'Integer', 'FIVE':b:'Integer', X9:out('Point')),
  5544.       f(X7, (0, 0), X10),
  5545.       f(X7, X8, X11),
  5546.       f(X7, X9, X12),
  5547.       f(fill,
  5548.         IN:'Grid',
  5549.         'ONE':value:'Integer',
  5550.         X10:'Patch',
  5551.         X13:out('Grid')),
  5552.       f(fill,
  5553.         X13:'Grid',
  5554.         'THREE':value:'Integer',
  5555.         X11:'Patch',
  5556.         X14:out('Grid')),
  5557.       f(fill,
  5558.         X14:'Grid',
  5559.         'TWO':value:'Integer',
  5560.         X12:'Patch',
  5561.         OUT:out('Grid'))
  5562.     ].
  5563. solve(c3f564a4, IN, OUT) :-
  5564.     [ f(asindices, IN:'Grid', X1:out('Indices')),
  5565.       f(dmirror, IN:'Piece', X2:out('Piece')),
  5566.       f(invert, 'NINE':n:'Numerical', X3:out('Numerical')),
  5567.       f(papply, pair, IN:a:'Tuple', X2:b:'Tuple', X4:out('Tuple')),
  5568.       f(lbind, apply, maximum:fixed:'Any', X5:out('Callable')),
  5569.       f(apply, X5, X4:'Container', X6:out('Container')),
  5570.       f(ofcolor, X6:'Grid', 'ZERO':value:'Integer', X7:out('Indices')),
  5571.       f(difference,
  5572.         X1:a:'FrozenSet',
  5573.         X7:b:'FrozenSet',
  5574.         X8:out('FrozenSet')),
  5575.       f(toobject, X8:'Patch', X6:'Grid', X9:out('Object')),
  5576.       f(interval,
  5577.         X3:start:'Integer',
  5578.         'NINE':stop:'Integer',
  5579.         'ONE':step:'Integer',
  5580.         X10:out('Tuple')),
  5581.       f(interval,
  5582.         'NINE':start:'Integer',
  5583.         X3:stop:'Integer',
  5584.         'NEG_ONE':step:'Integer',
  5585.         X11:out('Tuple')),
  5586.       f(pair, X10:a:'Tuple', X11:b:'Tuple', X12:out('TupleTuple')),
  5587.       f(lbind, shift, X9:fixed:'Any', X13:out('Callable')),
  5588.       f(mapply,
  5589.         X13,
  5590.         X12:container:'ContainerContainer',
  5591.         X14:out('FrozenSet')),
  5592.       f(paint, X6:'Grid', X14:obj:'Object', OUT:out('Grid'))
  5593.     ].
  5594. solve('1a07d186', IN, OUT) :-
  5595.     [ f(objects,
  5596.         IN:'Grid',
  5597.         univalued=true,
  5598.         diagonal=false,
  5599.         without_bg=true,
  5600.         X1:out('Objects')),
  5601.       f(sizefilter, X1:'Container', 'ONE':n:'Integer', X2:out('FrozenSet')),
  5602.       f(difference,
  5603.         X1:a:'FrozenSet',
  5604.         X2:b:'FrozenSet',
  5605.         X3:out('FrozenSet')),
  5606.       f(apply, color, X3:'Container', X4:out('Container')),
  5607.       f(rbind, contained, X4:fixed:'Any', X5:out('Callable')),
  5608.       f(compose,
  5609.         X5:outer:'Callable',
  5610.         color:inner:'Callable',
  5611.         X6:out('Callable')),
  5612.       f(sfilter,
  5613.         X2:'Container',
  5614.         X6:condition:'Callable',
  5615.         X7:out('Container')),
  5616.       f(lbind, colorfilter, X3:fixed:'Any', X8:out('Callable')),
  5617.       f(chain,
  5618.         first:h:'Callable',
  5619.         X8:g:'Callable',
  5620.         color:f:'Callable',
  5621.         X9:out('Callable')),
  5622.       f(fork,
  5623.         gravitate:outer:'Callable',
  5624.         identity:a:'Callable',
  5625.         X9:b:'Callable',
  5626.         X10:out('Callable')),
  5627.       f(fork,
  5628.         shift:outer:'Callable',
  5629.         identity:a:'Callable',
  5630.         X10:b:'Callable',
  5631.         X11:out('Callable')),
  5632.       f(mapply,
  5633.         X11,
  5634.         X7:container:'ContainerContainer',
  5635.         X12:out('FrozenSet')),
  5636.       f(merge, X2:containers:'ContainerContainer', X13:out('Container')),
  5637.       f(cover, IN:'Grid', X13:'Patch', X14:out('Grid')),
  5638.       f(paint, X14:'Grid', X12:obj:'Object', OUT:out('Grid'))
  5639.     ].
  5640. solve(d687bc17, IN, OUT) :-
  5641.     [ f(objects,
  5642.         IN:'Grid',
  5643.         univalued=true,
  5644.         diagonal=false,
  5645.         without_bg=true,
  5646.         X1:out('Objects')),
  5647.       f(sizefilter, X1:'Container', 'ONE':n:'Integer', X2:out('FrozenSet')),
  5648.       f(difference,
  5649.         X1:a:'FrozenSet',
  5650.         X2:b:'FrozenSet',
  5651.         X3:out('FrozenSet')),
  5652.       f(apply, color, X3:'Container', X4:out('Container')),
  5653.       f(rbind, contained, X4:fixed:'Any', X5:out('Callable')),
  5654.       f(compose,
  5655.         X5:outer:'Callable',
  5656.         color:inner:'Callable',
  5657.         X6:out('Callable')),
  5658.       f(sfilter,
  5659.         X2:'Container',
  5660.         X6:condition:'Callable',
  5661.         X7:out('Container')),
  5662.       f(lbind, colorfilter, X3:fixed:'Any', X8:out('Callable')),
  5663.       f(chain,
  5664.         first:h:'Callable',
  5665.         X8:g:'Callable',
  5666.         color:f:'Callable',
  5667.         X9:out('Callable')),
  5668.       f(fork,
  5669.         gravitate:outer:'Callable',
  5670.         identity:a:'Callable',
  5671.         X9:b:'Callable',
  5672.         X10:out('Callable')),
  5673.       f(fork,
  5674.         shift:outer:'Callable',
  5675.         identity:a:'Callable',
  5676.         X10:b:'Callable',
  5677.         X11:out('Callable')),
  5678.       f(merge, X2:containers:'ContainerContainer', X12:out('Container')),
  5679.       f(mapply,
  5680.         X11,
  5681.         X7:container:'ContainerContainer',
  5682.         X13:out('FrozenSet')),
  5683.       f(cover, IN:'Grid', X12:'Patch', X14:out('Grid')),
  5684.       f(paint, X14:'Grid', X13:obj:'Object', OUT:out('Grid'))
  5685.     ].
  5686. solve('9af7a82c', IN, OUT) :-
  5687.     [ f(objects,
  5688.         IN:'Grid',
  5689.         univalued=true,
  5690.         diagonal=false,
  5691.         without_bg=false,
  5692.         X1:out('Objects')),
  5693.       f(order, X1:'Container', size:compfunc:'Callable', X2:out('Tuple')),
  5694.       f(valmax,
  5695.         X1:'Container',
  5696.         size:compfunc:'Callable',
  5697.         X3:out('Integer')),
  5698.       f(rbind, astuple, 'ONE':fixed:'Any', X4:out('Callable')),
  5699.       f(lbind, subtract, X3:fixed:'Any', X5:out('Callable')),
  5700.       f(compose,
  5701.         X4:outer:'Callable',
  5702.         size:inner:'Callable',
  5703.         X6:out('Callable')),
  5704.       f(chain,
  5705.         X4:h:'Callable',
  5706.         X5:g:'Callable',
  5707.         size:f:'Callable',
  5708.         X7:out('Callable')),
  5709.       f(fork,
  5710.         canvas:outer:'Callable',
  5711.         color:a:'Callable',
  5712.         X6:b:'Callable',
  5713.         X8:out('Callable')),
  5714.       f(lbind, canvas, 'ZERO':fixed:'Any', X9:out('Callable')),
  5715.       f(compose,
  5716.         X9:outer:'Callable',
  5717.         X7:inner:'Callable',
  5718.         X10:out('Callable')),
  5719.       f(fork,
  5720.         vconcat:outer:'Callable',
  5721.         X8:a:'Callable',
  5722.         X10:b:'Callable',
  5723.         X11:out('Callable')),
  5724.       f(compose,
  5725.         cmirror:outer:'Callable',
  5726.         X11:inner:'Callable',
  5727.         X12:out('Callable')),
  5728.       f(apply, X12, X2:'Container', X13:out('Container')),
  5729.       f(merge,
  5730.         X13:containers:'ContainerContainer',
  5731.         X14:out('Container')),
  5732.       f(cmirror, X14:'Piece', OUT:out('Piece'))
  5733.     ].
  5734. solve('6e19193c', IN, OUT) :-
  5735.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  5736.       f(objects,
  5737.         IN:'Grid',
  5738.         univalued=true,
  5739.         diagonal=false,
  5740.         without_bg=true,
  5741.         X2:out('Objects')),
  5742.       f(rbind, toobject, IN:fixed:'Any', X3:out('Callable')),
  5743.       f(compose,
  5744.         first:outer:'Callable',
  5745.         delta:inner:'Callable',
  5746.         X4:out('Callable')),
  5747.       f(rbind, colorcount, X1:fixed:'Any', X5:out('Callable')),
  5748.       f(matcher, X5, 'TWO':target:'Any', X6:out('Callable')),
  5749.       f(chain,
  5750.         X6:h:'Callable',
  5751.         X3:g:'Callable',
  5752.         dneighbors:f:'Callable',
  5753.         X7:out('Callable')),
  5754.       f(rbind, sfilter, X7:fixed:'Any', X8:out('Callable')),
  5755.       f(chain,
  5756.         first:h:'Callable',
  5757.         X8:g:'Callable',
  5758.         toindices:f:'Callable',
  5759.         X9:out('Callable')),
  5760.       f(fork,
  5761.         subtract:outer:'Callable',
  5762.         X4:a:'Callable',
  5763.         X9:b:'Callable',
  5764.         X10:out('Callable')),
  5765.       f(fork,
  5766.         shoot:outer:'Callable',
  5767.         X4:a:'Callable',
  5768.         X10:b:'Callable',
  5769.         X11:out('Callable')),
  5770.       f(mapply,
  5771.         X11,
  5772.         X2:container:'ContainerContainer',
  5773.         X12:out('FrozenSet')),
  5774.       f(fill,
  5775.         IN:'Grid',
  5776.         X1:value:'Integer',
  5777.         X12:'Patch',
  5778.         X13:out('Grid')),
  5779.       f(mapply,
  5780.         delta,
  5781.         X2:container:'ContainerContainer',
  5782.         X14:out('FrozenSet')),
  5783.       f(fill,
  5784.         X13:'Grid',
  5785.         'ZERO':value:'Integer',
  5786.         X14:'Patch',
  5787.         OUT:out('Grid'))
  5788.     ].
  5789. solve(ef135b50, IN, OUT) :-
  5790.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  5791.       f(ofcolor, IN:'Grid', 'ZERO':value:'Integer', X2:out('Indices')),
  5792.       f(product,
  5793.         X1:a:'Container',
  5794.         X1:b:'Container',
  5795.         X3:out('FrozenSet')),
  5796.       f(power, first, 'TWO':n:'Integer', X4:out('Callable')),
  5797.       f(compose,
  5798.         first:outer:'Callable',
  5799.         last:inner:'Callable',
  5800.         X5:out('Callable')),
  5801.       f(fork,
  5802.         equality:outer:'Callable',
  5803.         X4:a:'Callable',
  5804.         X5:b:'Callable',
  5805.         X6:out('Callable')),
  5806.       f(sfilter,
  5807.         X3:'Container',
  5808.         X6:condition:'Callable',
  5809.         X7:out('Container')),
  5810.       f(fork,
  5811.         connect:outer:'Callable',
  5812.         first:a:'Callable',
  5813.         last:b:'Callable',
  5814.         X8:out('Callable')),
  5815.       f(mapply,
  5816.         X8,
  5817.         X7:container:'ContainerContainer',
  5818.         X9:out('FrozenSet')),
  5819.       f(intersection,
  5820.         X9:a:'FrozenSet',
  5821.         X2:b:'FrozenSet',
  5822.         X10:out('FrozenSet')),
  5823.       f(fill,
  5824.         IN:'Grid',
  5825.         'NINE':value:'Integer',
  5826.         X10:'Patch',
  5827.         X11:out('Grid')),
  5828.       f(trim, X11:'Grid', X12:out('Grid')),
  5829.       f(asobject, X12:'Grid', X13:out('Object')),
  5830.       f(shift, X13:'Patch', (1, 1):directions:'Point', X14:out('Patch')),
  5831.       f(paint, IN:'Grid', X14:obj:'Object', OUT:out('Grid'))
  5832.     ].
  5833. solve(cbded52d, IN, OUT) :-
  5834.     [ f(objects,
  5835.         IN:'Grid',
  5836.         univalued=true,
  5837.         diagonal=false,
  5838.         without_bg=true,
  5839.         X1:out('Objects')),
  5840.       f(sizefilter, X1:'Container', 'ONE':n:'Integer', X2:out('FrozenSet')),
  5841.       f(product,
  5842.         X2:a:'Container',
  5843.         X2:b:'Container',
  5844.         X3:out('FrozenSet')),
  5845.       f(fork,
  5846.         vmatching:outer:'Callable',
  5847.         first:a:'Callable',
  5848.         last:b:'Callable',
  5849.         X4:out('Callable')),
  5850.       f(fork,
  5851.         hmatching:outer:'Callable',
  5852.         first:a:'Callable',
  5853.         last:b:'Callable',
  5854.         X5:out('Callable')),
  5855.       f(fork,
  5856.         either:outer:'Callable',
  5857.         X4:a:'Callable',
  5858.         X5:b:'Callable',
  5859.         X6:out('Callable')),
  5860.       f(sfilter,
  5861.         X3:'Container',
  5862.         X6:condition:'Callable',
  5863.         X7:out('Container')),
  5864.       f(compose,
  5865.         center:outer:'Callable',
  5866.         first:inner:'Callable',
  5867.         X8:out('Callable')),
  5868.       f(compose,
  5869.         center:outer:'Callable',
  5870.         last:inner:'Callable',
  5871.         X9:out('Callable')),
  5872.       f(fork,
  5873.         connect:outer:'Callable',
  5874.         X8:a:'Callable',
  5875.         X9:b:'Callable',
  5876.         X10:out('Callable')),
  5877.       f(chain,
  5878.         initset:h:'Callable',
  5879.         center:g:'Callable',
  5880.         X10:f:'Callable',
  5881.         X11:out('Callable')),
  5882.       f(compose,
  5883.         color:outer:'Callable',
  5884.         first:inner:'Callable',
  5885.         X12:out('Callable')),
  5886.       f(fork,
  5887.         recolor:outer:'Callable',
  5888.         X12:a:'Callable',
  5889.         X11:b:'Callable',
  5890.         X13:out('Callable')),
  5891.       f(mapply,
  5892.         X13,
  5893.         X7:container:'ContainerContainer',
  5894.         X14:out('FrozenSet')),
  5895.       f(paint, IN:'Grid', X14:obj:'Object', OUT:out('Grid'))
  5896.     ].
  5897. solve('8a004b2b', IN, OUT) :-
  5898.     [ f(objects,
  5899.         IN:'Grid',
  5900.         univalued=false,
  5901.         diagonal=true,
  5902.         without_bg=true,
  5903.         X1:out('Objects')),
  5904.       f(ofcolor, IN:'Grid', 'FOUR':value:'Integer', X2:out('Indices')),
  5905.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  5906.       f(argmax,
  5907.         X1:'Container',
  5908.         lowermost:compfunc:'Callable',
  5909.         X4:out('Any')),
  5910.       f(normalize, X4:'Patch', X5:out('Patch')),
  5911.       f(replace,
  5912.         X3:'Grid',
  5913.         'FOUR':replacee:'Integer',
  5914.         'ZERO':replacer:'Integer',
  5915.         X6:out('Grid')),
  5916.       f(objects,
  5917.         X6:'Grid',
  5918.         univalued=true,
  5919.         diagonal=false,
  5920.         without_bg=true,
  5921.         X7:out('Objects')),
  5922.       f(merge, X7:containers:'ContainerContainer', X8:out('Container')),
  5923.       f(width, X8:'Piece', X9:out('Integer')),
  5924.       f(ulcorner, X8:'Patch', X10:out('Point')),
  5925.       f(width, X4:'Piece', X11:out('Integer')),
  5926.       f(divide,
  5927.         X9:a:'Numerical',
  5928.         X11:b:'Numerical',
  5929.         X12:out('Numerical')),
  5930.       f(upscale,
  5931.         X5:'Element',
  5932.         X12:factor:'Integer',
  5933.         X13:out('Element')),
  5934.       f(shift, X13:'Patch', X10:directions:'Point', X14:out('Patch')),
  5935.       f(paint, X3:'Grid', X14:obj:'Object', OUT:out('Grid'))
  5936.     ].
  5937. solve(e26a3af2, IN, OUT) :-
  5938.     [ f(rot90, IN:'Grid', X1:out('Grid')),
  5939.       f(apply, mostcommon, IN:'Container', X2:out('Container')),
  5940.       f(apply, mostcommon, X1:'Container', X3:out('Container')),
  5941.       f(repeat, X2:item:'Any', 'ONE':num:'Integer', X4:out('Tuple')),
  5942.       f(repeat, X3:item:'Any', 'ONE':num:'Integer', X5:out('Tuple')),
  5943.       f(compose,
  5944.         size:outer:'Callable',
  5945.         dedupe:inner:'Callable',
  5946.         X6:out('Callable')),
  5947.       f(X6, X2, X7),
  5948.       f(X6, X3, X8),
  5949.       f(greater, X8:a:'Integer', X7:b:'Integer', returns=X9),
  5950.       f(branch,
  5951.         condition=X9,
  5952.         height:a:'Any',
  5953.         width:b:'Any',
  5954.         X10:out('Any')),
  5955.       f(X10, IN, X11),
  5956.       f(rot90, X4:'Grid', X12:out('Grid')),
  5957.       f(branch,
  5958.         condition=X9,
  5959.         X5:a:'Any',
  5960.         X12:b:'Any',
  5961.         X13:out('Any')),
  5962.       f(branch,
  5963.         condition=X9,
  5964.         vupscale:a:'Any',
  5965.         hupscale:b:'Any',
  5966.         X14:out('Any')),
  5967.       f(X14, X13, X11, OUT)
  5968.     ].
  5969. solve('6cf79266', IN, OUT) :-
  5970.     [ f(ofcolor, IN:'Grid', 'ZERO':value:'Integer', X1:out('Indices')),
  5971.       f(astuple, 'ZERO':a:'Integer', (0, 0):b:'Integer', X2:out('Point')),
  5972.       f(initset, X2:value:'Any', X3:out('FrozenSet')),
  5973.       f(upscale, X3:'Element', 'THREE':factor:'Integer', X4:out('Element')),
  5974.       f(toindices, X4:'Patch', X5:out('Indices')),
  5975.       f(lbind, shift, X5:fixed:'Any', X6:out('Callable')),
  5976.       f(rbind, difference, X1:fixed:'Any', X7:out('Callable')),
  5977.       f(chain,
  5978.         size:h:'Callable',
  5979.         X7:g:'Callable',
  5980.         X6:f:'Callable',
  5981.         X8:out('Callable')),
  5982.       f(matcher, X8, 'ZERO':target:'Any', X9:out('Callable')),
  5983.       f(lbind, add, (-1, -1):fixed:'Any', X10:out('Callable')),
  5984.       f(chain,
  5985.         flip:h:'Callable',
  5986.         X9:g:'Callable',
  5987.         X10:f:'Callable',
  5988.         X11:out('Callable')),
  5989.       f(fork,
  5990.         both:outer:'Callable',
  5991.         X9:a:'Callable',
  5992.         X11:b:'Callable',
  5993.         X12:out('Callable')),
  5994.       f(sfilter,
  5995.         X1:'Container',
  5996.         X12:condition:'Callable',
  5997.         X13:out('Container')),
  5998.       f(mapply,
  5999.         X6,
  6000.         X13:container:'ContainerContainer',
  6001.         X14:out('FrozenSet')),
  6002.       f(fill,
  6003.         IN:'Grid',
  6004.         'ONE':value:'Integer',
  6005.         X14:'Patch',
  6006.         OUT:out('Grid'))
  6007.     ].
  6008. solve(a87f7484, IN, OUT) :-
  6009.     [ f(palette, IN:'Element', X1:out('IntegerSet')),
  6010.       f(dmirror, IN:'Piece', X2:out('Piece')),
  6011.       f(portrait, IN:'Piece', returns=X3),
  6012.       f(branch,
  6013.         condition=X3,
  6014.         X2:a:'Any',
  6015.         IN:b:'Any',
  6016.         X4:out('Any')),
  6017.       f(size, X1:'Container', X5:out('Integer')),
  6018.       f(decrement, X5:x:'Numerical', X6:out('Numerical')),
  6019.       f(hsplit, X4:'Grid', X6:n:'Integer', X7:out('Tuple')),
  6020.       f(rbind, ofcolor, 'ZERO':fixed:'Any', X8:out('Callable')),
  6021.       f(apply, X8, X7:'Container', X9:out('Container')),
  6022.       f(mostcommon, X9:'Container', X10:out('Any')),
  6023.       f(matcher, X8, X10:target:'Any', X11:out('Callable')),
  6024.       f(compose,
  6025.         flip:outer:'Callable',
  6026.         X11:inner:'Callable',
  6027.         X12:out('Callable')),
  6028.       f(extract,
  6029.         X7:'Container',
  6030.         X12:condition:'Callable',
  6031.         X13:out('Any')),
  6032.       f(dmirror, X13:'Piece', X14:out('Piece')),
  6033.       f(branch,
  6034.         condition=X3,
  6035.         X14:a:'Any',
  6036.         X13:b:'Any',
  6037.         OUT:out('Any'))
  6038.     ].
  6039. solve('4093f84a', IN, OUT) :-
  6040.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  6041.       f(replace,
  6042.         IN:'Grid',
  6043.         X1:replacee:'Integer',
  6044.         'FIVE':replacer:'Integer',
  6045.         X2:out('Grid')),
  6046.       f(rot270, X2:'Grid', X3:out('Grid')),
  6047.       f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X4:out('Indices')),
  6048.       f(portrait, X4:'Piece', returns=X5),
  6049.       f(branch,
  6050.         condition=X5,
  6051.         X2:a:'Any',
  6052.         X3:b:'Any',
  6053.         X6:out('Any')),
  6054.       f(lefthalf, X6:'Grid', X7:out('Grid')),
  6055.       f(righthalf, X6:'Grid', X8:out('Grid')),
  6056.       f(rbind, order, identity:fixed:'Any', X9:out('Callable')),
  6057.       f(rbind, order, invert:fixed:'Any', X10:out('Callable')),
  6058.       f(apply, X9, X7:'Container', X11:out('Container')),
  6059.       f(apply, X10, X8:'Container', X12:out('Container')),
  6060.       f(hconcat, X11:a:'Grid', X12:b:'Grid', X13:out('Grid')),
  6061.       f(rot90, X13:'Grid', X14:out('Grid')),
  6062.       f(branch,
  6063.         condition=X5,
  6064.         X13:a:'Any',
  6065.         X14:b:'Any',
  6066.         OUT:out('Any'))
  6067.     ].
  6068. solve(ba26e723, IN, OUT) :-
  6069.     [ f(width, IN:'Piece', X1:out('Integer')),
  6070.       f(hsplit, IN:'Grid', X1:n:'Integer', X2:out('Tuple')),
  6071.       f(interval,
  6072.         'ZERO':start:'Integer',
  6073.         X1:stop:'Integer',
  6074.         'ONE':step:'Integer',
  6075.         X3:out('Tuple')),
  6076.       f(rbind, divide, 'THREE':fixed:'Any', X4:out('Callable')),
  6077.       f(rbind, multiply, 'THREE':fixed:'Any', X5:out('Callable')),
  6078.       f(compose,
  6079.         X5:outer:'Callable',
  6080.         X4:inner:'Callable',
  6081.         X6:out('Callable')),
  6082.       f(fork,
  6083.         equality:outer:'Callable',
  6084.         identity:a:'Callable',
  6085.         X6:b:'Callable',
  6086.         X7:out('Callable')),
  6087.       f(apply, X7, X3:'Container', X8:out('Container')),
  6088.       f(rbind, ofcolor, 'FOUR':fixed:'Any', X9:out('Callable')),
  6089.       f(apply, X9, X2:'Container', X10:out('Container')),
  6090.       f(apply, tojvec, X3:'Container', X11:out('Container')),
  6091.       f(papply, shift, X10:a:'Tuple', X11:b:'Tuple', X12:out('Tuple')),
  6092.       f(pair, X8:a:'Tuple', X12:b:'Tuple', X13:out('TupleTuple')),
  6093.       f(sfilter,
  6094.         X13:'Container',
  6095.         first:condition:'Callable',
  6096.         X14:out('Container')),
  6097.       f(mapply,
  6098.         last,
  6099.         X14:container:'ContainerContainer',
  6100.         X15:out('FrozenSet')),
  6101.       f(fill,
  6102.         IN:'Grid',
  6103.         'SIX':value:'Integer',
  6104.         X15:'Patch',
  6105.         OUT:out('Grid'))
  6106.     ].
  6107. solve('4612dd53', IN, OUT) :-
  6108.     [ f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X1:out('Indices')),
  6109.       f(box, X1:'Patch', X2:out('Indices')),
  6110.       f(fill,
  6111.         IN:'Grid',
  6112.         'TWO':value:'Integer',
  6113.         X2:'Patch',
  6114.         X3:out('Grid')),
  6115.       f(subgrid, X1:'Patch', X3:'Grid', X4:out('Grid')),
  6116.       f(ofcolor, X4:'Grid', 'ONE':value:'Integer', X5:out('Indices')),
  6117.       f(mapply,
  6118.         vfrontier,
  6119.         X5:container:'ContainerContainer',
  6120.         X6:out('FrozenSet')),
  6121.       f(mapply,
  6122.         hfrontier,
  6123.         X5:container:'ContainerContainer',
  6124.         X7:out('FrozenSet')),
  6125.       f(size, X6:'Container', X8:out('Integer')),
  6126.       f(size, X7:'Container', X9:out('Integer')),
  6127.       f(greater, X8:a:'Integer', X9:b:'Integer', returns=X10),
  6128.       f(branch,
  6129.         condition=X10,
  6130.         X7:a:'Any',
  6131.         X6:b:'Any',
  6132.         X11:out('Any')),
  6133.       f(fill,
  6134.         X4:'Grid',
  6135.         'TWO':value:'Integer',
  6136.         X11:'Patch',
  6137.         X12:out('Grid')),
  6138.       f(ofcolor, X12:'Grid', 'TWO':value:'Integer', X13:out('Indices')),
  6139.       f(ulcorner, X1:'Patch', X14:out('Point')),
  6140.       f(shift, X13:'Patch', X14:directions:'Point', X15:out('Patch')),
  6141.       f(underfill,
  6142.         IN:'Grid',
  6143.         'TWO':value:'Integer',
  6144.         X15:'Patch',
  6145.         OUT:out('Grid'))
  6146.     ].
  6147. solve('29c11459', IN, OUT) :-
  6148.     [ f(lefthalf, IN:'Grid', X1:out('Grid')),
  6149.       f(righthalf, IN:'Grid', X2:out('Grid')),
  6150.       f(objects,
  6151.         X2:'Grid',
  6152.         univalued=true,
  6153.         diagonal=false,
  6154.         without_bg=true,
  6155.         X3:out('Objects')),
  6156.       f(objects,
  6157.         X1:'Grid',
  6158.         univalued=true,
  6159.         diagonal=false,
  6160.         without_bg=true,
  6161.         X4:out('Objects')),
  6162.       f(compose,
  6163.         hfrontier:outer:'Callable',
  6164.         center:inner:'Callable',
  6165.         X5:out('Callable')),
  6166.       f(fork,
  6167.         recolor:outer:'Callable',
  6168.         color:a:'Callable',
  6169.         X5:b:'Callable',
  6170.         X6:out('Callable')),
  6171.       f(mapply,
  6172.         X6,
  6173.         X4:container:'ContainerContainer',
  6174.         X7:out('FrozenSet')),
  6175.       f(paint, X1:'Grid', X7:obj:'Object', X8:out('Grid')),
  6176.       f(mapply,
  6177.         X6,
  6178.         X3:container:'ContainerContainer',
  6179.         X9:out('FrozenSet')),
  6180.       f(paint, IN:'Grid', X9:obj:'Object', X10:out('Grid')),
  6181.       f(objects,
  6182.         X8:'Grid',
  6183.         univalued=true,
  6184.         diagonal=false,
  6185.         without_bg=true,
  6186.         X11:out('Objects')),
  6187.       f(apply, urcorner, X11:'Container', X12:out('Container')),
  6188.       f(shift, X12:'Patch', (0, 1):directions:'Point', X13:out('Patch')),
  6189.       f(merge,
  6190.         X11:containers:'ContainerContainer',
  6191.         X14:out('Container')),
  6192.       f(paint, X10:'Grid', X14:obj:'Object', X15:out('Grid')),
  6193.       f(fill,
  6194.         X15:'Grid',
  6195.         'FIVE':value:'Integer',
  6196.         X13:'Patch',
  6197.         OUT:out('Grid'))
  6198.     ].
  6199. solve('963e52fc', IN, OUT) :-
  6200.     [ f(width, IN:'Piece', X1:out('Integer')),
  6201.       f(asobject, IN:'Grid', X2:out('Object')),
  6202.       f(hperiod, X2:obj:'Object', X3:out('Integer')),
  6203.       f(height, X2:'Piece', X4:out('Integer')),
  6204.       f(astuple, X4:a:'Integer', X3:b:'Integer', X5:out('Point')),
  6205.       f(ulcorner, X2:'Patch', X6:out('Point')),
  6206.       f(crop,
  6207.         IN:'Grid',
  6208.         X6:start:'Point',
  6209.         X5:dims:'Point',
  6210.         X7:out('Grid')),
  6211.       f(rot90, X7:'Grid', X8:out('Grid')),
  6212.       f(double, X1:n:'Numerical', X9:out('Numerical')),
  6213.       f(divide,
  6214.         X9:a:'Numerical',
  6215.         X3:b:'Numerical',
  6216.         X10:out('Numerical')),
  6217.       f(increment, X10:x:'Numerical', X11:out('Numerical')),
  6218.       f(repeat, X8:item:'Any', X11:num:'Integer', X12:out('Tuple')),
  6219.       f(merge,
  6220.         X12:containers:'ContainerContainer',
  6221.         X13:out('Container')),
  6222.       f(rot270, X13:'Grid', X14:out('Grid')),
  6223.       f(astuple, X4:a:'Integer', X9:b:'Integer', X15:out('Point')),
  6224.       f(crop,
  6225.         X14:'Grid',
  6226.         (0, 0):start:'Point',
  6227.         X15:dims:'Point',
  6228.         OUT:out('Grid'))
  6229.     ].
  6230. solve(ae3edfdc, IN, OUT) :-
  6231.     [ f(objects,
  6232.         IN:'Grid',
  6233.         univalued=true,
  6234.         diagonal=false,
  6235.         without_bg=true,
  6236.         X1:out('Objects')),
  6237.       f(replace,
  6238.         IN:'Grid',
  6239.         'THREE':replacee:'Integer',
  6240.         'ZERO':replacer:'Integer',
  6241.         X2:out('Grid')),
  6242.       f(replace,
  6243.         X2:'Grid',
  6244.         'SEVEN':replacee:'Integer',
  6245.         'ZERO':replacer:'Integer',
  6246.         X3:out('Grid')),
  6247.       f(lbind, colorfilter, X1:fixed:'Any', X4:out('Callable')),
  6248.       f(lbind, rbind, gravitate:fixed:'Any', X5:out('Callable')),
  6249.       f(chain,
  6250.         X5:h:'Callable',
  6251.         first:g:'Callable',
  6252.         X4:f:'Callable',
  6253.         X6:out('Callable')),
  6254.       f(X6, 'TWO', X7),
  6255.       f(X6, 'ONE', X8),
  6256.       f(X4, 'THREE', X9),
  6257.       f(X4, 'SEVEN', X10),
  6258.       f(fork,
  6259.         shift:outer:'Callable',
  6260.         identity:a:'Callable',
  6261.         X7:b:'Callable',
  6262.         X11:out('Callable')),
  6263.       f(fork,
  6264.         shift:outer:'Callable',
  6265.         identity:a:'Callable',
  6266.         X8:b:'Callable',
  6267.         X12:out('Callable')),
  6268.       f(mapply,
  6269.         X11,
  6270.         X9:container:'ContainerContainer',
  6271.         X13:out('FrozenSet')),
  6272.       f(mapply,
  6273.         X12,
  6274.         X10:container:'ContainerContainer',
  6275.         X14:out('FrozenSet')),
  6276.       f(paint, X3:'Grid', X13:obj:'Object', X15:out('Grid')),
  6277.       f(paint, X15:'Grid', X14:obj:'Object', OUT:out('Grid'))
  6278.     ].
  6279. solve('1f0c79e5', IN, OUT) :-
  6280.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  6281.       f(replace,
  6282.         IN:'Grid',
  6283.         'TWO':replacee:'Integer',
  6284.         'ZERO':replacer:'Integer',
  6285.         X2:out('Grid')),
  6286.       f(leastcolor, X2:'Element', X3:out('Integer')),
  6287.       f(ofcolor, X2:'Grid', X3:value:'Integer', X4:out('Indices')),
  6288.       f(combine,
  6289.         X1:a:'Container',
  6290.         X4:b:'Container',
  6291.         X5:out('Container')),
  6292.       f(recolor, X3:value:'Integer', X5:'Patch', X6:out('Object')),
  6293.       f(compose,
  6294.         decrement:outer:'Callable',
  6295.         double:inner:'Callable',
  6296.         X7:out('Callable')),
  6297.       f(ulcorner, X5:'Patch', X8:out('Point')),
  6298.       f(invert, X8:n:'Numerical', X9:out('Numerical')),
  6299.       f(shift, X1:'Patch', X9:directions:'Point', X10:out('Patch')),
  6300.       f(apply, X7, X10:'Container', X11:out('Container')),
  6301.       f(interval,
  6302.         'ZERO':start:'Integer',
  6303.         'NINE':stop:'Integer',
  6304.         'ONE':step:'Integer',
  6305.         X12:out('Tuple')),
  6306.       f(prapply, multiply, X11, X12, X13),
  6307.       f(lbind, shift, X6:fixed:'Any', X14:out('Callable')),
  6308.       f(mapply,
  6309.         X14,
  6310.         X13:container:'ContainerContainer',
  6311.         X15:out('FrozenSet')),
  6312.       f(paint, IN:'Grid', X15:obj:'Object', OUT:out('Grid'))
  6313.     ].
  6314. solve('56dc2b01', IN, OUT) :-
  6315.     [ f(objects,
  6316.         IN:'Grid',
  6317.         univalued=true,
  6318.         diagonal=false,
  6319.         without_bg=true,
  6320.         X1:out('Objects')),
  6321.       f(colorfilter,
  6322.         X1:objs:'Objects',
  6323.         'THREE':value:'Integer',
  6324.         X2:out('Objects')),
  6325.       f(first, X2:'Container', X3:out('Any')),
  6326.       f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X4:out('Indices')),
  6327.       f(gravitate,
  6328.         X3:source:'Patch',
  6329.         X4:destination:'Patch',
  6330.         X5:out('Point')),
  6331.       f(first, X5:'Container', X6:out('Any')),
  6332.       f(equality, X6:a:'Any', 'ZERO':b:'Any', returns=X7),
  6333.       f(branch, condition=X7, width:a:'Any', height:b:'Any', X8:out('Any')),
  6334.       f(X8, X3, X9),
  6335.       f(gravitate,
  6336.         X4:source:'Patch',
  6337.         X3:destination:'Patch',
  6338.         X10:out('Point')),
  6339.       f(sign, X10:x:'Numerical', X11:out('Numerical')),
  6340.       f(multiply,
  6341.         X11:a:'Numerical',
  6342.         X9:b:'Numerical',
  6343.         X12:out('Numerical')),
  6344.       f(crement, X12:x:'Numerical', X13:out('Numerical')),
  6345.       f(recolor, 'EIGHT':value:'Integer', X4:'Patch', X14:out('Object')),
  6346.       f(shift, X14:'Patch', X13:directions:'Point', X15:out('Patch')),
  6347.       f(paint, IN:'Grid', X15:obj:'Object', X16:out('Grid')),
  6348.       f(move,
  6349.         X16:'Grid',
  6350.         X3:obj:'Object',
  6351.         X5:offset:'Point',
  6352.         OUT:out('Grid'))
  6353.     ].
  6354. solve(e48d4e1a, IN, OUT) :-
  6355.     [ f(shape, IN:'Piece', X1:out('Point')),
  6356.       f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X2:out('Indices')),
  6357.       f(fill,
  6358.         IN:'Grid',
  6359.         'ZERO':value:'Integer',
  6360.         X2:'Patch',
  6361.         X3:out('Grid')),
  6362.       f(leastcolor, X3:'Element', X4:out('Integer')),
  6363.       f(size, X2:'Container', X5:out('Integer')),
  6364.       f(ofcolor, IN:'Grid', X4:value:'Integer', X6:out('Indices')),
  6365.       f(rbind, toobject, IN:fixed:'Any', X7:out('Callable')),
  6366.       f(rbind, colorcount, X4:fixed:'Any', X8:out('Callable')),
  6367.       f(chain,
  6368.         X8:h:'Callable',
  6369.         X7:g:'Callable',
  6370.         dneighbors:f:'Callable',
  6371.         X9:out('Callable')),
  6372.       f(matcher, X9, 'FOUR':target:'Any', X10:out('Callable')),
  6373.       f(extract,
  6374.         X6:'Container',
  6375.         X10:condition:'Callable',
  6376.         X11:out('Any')),
  6377.       f(multiply,
  6378.         (1, -1):a:'Numerical',
  6379.         X5:b:'Numerical',
  6380.         X12:out('Numerical')),
  6381.       f(add,
  6382.         X12:a:'Numerical',
  6383.         X11:b:'Numerical',
  6384.         X13:out('Numerical')),
  6385.       f(canvas,
  6386.         'ZERO':value:'Integer',
  6387.         X1:dimensions:'Point',
  6388.         X14:out('Grid')),
  6389.       f(fork,
  6390.         combine:outer:'Callable',
  6391.         vfrontier:a:'Callable',
  6392.         hfrontier:b:'Callable',
  6393.         X15:out('Callable')),
  6394.       f(X15, X13, X16),
  6395.       f(fill,
  6396.         X14:'Grid',
  6397.         X4:value:'Integer',
  6398.         X16:'Patch',
  6399.         OUT:out('Grid'))
  6400.     ].
  6401. solve('6773b310', IN, OUT) :-
  6402.     [ f(compress, IN:'Grid', X1:out('Grid')),
  6403.       f(neighbors, (0, 0):loc:'Point', X2:out('Indices')),
  6404.       f(insert,
  6405.         (0, 0):value:'Any',
  6406.         X2:container:'FrozenSet',
  6407.         X3:out('FrozenSet')),
  6408.       f(rbind, multiply, 'THREE':fixed:'Any', X4:out('Callable')),
  6409.       f(apply, X4, X3:'Container', X5:out('Container')),
  6410.       f(astuple, 'FOUR':a:'Integer', 'FOUR':b:'Integer', X6:out('Point')),
  6411.       f(shift, X5:'Patch', X6:directions:'Point', X7:out('Patch')),
  6412.       f(fork,
  6413.         insert:outer:'Callable',
  6414.         identity:a:'Callable',
  6415.         neighbors:b:'Callable',
  6416.         X8:out('Callable')),
  6417.       f(apply, X8, X7:'Container', X9:out('Container')),
  6418.       f(rbind, toobject, X1:fixed:'Any', X10:out('Callable')),
  6419.       f(apply, X10, X9:'Container', X11:out('Container')),
  6420.       f(rbind, colorcount, 'SIX':fixed:'Any', X12:out('Callable')),
  6421.       f(matcher, X12, 'TWO':target:'Any', X13:out('Callable')),
  6422.       f(mfilter, X11:'Container', X13, X14:out('FrozenSet')),
  6423.       f(fill,
  6424.         X1:'Grid',
  6425.         'ONE':value:'Integer',
  6426.         X14:'Patch',
  6427.         X15:out('Grid')),
  6428.       f(replace,
  6429.         X15:'Grid',
  6430.         'SIX':replacee:'Integer',
  6431.         'ZERO':replacer:'Integer',
  6432.         X16:out('Grid')),
  6433.       f(downscale, X16:'Grid', 'THREE':factor:'Integer', OUT:out('Grid'))
  6434.     ].
  6435. solve('780d0b14', IN, OUT) :-
  6436.     [ f(asindices, IN:'Grid', X1:out('Indices')),
  6437.       f(objects,
  6438.         IN:'Grid',
  6439.         univalued=true,
  6440.         diagonal=true,
  6441.         without_bg=true,
  6442.         X2:out('Objects')),
  6443.       f(rbind, greater, 'TWO':fixed:'Any', X3:out('Callable')),
  6444.       f(compose,
  6445.         X3:outer:'Callable',
  6446.         size:inner:'Callable',
  6447.         X4:out('Callable')),
  6448.       f(sfilter,
  6449.         X2:'Container',
  6450.         X4:condition:'Callable',
  6451.         X5:out('Container')),
  6452.       f(totuple, X5:container:'FrozenSet', X6:out('Tuple')),
  6453.       f(apply, color, X6:'Container', X7:out('Container')),
  6454.       f(apply, center, X6:'Container', X8:out('Container')),
  6455.       f(pair, X7:a:'Tuple', X8:b:'Tuple', X9:out('TupleTuple')),
  6456.       f(fill,
  6457.         IN:'Grid',
  6458.         'ZERO':value:'Integer',
  6459.         X1:'Patch',
  6460.         X10:out('Grid')),
  6461.       f(paint, X10:'Grid', X9:obj:'Object', X11:out('Grid')),
  6462.       f(rbind, greater, 'ONE':fixed:'Any', X12:out('Callable')),
  6463.       f(compose,
  6464.         dedupe:outer:'Callable',
  6465.         totuple:inner:'Callable',
  6466.         X13:out('Callable')),
  6467.       f(chain,
  6468.         X12:h:'Callable',
  6469.         size:g:'Callable',
  6470.         X13:f:'Callable',
  6471.         X14:out('Callable')),
  6472.       f(sfilter,
  6473.         X11:'Container',
  6474.         X14:condition:'Callable',
  6475.         X15:out('Container')),
  6476.       f(rot90, X15:'Grid', X16:out('Grid')),
  6477.       f(sfilter,
  6478.         X16:'Container',
  6479.         X14:condition:'Callable',
  6480.         X17:out('Container')),
  6481.       f(rot270, X17:'Grid', OUT:out('Grid'))
  6482.     ].
  6483. solve('2204b7a8', IN, OUT) :-
  6484.     [ f(objects,
  6485.         IN:'Grid',
  6486.         univalued=true,
  6487.         diagonal=false,
  6488.         without_bg=true,
  6489.         X1:out('Objects')),
  6490.       f(lbind, sfilter, X1:fixed:'Any', X2:out('Callable')),
  6491.       f(compose,
  6492.         size:outer:'Callable',
  6493.         X2:inner:'Callable',
  6494.         X3:out('Callable')),
  6495.       f(X3, vline, X4),
  6496.       f(X3, hline, X5),
  6497.       f(greater, X4:a:'Integer', X5:b:'Integer', returns=X6),
  6498.       f(branch,
  6499.         condition=X6,
  6500.         lefthalf:a:'Any',
  6501.         tophalf:b:'Any',
  6502.         X7:out('Any')),
  6503.       f(branch,
  6504.         condition=X6,
  6505.         righthalf:a:'Any',
  6506.         bottomhalf:b:'Any',
  6507.         X8:out('Any')),
  6508.       f(branch,
  6509.         condition=X6,
  6510.         hconcat:a:'Any',
  6511.         vconcat:b:'Any',
  6512.         X9:out('Any')),
  6513.       f(X7, IN, X10),
  6514.       f(X8, IN, X11),
  6515.       f(index, X10:'Grid', (0, 0):loc:'Point', X12:out('Integer')),
  6516.       f(shape, X11:'Piece', X13:out('Point')),
  6517.       f(decrement, X13:x:'Numerical', X14:out('Numerical')),
  6518.       f(index, X11:'Grid', X14:loc:'Point', X15:out('Integer')),
  6519.       f(replace,
  6520.         X10:'Grid',
  6521.         'THREE':replacee:'Integer',
  6522.         X12:replacer:'Integer',
  6523.         X16:out('Grid')),
  6524.       f(replace,
  6525.         X11:'Grid',
  6526.         'THREE':replacee:'Integer',
  6527.         X15:replacer:'Integer',
  6528.         X17:out('Grid')),
  6529.       f(X9, X16, X17, OUT)
  6530.     ].
  6531. solve(d9f24cd1, IN, OUT) :-
  6532.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  6533.       f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X2:out('Indices')),
  6534.       f(prapply, connect, X1, X2, X3),
  6535.       f(mfilter, X3:'Container', vline, X4:out('FrozenSet')),
  6536.       f(underfill,
  6537.         IN:'Grid',
  6538.         'TWO':value:'Integer',
  6539.         X4:'Patch',
  6540.         X5:out('Grid')),
  6541.       f(matcher, numcolors, 'TWO':target:'Any', X6:out('Callable')),
  6542.       f(objects,
  6543.         X5:'Grid',
  6544.         univalued=false,
  6545.         diagonal=false,
  6546.         without_bg=true,
  6547.         X7:out('Objects')),
  6548.       f(sfilter,
  6549.         X7:'Container',
  6550.         X6:condition:'Callable',
  6551.         X8:out('Container')),
  6552.       f(difference,
  6553.         X7:a:'FrozenSet',
  6554.         X8:b:'FrozenSet',
  6555.         X9:out('FrozenSet')),
  6556.       f(colorfilter,
  6557.         X9:objs:'Objects',
  6558.         'TWO':value:'Integer',
  6559.         X10:out('Objects')),
  6560.       f(mapply,
  6561.         toindices,
  6562.         X10:container:'ContainerContainer',
  6563.         X11:out('FrozenSet')),
  6564.       f(apply, urcorner, X8:'Container', X12:out('Container')),
  6565.       f(shift, X12:'Patch', (1, 1):directions:'Point', X13:out('Patch')),
  6566.       f(rbind, shoot, (-1, 0):fixed:'Any', X14:out('Callable')),
  6567.       f(mapply,
  6568.         X14,
  6569.         X13:container:'ContainerContainer',
  6570.         X15:out('FrozenSet')),
  6571.       f(fill,
  6572.         X5:'Grid',
  6573.         'TWO':value:'Integer',
  6574.         X15:'Patch',
  6575.         X16:out('Grid')),
  6576.       f(mapply,
  6577.         vfrontier,
  6578.         X11:container:'ContainerContainer',
  6579.         X17:out('FrozenSet')),
  6580.       f(fill,
  6581.         X16:'Grid',
  6582.         'TWO':value:'Integer',
  6583.         X17:'Patch',
  6584.         OUT:out('Grid'))
  6585.     ].
  6586. solve(b782dc8a, IN, OUT) :-
  6587.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  6588.       f(objects,
  6589.         IN:'Grid',
  6590.         univalued=true,
  6591.         diagonal=false,
  6592.         without_bg=false,
  6593.         X2:out('Objects')),
  6594.       f(ofcolor, IN:'Grid', X1:value:'Integer', X3:out('Indices')),
  6595.       f(first, X3:'Container', X4:out('Any')),
  6596.       f(dneighbors, X4:loc:'Point', X5:out('Indices')),
  6597.       f(toobject, X5:'Patch', IN:'Grid', X6:out('Object')),
  6598.       f(mostcolor, X6:'Element', X7:out('Integer')),
  6599.       f(ofcolor, IN:'Grid', X7:value:'Integer', X8:out('Indices')),
  6600.       f(colorfilter,
  6601.         X2:objs:'Objects',
  6602.         'ZERO':value:'Integer',
  6603.         X9:out('Objects')),
  6604.       f(rbind, adjacent, X8:fixed:'Any', X10:out('Callable')),
  6605.       f(mfilter, X9:'Container', X10, X11:out('FrozenSet')),
  6606.       f(toindices, X11:'Patch', X12:out('Indices')),
  6607.       f(rbind, manhattan, X3:fixed:'Any', X13:out('Callable')),
  6608.       f(chain,
  6609.         even:h:'Callable',
  6610.         X13:g:'Callable',
  6611.         initset:f:'Callable',
  6612.         X14:out('Callable')),
  6613.       f(sfilter,
  6614.         X12:'Container',
  6615.         X14:condition:'Callable',
  6616.         X15:out('Container')),
  6617.       f(difference,
  6618.         X12:a:'FrozenSet',
  6619.         X15:b:'FrozenSet',
  6620.         X16:out('FrozenSet')),
  6621.       f(fill,
  6622.         IN:'Grid',
  6623.         X1:value:'Integer',
  6624.         X15:'Patch',
  6625.         X17:out('Grid')),
  6626.       f(fill,
  6627.         X17:'Grid',
  6628.         X7:value:'Integer',
  6629.         X16:'Patch',
  6630.         OUT:out('Grid'))
  6631.     ].
  6632. solve('673ef223', IN, OUT) :-
  6633.     [ f(objects,
  6634.         IN:'Grid',
  6635.         univalued=true,
  6636.         diagonal=false,
  6637.         without_bg=true,
  6638.         X1:out('Objects')),
  6639.       f(ofcolor, IN:'Grid', 'EIGHT':value:'Integer', X2:out('Indices')),
  6640.       f(replace,
  6641.         IN:'Grid',
  6642.         'EIGHT':replacee:'Integer',
  6643.         'FOUR':replacer:'Integer',
  6644.         X3:out('Grid')),
  6645.       f(colorfilter,
  6646.         X1:objs:'Objects',
  6647.         'TWO':value:'Integer',
  6648.         X4:out('Objects')),
  6649.       f(argmin,
  6650.         X1:'Container',
  6651.         uppermost:compfunc:'Callable',
  6652.         X5:out('Any')),
  6653.       f(apply, uppermost, X4:'Container', X6:out('Container')),
  6654.       f(fork,
  6655.         subtract:outer:'Callable',
  6656.         maximum:a:'Callable',
  6657.         minimum:b:'Callable',
  6658.         X7:out('Callable')),
  6659.       f(X7, X6, X8),
  6660.       f(toivec, X8:i:'Integer', X9:out('Point')),
  6661.       f(leftmost, X5:'Patch', X10:out('Integer')),
  6662.       f(equality, X10:a:'Any', 'ZERO':b:'Any', returns=X11),
  6663.       f(branch,
  6664.         condition=X11,
  6665.         (0, -1):a:'Any',
  6666.         (0, 1):b:'Any',
  6667.         X12:out('Any')),
  6668.       f(rbind, shoot, X12:fixed:'Any', X13:out('Callable')),
  6669.       f(mapply,
  6670.         X13,
  6671.         X2:container:'ContainerContainer',
  6672.         X14:out('FrozenSet')),
  6673.       f(underfill,
  6674.         X3:'Grid',
  6675.         'EIGHT':value:'Integer',
  6676.         X14:'Patch',
  6677.         X15:out('Grid')),
  6678.       f(shift, X2:'Patch', X9:directions:'Point', X16:out('Patch')),
  6679.       f(mapply,
  6680.         hfrontier,
  6681.         X16:container:'ContainerContainer',
  6682.         X17:out('FrozenSet')),
  6683.       f(underfill,
  6684.         X15:'Grid',
  6685.         'EIGHT':value:'Integer',
  6686.         X17:'Patch',
  6687.         OUT:out('Grid'))
  6688.     ].
  6689. solve(f5b8619d, IN, OUT) :-
  6690.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  6691.       f(width, IN:'Piece', X2:out('Integer')),
  6692.       f(height, IN:'Piece', X3:out('Integer')),
  6693.       f(righthalf, IN:'Grid', X4:out('Grid')),
  6694.       f(halve, X2:n:'Numerical', X5:out('Numerical')),
  6695.       f(even, X2:n:'Integer', returns=X6),
  6696.       f(branch,
  6697.         condition=X6,
  6698.         identity:a:'Any',
  6699.         increment:b:'Any',
  6700.         X7:out('Any')),
  6701.       f(X7, X5, X8),
  6702.       f(astuple, X3:a:'Integer', X8:b:'Integer', X9:out('Point')),
  6703.       f(crop,
  6704.         IN:'Grid',
  6705.         (0, 0):start:'Point',
  6706.         X9:dims:'Point',
  6707.         X10:out('Grid')),
  6708.       f(vconcat, X10:a:'Grid', X10:b:'Grid', X11:out('Grid')),
  6709.       f(vconcat, X4:a:'Grid', X4:b:'Grid', X12:out('Grid')),
  6710.       f(hconcat, X12:a:'Grid', X11:b:'Grid', X13:out('Grid')),
  6711.       f(hconcat, X11:a:'Grid', X13:b:'Grid', X14:out('Grid')),
  6712.       f(hconcat, X14:a:'Grid', X12:b:'Grid', X15:out('Grid')),
  6713.       f(ofcolor, X15:'Grid', X1:value:'Integer', X16:out('Indices')),
  6714.       f(mapply,
  6715.         vfrontier,
  6716.         X16:container:'ContainerContainer',
  6717.         X17:out('FrozenSet')),
  6718.       f(underfill,
  6719.         X15:'Grid',
  6720.         'EIGHT':value:'Integer',
  6721.         X17:'Patch',
  6722.         OUT:out('Grid'))
  6723.     ].
  6724. solve(f8c80d96, IN, OUT) :-
  6725.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  6726.       f(objects,
  6727.         IN:'Grid',
  6728.         univalued=true,
  6729.         diagonal=false,
  6730.         without_bg=false,
  6731.         X2:out('Objects')),
  6732.       f(colorfilter,
  6733.         X2:objs:'Objects',
  6734.         X1:value:'Integer',
  6735.         X3:out('Objects')),
  6736.       f(argmax, X3:'Container', size:compfunc:'Callable', X4:out('Any')),
  6737.       f(argmin, X2:'Container', width:compfunc:'Callable', X5:out('Any')),
  6738.       f(size, X5:'Container', X6:out('Integer')),
  6739.       f(equality, X6:a:'Any', 'ONE':b:'Any', returns=X7),
  6740.       f(branch,
  6741.         condition=X7,
  6742.         identity:a:'Any',
  6743.         outbox:b:'Any',
  6744.         X8:out('Any')),
  6745.       f(chain,
  6746.         outbox:h:'Callable',
  6747.         outbox:g:'Callable',
  6748.         X8:f:'Callable',
  6749.         X9:out('Callable')),
  6750.       f(power, X9, 'TWO':n:'Integer', X10:out('Callable')),
  6751.       f(power, X9, 'THREE':n:'Integer', X11:out('Callable')),
  6752.       f(X9, X4, X12),
  6753.       f(X10, X4, X13),
  6754.       f(X11, X4, X14),
  6755.       f(fill,
  6756.         IN:'Grid',
  6757.         X1:value:'Integer',
  6758.         X12:'Patch',
  6759.         X15:out('Grid')),
  6760.       f(fill,
  6761.         X15:'Grid',
  6762.         X1:value:'Integer',
  6763.         X13:'Patch',
  6764.         X16:out('Grid')),
  6765.       f(fill,
  6766.         X16:'Grid',
  6767.         X1:value:'Integer',
  6768.         X14:'Patch',
  6769.         X17:out('Grid')),
  6770.       f(replace,
  6771.         X17:'Grid',
  6772.         'ZERO':replacee:'Integer',
  6773.         'FIVE':replacer:'Integer',
  6774.         OUT:out('Grid'))
  6775.     ].
  6776. solve(ecdecbb3, IN, OUT) :-
  6777.     [ f(objects,
  6778.         IN:'Grid',
  6779.         univalued=true,
  6780.         diagonal=false,
  6781.         without_bg=true,
  6782.         X1:out('Objects')),
  6783.       f(colorfilter,
  6784.         X1:objs:'Objects',
  6785.         'TWO':value:'Integer',
  6786.         X2:out('Objects')),
  6787.       f(colorfilter,
  6788.         X1:objs:'Objects',
  6789.         'EIGHT':value:'Integer',
  6790.         X3:out('Objects')),
  6791.       f(product,
  6792.         X2:a:'Container',
  6793.         X3:b:'Container',
  6794.         X4:out('FrozenSet')),
  6795.       f(fork,
  6796.         gravitate:outer:'Callable',
  6797.         first:a:'Callable',
  6798.         last:b:'Callable',
  6799.         X5:out('Callable')),
  6800.       f(compose,
  6801.         crement:outer:'Callable',
  6802.         X5:inner:'Callable',
  6803.         X6:out('Callable')),
  6804.       f(compose,
  6805.         center:outer:'Callable',
  6806.         first:inner:'Callable',
  6807.         X7:out('Callable')),
  6808.       f(fork,
  6809.         add:outer:'Callable',
  6810.         X7:a:'Callable',
  6811.         X6:b:'Callable',
  6812.         X8:out('Callable')),
  6813.       f(fork,
  6814.         connect:outer:'Callable',
  6815.         X7:a:'Callable',
  6816.         X8:b:'Callable',
  6817.         X9:out('Callable')),
  6818.       f(apply, X9, X4:'Container', X10:out('Container')),
  6819.       f(lbind, greater, 'EIGHT':fixed:'Any', X11:out('Callable')),
  6820.       f(compose,
  6821.         X11:outer:'Callable',
  6822.         size:inner:'Callable',
  6823.         X12:out('Callable')),
  6824.       f(mfilter, X10:'Container', X12, X13:out('FrozenSet')),
  6825.       f(fill,
  6826.         IN:'Grid',
  6827.         'TWO':value:'Integer',
  6828.         X13:'Patch',
  6829.         X14:out('Grid')),
  6830.       f(apply, X8, X4:'Container', X15:out('Container')),
  6831.       f(intersection,
  6832.         X13:a:'FrozenSet',
  6833.         X15:b:'FrozenSet',
  6834.         X16:out('FrozenSet')),
  6835.       f(mapply,
  6836.         neighbors,
  6837.         X16:container:'ContainerContainer',
  6838.         X17:out('FrozenSet')),
  6839.       f(fill,
  6840.         X14:'Grid',
  6841.         'EIGHT':value:'Integer',
  6842.         X17:'Patch',
  6843.         OUT:out('Grid'))
  6844.     ].
  6845. solve(e5062a87, IN, OUT) :-
  6846.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  6847.       f(recolor, 'ZERO':value:'Integer', X1:'Patch', X2:out('Object')),
  6848.       f(normalize, X2:'Patch', X3:out('Patch')),
  6849.       f(occurrences, IN:'Grid', X2:obj:'Object', X4:out('Indices')),
  6850.       f(lbind, shift, X3:fixed:'Any', X5:out('Callable')),
  6851.       f(apply, X5, X4:'Container', X6:out('Container')),
  6852.       f(astuple, 'ONE':a:'Integer', 'THREE':b:'Integer', X7:out('Point')),
  6853.       f(astuple, 'FIVE':a:'Integer', 'ONE':b:'Integer', X8:out('Point')),
  6854.       f(astuple, 'TWO':a:'Integer', 'SIX':b:'Integer', X9:out('Point')),
  6855.       f(initset, X7:value:'Any', X10:out('FrozenSet')),
  6856.       f(insert,
  6857.         X8:value:'Any',
  6858.         X10:container:'FrozenSet',
  6859.         X11:out('FrozenSet')),
  6860.       f(insert,
  6861.         X9:value:'Any',
  6862.         X11:container:'FrozenSet',
  6863.         X12:out('FrozenSet')),
  6864.       f(rbind, contained, X12:fixed:'Any', X13:out('Callable')),
  6865.       f(chain,
  6866.         flip:h:'Callable',
  6867.         X13:g:'Callable',
  6868.         ulcorner:f:'Callable',
  6869.         X14:out('Callable')),
  6870.       f(sfilter,
  6871.         X6:'Container',
  6872.         X14:condition:'Callable',
  6873.         X15:out('Container')),
  6874.       f(merge,
  6875.         X15:containers:'ContainerContainer',
  6876.         X16:out('Container')),
  6877.       f(recolor, 'TWO':value:'Integer', X16:'Patch', X17:out('Object')),
  6878.       f(paint, IN:'Grid', X17:obj:'Object', OUT:out('Grid'))
  6879.     ].
  6880. solve(a8d7556c, IN, OUT) :-
  6881.     [ f(initset, (0, 0):value:'Any', X1:out('FrozenSet')),
  6882.       f(recolor, 'ZERO':value:'Integer', X1:'Patch', X2:out('Object')),
  6883.       f(upscale, X2:'Element', 'TWO':factor:'Integer', X3:out('Element')),
  6884.       f(occurrences, IN:'Grid', X3:obj:'Object', X4:out('Indices')),
  6885.       f(lbind, shift, X3:fixed:'Any', X5:out('Callable')),
  6886.       f(mapply,
  6887.         X5,
  6888.         X4:container:'ContainerContainer',
  6889.         X6:out('FrozenSet')),
  6890.       f(fill,
  6891.         IN:'Grid',
  6892.         'TWO':value:'Integer',
  6893.         X6:'Patch',
  6894.         X7:out('Grid')),
  6895.       f(add, 'SIX':a:'Numerical', 'SIX':b:'Numerical', X8:out('Numerical')),
  6896.       f(astuple, 'EIGHT':a:'Integer', X8:b:'Integer', X9:out('Point')),
  6897.       f(index, X7:'Grid', X9:loc:'Point', X10:out('Integer')),
  6898.       f(equality, X10:a:'Any', 'TWO':b:'Any', returns=X11),
  6899.       f(initset, X9:value:'Any', X12:out('FrozenSet')),
  6900.       f(add, X9:a:'Numerical', (1, 0):b:'Numerical', X13:out('Numerical')),
  6901.       f(insert,
  6902.         X13:value:'Any',
  6903.         X12:container:'FrozenSet',
  6904.         X14:out('FrozenSet')),
  6905.       f(toobject, X14:'Patch', X7:'Grid', X15:out('Object')),
  6906.       f(toobject, X14:'Patch', IN:'Grid', X16:out('Object')),
  6907.       f(branch,
  6908.         condition=X11,
  6909.         X16:a:'Any',
  6910.         X15:b:'Any',
  6911.         X17:out('Any')),
  6912.       f(paint, X7:'Grid', X17:obj:'Object', OUT:out('Grid'))
  6913.     ].
  6914. solve('4938f0c2', IN, OUT) :-
  6915.     [ f(objects,
  6916.         IN:'Grid',
  6917.         univalued=true,
  6918.         diagonal=true,
  6919.         without_bg=true,
  6920.         X1:out('Objects')),
  6921.       f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X2:out('Indices')),
  6922.       f(vmirror, X2:'Piece', X3:out('Piece')),
  6923.       f(height, X2:'Piece', X4:out('Integer')),
  6924.       f(width, X2:'Piece', X5:out('Integer')),
  6925.       f(toivec, X4:i:'Integer', X6:out('Point')),
  6926.       f(tojvec, X5:j:'Integer', X7:out('Point')),
  6927.       f(add, X7:a:'Numerical', (0, 2):b:'Numerical', X8:out('Numerical')),
  6928.       f(add, X6:a:'Numerical', (2, 0):b:'Numerical', X9:out('Numerical')),
  6929.       f(shift, X3:'Patch', X8:directions:'Point', X10:out('Patch')),
  6930.       f(fill,
  6931.         IN:'Grid',
  6932.         'TWO':value:'Integer',
  6933.         X10:'Patch',
  6934.         X11:out('Grid')),
  6935.       f(ofcolor, X11:'Grid', 'TWO':value:'Integer', X12:out('Indices')),
  6936.       f(hmirror, X12:'Piece', X13:out('Piece')),
  6937.       f(shift, X13:'Patch', X9:directions:'Point', X14:out('Patch')),
  6938.       f(fill,
  6939.         X11:'Grid',
  6940.         'TWO':value:'Integer',
  6941.         X14:'Patch',
  6942.         X15:out('Grid')),
  6943.       f(size, X1:'Container', X16:out('Integer')),
  6944.       f(greater, X16:a:'Integer', 'FOUR':b:'Integer', returns=X17),
  6945.       f(branch,
  6946.         condition=X17,
  6947.         IN:a:'Any',
  6948.         X15:b:'Any',
  6949.         OUT:out('Any'))
  6950.     ].
  6951. solve('834ec97d', IN, OUT) :-
  6952.     [ f(asindices, IN:'Grid', X1:out('Indices')),
  6953.       f(objects,
  6954.         IN:'Grid',
  6955.         univalued=true,
  6956.         diagonal=false,
  6957.         without_bg=true,
  6958.         X2:out('Objects')),
  6959.       f(first, X2:'Container', X3:out('Any')),
  6960.       f(shift, X3:'Patch', (1, 0):directions:'Point', X4:out('Patch')),
  6961.       f(fill,
  6962.         IN:'Grid',
  6963.         'ZERO':value:'Integer',
  6964.         X3:'Patch',
  6965.         X5:out('Grid')),
  6966.       f(paint, X5:'Grid', X4:obj:'Object', X6:out('Grid')),
  6967.       f(uppermost, X4:'Patch', X7:out('Integer')),
  6968.       f(leftmost, X4:'Patch', X8:out('Integer')),
  6969.       f(subtract, X8:a:'Numerical', 'TEN':b:'Numerical', X9:out('Numerical')),
  6970.       f(add, X8:a:'Numerical', 'TEN':b:'Numerical', X10:out('Numerical')),
  6971.       f(interval,
  6972.         X9:start:'Integer',
  6973.         X10:stop:'Integer',
  6974.         'TWO':step:'Integer',
  6975.         X11:out('Tuple')),
  6976.       f(lbind, greater, X7:fixed:'Any', X12:out('Callable')),
  6977.       f(compose,
  6978.         X12:outer:'Callable',
  6979.         first:inner:'Callable',
  6980.         X13:out('Callable')),
  6981.       f(rbind, contained, X11:fixed:'Any', X14:out('Callable')),
  6982.       f(compose,
  6983.         X14:outer:'Callable',
  6984.         last:inner:'Callable',
  6985.         X15:out('Callable')),
  6986.       f(sfilter,
  6987.         X1:'Container',
  6988.         X13:condition:'Callable',
  6989.         X16:out('Container')),
  6990.       f(sfilter,
  6991.         X16:'Container',
  6992.         X15:condition:'Callable',
  6993.         X17:out('Container')),
  6994.       f(fill,
  6995.         X6:'Grid',
  6996.         'FOUR':value:'Integer',
  6997.         X17:'Patch',
  6998.         OUT:out('Grid'))
  6999.     ].
  7000. solve('846bdb03', IN, OUT) :-
  7001.     [ f(objects,
  7002.         IN:'Grid',
  7003.         univalued=false,
  7004.         diagonal=false,
  7005.         without_bg=true,
  7006.         X1:out('Objects')),
  7007.       f(rbind, colorcount, 'FOUR':fixed:'Any', X2:out('Callable')),
  7008.       f(matcher, X2, 'ZERO':target:'Any', X3:out('Callable')),
  7009.       f(extract,
  7010.         X1:'Container',
  7011.         X3:condition:'Callable',
  7012.         X4:out('Any')),
  7013.       f(remove, X4:value:'Any', X1:'Container', X5:out('Container')),
  7014.       f(merge, X5:containers:'ContainerContainer', X6:out('Container')),
  7015.       f(subgrid, X6:'Patch', IN:'Grid', X7:out('Grid')),
  7016.       f(index, X7:'Grid', (1, 0):loc:'Point', X8:out('Integer')),
  7017.       f(subgrid, X4:'Patch', IN:'Grid', X9:out('Grid')),
  7018.       f(lefthalf, X9:'Grid', X10:out('Grid')),
  7019.       f(palette, X10:'Element', X11:out('IntegerSet')),
  7020.       f(other, X11:'Container', 'ZERO':value:'Any', X12:out('Any')),
  7021.       f(equality, X8:a:'Any', X12:b:'Any', returns=X13),
  7022.       f(branch,
  7023.         condition=X13,
  7024.         identity:a:'Any',
  7025.         vmirror:b:'Any',
  7026.         X14:out('Any')),
  7027.       f(X14, X4, X15),
  7028.       f(normalize, X15:'Patch', X16:out('Patch')),
  7029.       f(shift, X16:'Patch', (1, 1):directions:'Point', X17:out('Patch')),
  7030.       f(paint, X7:'Grid', X17:obj:'Object', OUT:out('Grid'))
  7031.     ].
  7032. solve('90f3ed37', IN, OUT) :-
  7033.     [ f(objects,
  7034.         IN:'Grid',
  7035.         univalued=true,
  7036.         diagonal=true,
  7037.         without_bg=true,
  7038.         X1:out('Objects')),
  7039.       f(order,
  7040.         X1:'Container',
  7041.         uppermost:compfunc:'Callable',
  7042.         X2:out('Tuple')),
  7043.       f(first, X2:'Container', X3:out('Any')),
  7044.       f(remove, X3:value:'Any', X2:'Container', X4:out('Container')),
  7045.       f(normalize, X3:'Patch', X5:out('Patch')),
  7046.       f(lbind, shift, X5:fixed:'Any', X6:out('Callable')),
  7047.       f(compose,
  7048.         X6:outer:'Callable',
  7049.         ulcorner:inner:'Callable',
  7050.         X7:out('Callable')),
  7051.       f(interval,
  7052.         'TWO':start:'Integer',
  7053.         'NEG_ONE':stop:'Integer',
  7054.         'NEG_ONE':step:'Integer',
  7055.         X8:out('Tuple')),
  7056.       f(apply, tojvec, X8:'Container', X9:out('Container')),
  7057.       f(rbind, apply, X9:fixed:'Any', X10:out('Callable')),
  7058.       f(lbind, compose, size:fixed:'Any', X11:out('Callable')),
  7059.       f(lbind, lbind, intersection:fixed:'Any', X12:out('Callable')),
  7060.       f(compose,
  7061.         X11:outer:'Callable',
  7062.         X12:inner:'Callable',
  7063.         X13:out('Callable')),
  7064.       f(lbind, lbind, shift:fixed:'Any', X14:out('Callable')),
  7065.       f(chain,
  7066.         X10:h:'Callable',
  7067.         X14:g:'Callable',
  7068.         X7:f:'Callable',
  7069.         X15:out('Callable')),
  7070.       f(fork,
  7071.         argmax:outer:'Callable',
  7072.         X15:a:'Callable',
  7073.         X13:b:'Callable',
  7074.         X16:out('Callable')),
  7075.       f(mapply,
  7076.         X16,
  7077.         X4:container:'ContainerContainer',
  7078.         X17:out('FrozenSet')),
  7079.       f(underfill,
  7080.         IN:'Grid',
  7081.         'ONE':value:'Integer',
  7082.         X17:'Patch',
  7083.         OUT:out('Grid'))
  7084.     ].
  7085. solve('8403a5d5', IN, OUT) :-
  7086.     [ f(asindices, IN:'Grid', X1:out('Indices')),
  7087.       f(objects,
  7088.         IN:'Grid',
  7089.         univalued=true,
  7090.         diagonal=false,
  7091.         without_bg=true,
  7092.         X2:out('Objects')),
  7093.       f(first, X2:'Container', X3:out('Any')),
  7094.       f(color, X3:obj:'Object', X4:out('Integer')),
  7095.       f(leftmost, X3:'Patch', X5:out('Integer')),
  7096.       f(interval,
  7097.         X5:start:'Integer',
  7098.         'TEN':stop:'Integer',
  7099.         'TWO':step:'Integer',
  7100.         X6:out('Tuple')),
  7101.       f(rbind, contained, X6:fixed:'Any', X7:out('Callable')),
  7102.       f(compose,
  7103.         X7:outer:'Callable',
  7104.         last:inner:'Callable',
  7105.         X8:out('Callable')),
  7106.       f(sfilter,
  7107.         X1:'Container',
  7108.         X8:condition:'Callable',
  7109.         X9:out('Container')),
  7110.       f(increment, X5:x:'Numerical', X10:out('Numerical')),
  7111.       f(add, X5:a:'Numerical', 'THREE':b:'Numerical', X11:out('Numerical')),
  7112.       f(interval,
  7113.         X10:start:'Integer',
  7114.         'TEN':stop:'Integer',
  7115.         'FOUR':step:'Integer',
  7116.         X12:out('Tuple')),
  7117.       f(interval,
  7118.         X11:start:'Integer',
  7119.         'TEN':stop:'Integer',
  7120.         'FOUR':step:'Integer',
  7121.         X13:out('Tuple')),
  7122.       f(lbind, astuple, 'NINE':fixed:'Any', X14:out('Callable')),
  7123.       f(apply, tojvec, X12:'Container', X15:out('Container')),
  7124.       f(apply, X14, X13:'Container', X16:out('Container')),
  7125.       f(fill,
  7126.         IN:'Grid',
  7127.         X4:value:'Integer',
  7128.         X9:'Patch',
  7129.         X17:out('Grid')),
  7130.       f(fill,
  7131.         X17:'Grid',
  7132.         'FIVE':value:'Integer',
  7133.         X15:'Patch',
  7134.         X18:out('Grid')),
  7135.       f(fill,
  7136.         X18:'Grid',
  7137.         'FIVE':value:'Integer',
  7138.         X16:'Patch',
  7139.         OUT:out('Grid'))
  7140.     ].
  7141. solve(91413438, IN, OUT) :-
  7142.     [ f(colorcount, IN:'Element', 'ZERO':value:'Integer', X1:out('Integer')),
  7143.       f(subtract,
  7144.         'NINE':a:'Numerical',
  7145.         X1:b:'Numerical',
  7146.         X2:out('Numerical')),
  7147.       f(multiply,
  7148.         X1:a:'Numerical',
  7149.         'THREE':b:'Numerical',
  7150.         X3:out('Numerical')),
  7151.       f(multiply,
  7152.         X3:a:'Numerical',
  7153.         X1:b:'Numerical',
  7154.         X4:out('Numerical')),
  7155.       f(subtract,
  7156.         X4:a:'Numerical',
  7157.         'THREE':b:'Numerical',
  7158.         X5:out('Numerical')),
  7159.       f(astuple, 'THREE':a:'Integer', X5:b:'Integer', X6:out('Point')),
  7160.       f(canvas,
  7161.         'ZERO':value:'Integer',
  7162.         X6:dimensions:'Point',
  7163.         X7:out('Grid')),
  7164.       f(hconcat, IN:a:'Grid', X7:b:'Grid', X8:out('Grid')),
  7165.       f(objects,
  7166.         X8:'Grid',
  7167.         univalued=true,
  7168.         diagonal=true,
  7169.         without_bg=true,
  7170.         X9:out('Objects')),
  7171.       f(first, X9:'Container', X10:out('Any')),
  7172.       f(lbind, shift, X10:fixed:'Any', X11:out('Callable')),
  7173.       f(compose,
  7174.         X11:outer:'Callable',
  7175.         tojvec:inner:'Callable',
  7176.         X12:out('Callable')),
  7177.       f(interval,
  7178.         'ZERO':start:'Integer',
  7179.         X2:stop:'Integer',
  7180.         'ONE':step:'Integer',
  7181.         X13:out('Tuple')),
  7182.       f(rbind, multiply, 'THREE':fixed:'Any', X14:out('Callable')),
  7183.       f(apply, X14, X13:'Container', X15:out('Container')),
  7184.       f(mapply,
  7185.         X12,
  7186.         X15:container:'ContainerContainer',
  7187.         X16:out('FrozenSet')),
  7188.       f(paint, X8:'Grid', X16:obj:'Object', X17:out('Grid')),
  7189.       f(hsplit, X17:'Grid', X1:n:'Integer', X18:out('Tuple')),
  7190.       f(merge,
  7191.         X18:containers:'ContainerContainer',
  7192.         OUT:out('Container'))
  7193.     ].
  7194. solve('539a4f51', IN, OUT) :-
  7195.     [ f(shape, IN:'Piece', X1:out('Point')),
  7196.       f(index, IN:'Grid', (0, 0):loc:'Point', X2:out('Integer')),
  7197.       f(colorcount, IN:'Element', 'ZERO':value:'Integer', X3:out('Integer')),
  7198.       f(decrement, X1:x:'Numerical', X4:out('Numerical')),
  7199.       f(positive, X3:x:'Integer', returns=X5),
  7200.       f(branch,
  7201.         condition=X5,
  7202.         X4:a:'Any',
  7203.         X1:b:'Any',
  7204.         X6:out('Any')),
  7205.       f(crop,
  7206.         IN:'Grid',
  7207.         (0, 0):start:'Point',
  7208.         X6:dims:'Point',
  7209.         X7:out('Grid')),
  7210.       f(width, X7:'Piece', X8:out('Integer')),
  7211.       f(astuple, 'ONE':a:'Integer', X8:b:'Integer', X9:out('Point')),
  7212.       f(crop,
  7213.         X7:'Grid',
  7214.         (0, 0):start:'Point',
  7215.         X9:dims:'Point',
  7216.         X10:out('Grid')),
  7217.       f(vupscale, X10:'Grid', X8:factor:'Integer', X11:out('Grid')),
  7218.       f(dmirror, X11:'Piece', X12:out('Piece')),
  7219.       f(hconcat, X7:a:'Grid', X11:b:'Grid', X13:out('Grid')),
  7220.       f(hconcat, X12:a:'Grid', X7:b:'Grid', X14:out('Grid')),
  7221.       f(vconcat, X13:a:'Grid', X14:b:'Grid', X15:out('Grid')),
  7222.       f(asobject, X15:'Grid', X16:out('Object')),
  7223.       f(multiply, (1, 1):a:'Numerical', 'TEN':b:'Numerical', X17:out('Numerical')),
  7224.       f(canvas,
  7225.         X2:value:'Integer',
  7226.         X17:dimensions:'Point',
  7227.         X18:out('Grid')),
  7228.       f(paint, X18:'Grid', X16:obj:'Object', OUT:out('Grid'))
  7229.     ].
  7230. solve('5daaa586', IN, OUT) :-
  7231.     [ f(objects,
  7232.         IN:'Grid',
  7233.         univalued=true,
  7234.         diagonal=false,
  7235.         without_bg=false,
  7236.         X1:out('Objects')),
  7237.       f(colorfilter,
  7238.         X1:objs:'Objects',
  7239.         'ZERO':value:'Integer',
  7240.         X2:out('Objects')),
  7241.       f(rbind, bordering, IN:fixed:'Any', X3:out('Callable')),
  7242.       f(compose,
  7243.         flip:outer:'Callable',
  7244.         X3:inner:'Callable',
  7245.         X4:out('Callable')),
  7246.       f(extract,
  7247.         X2:'Container',
  7248.         X4:condition:'Callable',
  7249.         X5:out('Any')),
  7250.       f(outbox, X5:'Patch', X6:out('Indices')),
  7251.       f(subgrid, X6:'Patch', IN:'Grid', X7:out('Grid')),
  7252.       f(fgpartition, X7:'Grid', X8:out('Objects')),
  7253.       f(argmax, X8:'Container', size:compfunc:'Callable', X9:out('Any')),
  7254.       f(color, X9:obj:'Object', X10:out('Integer')),
  7255.       f(toindices, X9:'Patch', X11:out('Indices')),
  7256.       f(prapply, connect, X11, X11, X12),
  7257.       f(mfilter, X12:'Container', vline, X13:out('FrozenSet')),
  7258.       f(mfilter, X12:'Container', hline, X14:out('FrozenSet')),
  7259.       f(size, X13:'Container', X15:out('Integer')),
  7260.       f(size, X14:'Container', X16:out('Integer')),
  7261.       f(greater, X15:a:'Integer', X16:b:'Integer', returns=X17),
  7262.       f(branch,
  7263.         condition=X17,
  7264.         X13:a:'Any',
  7265.         X14:b:'Any',
  7266.         X18:out('Any')),
  7267.       f(fill,
  7268.         X7:'Grid',
  7269.         X10:value:'Integer',
  7270.         X18:'Patch',
  7271.         OUT:out('Grid'))
  7272.     ].
  7273. solve('3bdb4ada', IN, OUT) :-
  7274.     [ f(objects,
  7275.         IN:'Grid',
  7276.         univalued=true,
  7277.         diagonal=false,
  7278.         without_bg=true,
  7279.         X1:out('Objects')),
  7280.       f(totuple, X1:container:'FrozenSet', X2:out('Tuple')),
  7281.       f(compose,
  7282.         increment:outer:'Callable',
  7283.         ulcorner:inner:'Callable',
  7284.         X3:out('Callable')),
  7285.       f(compose,
  7286.         decrement:outer:'Callable',
  7287.         lrcorner:inner:'Callable',
  7288.         X4:out('Callable')),
  7289.       f(apply, X3, X2:'Container', X5:out('Container')),
  7290.       f(apply, X4, X2:'Container', X6:out('Container')),
  7291.       f(papply, connect, X5:a:'Tuple', X6:b:'Tuple', X7:out('Tuple')),
  7292.       f(apply, last, X5:'Container', X8:out('Container')),
  7293.       f(compose,
  7294.         last:outer:'Callable',
  7295.         first:inner:'Callable',
  7296.         X9:out('Callable')),
  7297.       f(power, last, 'TWO':n:'Integer', X10:out('Callable')),
  7298.       f(fork,
  7299.         subtract:outer:'Callable',
  7300.         X9:a:'Callable',
  7301.         X10:b:'Callable',
  7302.         X11:out('Callable')),
  7303.       f(compose,
  7304.         even:outer:'Callable',
  7305.         X11:inner:'Callable',
  7306.         X12:out('Callable')),
  7307.       f(lbind, rbind, astuple:fixed:'Any', X13:out('Callable')),
  7308.       f(lbind, compose, X12:fixed:'Any', X14:out('Callable')),
  7309.       f(compose,
  7310.         X14:outer:'Callable',
  7311.         X13:inner:'Callable',
  7312.         X15:out('Callable')),
  7313.       f(fork,
  7314.         sfilter:outer:'Callable',
  7315.         first:a:'Callable',
  7316.         X15:b:'Callable',
  7317.         X16:out('Callable')),
  7318.       f(pair, X7:a:'Tuple', X8:b:'Tuple', X17:out('TupleTuple')),
  7319.       f(mapply,
  7320.         X16,
  7321.         X17:container:'ContainerContainer',
  7322.         X18:out('FrozenSet')),
  7323.       f(fill,
  7324.         IN:'Grid',
  7325.         'ZERO':value:'Integer',
  7326.         X18:'Patch',
  7327.         OUT:out('Grid'))
  7328.     ].
  7329. solve(ec883f72, IN, OUT) :-
  7330.     [ f(palette, IN:'Element', X1:out('IntegerSet')),
  7331.       f(objects,
  7332.         IN:'Grid',
  7333.         univalued=true,
  7334.         diagonal=true,
  7335.         without_bg=true,
  7336.         X2:out('Objects')),
  7337.       f(fork,
  7338.         multiply:outer:'Callable',
  7339.         height:a:'Callable',
  7340.         width:b:'Callable',
  7341.         X3:out('Callable')),
  7342.       f(argmax,
  7343.         X2:'Container',
  7344.         X3:compfunc:'Callable',
  7345.         X4:out('Any')),
  7346.       f(color, X4:obj:'Object', X5:out('Integer')),
  7347.       f(remove, 'ZERO':value:'Any', X1:'Container', X6:out('Container')),
  7348.       f(other, X6:'Container', X5:value:'Any', X7:out('Any')),
  7349.       f(lrcorner, X4:'Patch', X8:out('Point')),
  7350.       f(llcorner, X4:'Patch', X9:out('Point')),
  7351.       f(urcorner, X4:'Patch', X10:out('Point')),
  7352.       f(ulcorner, X4:'Patch', X11:out('Point')),
  7353.       f(shoot,
  7354.         X8:start:'Point',
  7355.         (1, 1):direction:'Point',
  7356.         X12:out('Indices')),
  7357.       f(shoot,
  7358.         X9:start:'Point',
  7359.         (1, -1):direction:'Point',
  7360.         X13:out('Indices')),
  7361.       f(shoot,
  7362.         X10:start:'Point',
  7363.         (-1, 1):direction:'Point',
  7364.         X14:out('Indices')),
  7365.       f(shoot,
  7366.         X11:start:'Point',
  7367.         (-1, -1):direction:'Point',
  7368.         X15:out('Indices')),
  7369.       f(combine,
  7370.         X12:a:'Container',
  7371.         X13:b:'Container',
  7372.         X16:out('Container')),
  7373.       f(combine,
  7374.         X14:a:'Container',
  7375.         X15:b:'Container',
  7376.         X17:out('Container')),
  7377.       f(combine,
  7378.         X16:a:'Container',
  7379.         X17:b:'Container',
  7380.         X18:out('Container')),
  7381.       f(underfill,
  7382.         IN:'Grid',
  7383.         X7:value:'Integer',
  7384.         X18:'Patch',
  7385.         OUT:out('Grid'))
  7386.     ].
  7387. solve('2bee17df', IN, OUT) :-
  7388.     [ f(height, IN:'Piece', X1:out('Integer')),
  7389.       f(rot90, IN:'Grid', X2:out('Grid')),
  7390.       f(subtract, X1:a:'Numerical', 'TWO':b:'Numerical', X3:out('Numerical')),
  7391.       f(interval,
  7392.         'ZERO':start:'Integer',
  7393.         X1:stop:'Integer',
  7394.         'ONE':step:'Integer',
  7395.         X4:out('Tuple')),
  7396.       f(rbind, colorcount, 'ZERO':fixed:'Any', X5:out('Callable')),
  7397.       f(matcher, X5, X3:target:'Any', X6:out('Callable')),
  7398.       f(rbind, vsplit, X1:fixed:'Any', X7:out('Callable')),
  7399.       f(lbind, apply, X6:fixed:'Any', X8:out('Callable')),
  7400.       f(compose,
  7401.         X8:outer:'Callable',
  7402.         X7:inner:'Callable',
  7403.         X9:out('Callable')),
  7404.       f(X9, IN, X10),
  7405.       f(pair, X4:a:'Tuple', X10:b:'Tuple', X11:out('TupleTuple')),
  7406.       f(sfilter,
  7407.         X11:'Container',
  7408.         last:condition:'Callable',
  7409.         X12:out('Container')),
  7410.       f(mapply,
  7411.         hfrontier,
  7412.         X12:container:'ContainerContainer',
  7413.         X13:out('FrozenSet')),
  7414.       f(X9, X2, X14),
  7415.       f(pair, X14:a:'Tuple', X4:b:'Tuple', X15:out('TupleTuple')),
  7416.       f(sfilter,
  7417.         X15:'Container',
  7418.         first:condition:'Callable',
  7419.         X16:out('Container')),
  7420.       f(mapply,
  7421.         vfrontier,
  7422.         X16:container:'ContainerContainer',
  7423.         X17:out('FrozenSet')),
  7424.       f(astuple, X13:a:'Integer', X17:b:'Integer', X18:out('Point')),
  7425.       f(merge,
  7426.         X18:containers:'ContainerContainer',
  7427.         X19:out('Container')),
  7428.       f(underfill,
  7429.         IN:'Grid',
  7430.         'THREE':value:'Integer',
  7431.         X19:'Patch',
  7432.         OUT:out('Grid'))
  7433.     ].
  7434. solve(e8dc4411, IN, OUT) :-
  7435.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  7436.       f(ofcolor, IN:'Grid', 'ZERO':value:'Integer', X2:out('Indices')),
  7437.       f(ofcolor, IN:'Grid', X1:value:'Integer', X3:out('Indices')),
  7438.       f(position, X2:a:'Patch', X3:b:'Patch', X4:out('Point')),
  7439.       f(fork,
  7440.         connect:outer:'Callable',
  7441.         ulcorner:a:'Callable',
  7442.         lrcorner:b:'Callable',
  7443.         X5:out('Callable')),
  7444.       f(X5, X2, X6),
  7445.       f(intersection,
  7446.         X2:a:'FrozenSet',
  7447.         X6:b:'FrozenSet',
  7448.         X7:out('FrozenSet')),
  7449.       f(equality, X6:a:'Any', X7:b:'Any', returns=X8),
  7450.       f(fork,
  7451.         subtract:outer:'Callable',
  7452.         identity:a:'Callable',
  7453.         crement:b:'Callable',
  7454.         X9:out('Callable')),
  7455.       f(fork,
  7456.         add:outer:'Callable',
  7457.         identity:a:'Callable',
  7458.         X9:b:'Callable',
  7459.         X10:out('Callable')),
  7460.       f(branch,
  7461.         condition=X8,
  7462.         identity:a:'Any',
  7463.         X10:b:'Any',
  7464.         X11:out('Any')),
  7465.       f(shape, X2:'Piece', X12:out('Point')),
  7466.       f(multiply,
  7467.         X12:a:'Numerical',
  7468.         X4:b:'Numerical',
  7469.         X13:out('Numerical')),
  7470.       f(apply, X11, X13:'Container', X14:out('Container')),
  7471.       f(interval,
  7472.         'ONE':start:'Integer',
  7473.         'FIVE':stop:'Integer',
  7474.         'ONE':step:'Integer',
  7475.         X15:out('Tuple')),
  7476.       f(lbind, multiply, X14:fixed:'Any', X16:out('Callable')),
  7477.       f(apply, X16, X15:'Container', X17:out('Container')),
  7478.       f(lbind, shift, X2:fixed:'Any', X18:out('Callable')),
  7479.       f(mapply,
  7480.         X18,
  7481.         X17:container:'ContainerContainer',
  7482.         X19:out('FrozenSet')),
  7483.       f(fill,
  7484.         IN:'Grid',
  7485.         X1:value:'Integer',
  7486.         X19:'Patch',
  7487.         OUT:out('Grid'))
  7488.     ].
  7489. solve(e40b9e2f, IN, OUT) :-
  7490.     [ f(objects,
  7491.         IN:'Grid',
  7492.         univalued=false,
  7493.         diagonal=true,
  7494.         without_bg=true,
  7495.         X1:out('Objects')),
  7496.       f(neighbors, (0, 0):loc:'Point', X2:out('Indices')),
  7497.       f(mapply,
  7498.         neighbors,
  7499.         X2:container:'ContainerContainer',
  7500.         X3:out('FrozenSet')),
  7501.       f(first, X1:'Container', X4:out('Any')),
  7502.       f(lbind, intersection, X4:fixed:'Any', X5:out('Callable')),
  7503.       f(compose,
  7504.         hmirror:outer:'Callable',
  7505.         vmirror:inner:'Callable',
  7506.         X6:out('Callable')),
  7507.       f(X6, X4, X7),
  7508.       f(lbind, shift, X7:fixed:'Any', X8:out('Callable')),
  7509.       f(apply, X8, X3:'Container', X9:out('Container')),
  7510.       f(argmax,
  7511.         X9:'Container',
  7512.         X5:compfunc:'Callable',
  7513.         X10:out('Any')),
  7514.       f(paint, IN:'Grid', X10:obj:'Object', X11:out('Grid')),
  7515.       f(objects,
  7516.         X11:'Grid',
  7517.         univalued=false,
  7518.         diagonal=true,
  7519.         without_bg=true,
  7520.         X12:out('Objects')),
  7521.       f(first, X12:'Container', X13:out('Any')),
  7522.       f(compose,
  7523.         size:outer:'Callable',
  7524.         X5:inner:'Callable',
  7525.         X14:out('Callable')),
  7526.       f(compose,
  7527.         vmirror:outer:'Callable',
  7528.         dmirror:inner:'Callable',
  7529.         X15:out('Callable')),
  7530.       f(X15, X13, X16),
  7531.       f(lbind, shift, X16:fixed:'Any', X17:out('Callable')),
  7532.       f(apply, X17, X3:'Container', X18:out('Container')),
  7533.       f(argmax,
  7534.         X18:'Container',
  7535.         X14:compfunc:'Callable',
  7536.         X19:out('Any')),
  7537.       f(paint, X11:'Grid', X19:obj:'Object', OUT:out('Grid'))
  7538.     ].
  7539. solve(29623171, IN, OUT) :-
  7540.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  7541.       f(interval,
  7542.         'ZERO':start:'Integer',
  7543.         'NINE':stop:'Integer',
  7544.         'FOUR':step:'Integer',
  7545.         X2:out('Tuple')),
  7546.       f(product,
  7547.         X2:a:'Container',
  7548.         X2:b:'Container',
  7549.         X3:out('FrozenSet')),
  7550.       f(rbind, add, 'THREE':fixed:'Any', X4:out('Callable')),
  7551.       f(rbind, interval, 'ONE':fixed:'Any', X5:out('Callable')),
  7552.       f(fork,
  7553.         X5:outer:'Callable',
  7554.         identity:a:'Callable',
  7555.         X4:b:'Callable',
  7556.         X6:out('Callable')),
  7557.       f(compose,
  7558.         X6:outer:'Callable',
  7559.         first:inner:'Callable',
  7560.         X7:out('Callable')),
  7561.       f(compose,
  7562.         X6:outer:'Callable',
  7563.         last:inner:'Callable',
  7564.         X8:out('Callable')),
  7565.       f(fork,
  7566.         product:outer:'Callable',
  7567.         X7:a:'Callable',
  7568.         X8:b:'Callable',
  7569.         X9:out('Callable')),
  7570.       f(rbind, colorcount, X1:fixed:'Any', X10:out('Callable')),
  7571.       f(rbind, toobject, IN:fixed:'Any', X11:out('Callable')),
  7572.       f(compose,
  7573.         X10:outer:'Callable',
  7574.         X11:inner:'Callable',
  7575.         X12:out('Callable')),
  7576.       f(apply, X9, X3:'Container', X13:out('Container')),
  7577.       f(valmax,
  7578.         X13:'Container',
  7579.         X12:compfunc:'Callable',
  7580.         X14:out('Integer')),
  7581.       f(matcher, X12, X14:target:'Any', X15:out('Callable')),
  7582.       f(compose,
  7583.         flip:outer:'Callable',
  7584.         X15:inner:'Callable',
  7585.         X16:out('Callable')),
  7586.       f(mfilter, X13:'Container', X15, X17:out('FrozenSet')),
  7587.       f(mfilter, X13:'Container', X16, X18:out('FrozenSet')),
  7588.       f(fill,
  7589.         IN:'Grid',
  7590.         X1:value:'Integer',
  7591.         X17:'Patch',
  7592.         X19:out('Grid')),
  7593.       f(fill,
  7594.         X19:'Grid',
  7595.         'ZERO':value:'Integer',
  7596.         X18:'Patch',
  7597.         OUT:out('Grid'))
  7598.     ].
  7599. solve(a2fd1cf0, IN, OUT) :-
  7600.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  7601.       f(ofcolor, IN:'Grid', 'THREE':value:'Integer', X2:out('Indices')),
  7602.       f(uppermost, X1:'Patch', X3:out('Integer')),
  7603.       f(leftmost, X1:'Patch', X4:out('Integer')),
  7604.       f(uppermost, X2:'Patch', X5:out('Integer')),
  7605.       f(leftmost, X2:'Patch', X6:out('Integer')),
  7606.       f(astuple, X3:a:'Integer', X5:b:'Integer', X7:out('Point')),
  7607.       f(minimum, X7:container:'IntegerSet', X8:out('Integer')),
  7608.       f(maximum, X7:container:'IntegerSet', X9:out('Integer')),
  7609.       f(astuple, X8:a:'Integer', X6:b:'Integer', X10:out('Point')),
  7610.       f(astuple, X9:a:'Integer', X6:b:'Integer', X11:out('Point')),
  7611.       f(connect, X10:a:'Point', X11:b:'Point', X12:out('Indices')),
  7612.       f(astuple, X4:a:'Integer', X6:b:'Integer', X13:out('Point')),
  7613.       f(minimum, X13:container:'IntegerSet', X14:out('Integer')),
  7614.       f(maximum, X13:container:'IntegerSet', X15:out('Integer')),
  7615.       f(astuple, X3:a:'Integer', X14:b:'Integer', X16:out('Point')),
  7616.       f(astuple, X3:a:'Integer', X15:b:'Integer', X17:out('Point')),
  7617.       f(connect, X16:a:'Point', X17:b:'Point', X18:out('Indices')),
  7618.       f(combine,
  7619.         X12:a:'Container',
  7620.         X18:b:'Container',
  7621.         X19:out('Container')),
  7622.       f(underfill,
  7623.         IN:'Grid',
  7624.         'EIGHT':value:'Integer',
  7625.         X19:'Patch',
  7626.         OUT:out('Grid'))
  7627.     ].
  7628. solve(b0c4d837, IN, OUT) :-
  7629.     [ f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X1:out('Indices')),
  7630.       f(ofcolor, IN:'Grid', 'EIGHT':value:'Integer', X2:out('Indices')),
  7631.       f(height, X1:'Piece', X3:out('Integer')),
  7632.       f(decrement, X3:x:'Numerical', X4:out('Numerical')),
  7633.       f(height, X2:'Piece', X5:out('Integer')),
  7634.       f(subtract,
  7635.         X4:a:'Numerical',
  7636.         X5:b:'Numerical',
  7637.         X6:out('Numerical')),
  7638.       f(astuple, 'ONE':a:'Integer', X6:b:'Integer', X7:out('Point')),
  7639.       f(canvas,
  7640.         'EIGHT':value:'Integer',
  7641.         X7:dimensions:'Point',
  7642.         X8:out('Grid')),
  7643.       f(subtract, 'SIX':a:'Numerical', X6:b:'Numerical', X9:out('Numerical')),
  7644.       f(astuple, 'ONE':a:'Integer', X9:b:'Integer', X10:out('Point')),
  7645.       f(canvas,
  7646.         'ZERO':value:'Integer',
  7647.         X10:dimensions:'Point',
  7648.         X11:out('Grid')),
  7649.       f(hconcat, X8:a:'Grid', X11:b:'Grid', X12:out('Grid')),
  7650.       f(hsplit, X12:'Grid', 'TWO':n:'Integer', X13:out('Tuple')),
  7651.       f(first, X13:'Container', X14:out('Any')),
  7652.       f(last, X13:'Container', X15:out('Any')),
  7653.       f(vmirror, X15:'Piece', X16:out('Piece')),
  7654.       f(vconcat, X14:a:'Grid', X16:b:'Grid', X17:out('Grid')),
  7655.       f(astuple, 'ONE':a:'Integer', 'THREE':b:'Integer', X18:out('Point')),
  7656.       f(canvas,
  7657.         'ZERO':value:'Integer',
  7658.         X18:dimensions:'Point',
  7659.         X19:out('Grid')),
  7660.       f(vconcat, X17:a:'Grid', X19:b:'Grid', OUT:out('Grid'))
  7661.     ].
  7662. solve('8731374e', IN, OUT) :-
  7663.     [ f(objects,
  7664.         IN:'Grid',
  7665.         univalued=true,
  7666.         diagonal=false,
  7667.         without_bg=false,
  7668.         X1:out('Objects')),
  7669.       f(argmax, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  7670.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  7671.       f(height, X3:'Piece', X4:out('Integer')),
  7672.       f(width, X3:'Piece', X5:out('Integer')),
  7673.       f(vsplit, X3:'Grid', X4:n:'Integer', X6:out('Tuple')),
  7674.       f(lbind, greater, 'FOUR':fixed:'Any', X7:out('Callable')),
  7675.       f(compose,
  7676.         X7:outer:'Callable',
  7677.         numcolors:inner:'Callable',
  7678.         X8:out('Callable')),
  7679.       f(sfilter,
  7680.         X6:'Container',
  7681.         X8:condition:'Callable',
  7682.         X9:out('Container')),
  7683.       f(merge, X9:containers:'ContainerContainer', X10:out('Container')),
  7684.       f(rot90, X10:'Grid', X11:out('Grid')),
  7685.       f(vsplit, X11:'Grid', X5:n:'Integer', X12:out('Tuple')),
  7686.       f(sfilter,
  7687.         X12:'Container',
  7688.         X8:condition:'Callable',
  7689.         X13:out('Container')),
  7690.       f(merge,
  7691.         X13:containers:'ContainerContainer',
  7692.         X14:out('Container')),
  7693.       f(rot270, X14:'Grid', X15:out('Grid')),
  7694.       f(leastcolor, X15:'Element', X16:out('Integer')),
  7695.       f(ofcolor, X15:'Grid', X16:value:'Integer', X17:out('Indices')),
  7696.       f(fork,
  7697.         combine:outer:'Callable',
  7698.         vfrontier:a:'Callable',
  7699.         hfrontier:b:'Callable',
  7700.         X18:out('Callable')),
  7701.       f(mapply,
  7702.         X18,
  7703.         X17:container:'ContainerContainer',
  7704.         X19:out('FrozenSet')),
  7705.       f(fill,
  7706.         X15:'Grid',
  7707.         X16:value:'Integer',
  7708.         X19:'Patch',
  7709.         OUT:out('Grid'))
  7710.     ].
  7711. solve('272f95fa', IN, OUT) :-
  7712.     [ f(objects,
  7713.         IN:'Grid',
  7714.         univalued=true,
  7715.         diagonal=false,
  7716.         without_bg=false,
  7717.         X1:out('Objects')),
  7718.       f(colorfilter,
  7719.         X1:objs:'Objects',
  7720.         'ZERO':value:'Integer',
  7721.         X2:out('Objects')),
  7722.       f(apply, toindices, X2:'Container', X3:out('Container')),
  7723.       f(rbind, bordering, IN:fixed:'Any', X4:out('Callable')),
  7724.       f(compose,
  7725.         flip:outer:'Callable',
  7726.         X4:inner:'Callable',
  7727.         X5:out('Callable')),
  7728.       f(extract,
  7729.         X3:'Container',
  7730.         X5:condition:'Callable',
  7731.         X6:out('Any')),
  7732.       f(remove, X6:value:'Any', X3:'Container', X7:out('Container')),
  7733.       f(lbind, vmatching, X6:fixed:'Any', X8:out('Callable')),
  7734.       f(lbind, hmatching, X6:fixed:'Any', X9:out('Callable')),
  7735.       f(sfilter,
  7736.         X7:'Container',
  7737.         X8:condition:'Callable',
  7738.         X10:out('Container')),
  7739.       f(sfilter,
  7740.         X7:'Container',
  7741.         X9:condition:'Callable',
  7742.         X11:out('Container')),
  7743.       f(argmin,
  7744.         X10:'Container',
  7745.         uppermost:compfunc:'Callable',
  7746.         X12:out('Any')),
  7747.       f(argmax,
  7748.         X10:'Container',
  7749.         uppermost:compfunc:'Callable',
  7750.         X13:out('Any')),
  7751.       f(argmin,
  7752.         X11:'Container',
  7753.         leftmost:compfunc:'Callable',
  7754.         X14:out('Any')),
  7755.       f(argmax,
  7756.         X11:'Container',
  7757.         leftmost:compfunc:'Callable',
  7758.         X15:out('Any')),
  7759.       f(fill,
  7760.         IN:'Grid',
  7761.         'SIX':value:'Integer',
  7762.         X6:'Patch',
  7763.         X16:out('Grid')),
  7764.       f(fill,
  7765.         X16:'Grid',
  7766.         'TWO':value:'Integer',
  7767.         X12:'Patch',
  7768.         X17:out('Grid')),
  7769.       f(fill,
  7770.         X17:'Grid',
  7771.         'ONE':value:'Integer',
  7772.         X13:'Patch',
  7773.         X18:out('Grid')),
  7774.       f(fill,
  7775.         X18:'Grid',
  7776.         'FOUR':value:'Integer',
  7777.         X14:'Patch',
  7778.         X19:out('Grid')),
  7779.       f(fill,
  7780.         X19:'Grid',
  7781.         'THREE':value:'Integer',
  7782.         X15:'Patch',
  7783.         OUT:out('Grid'))
  7784.     ].
  7785. solve(db93a21d, IN, OUT) :-
  7786.     [ f(objects,
  7787.         IN:'Grid',
  7788.         univalued=true,
  7789.         diagonal=true,
  7790.         without_bg=true,
  7791.         X1:out('Objects')),
  7792.       f(ofcolor, IN:'Grid', 'NINE':value:'Integer', X2:out('Indices')),
  7793.       f(colorfilter,
  7794.         X1:objs:'Objects',
  7795.         'NINE':value:'Integer',
  7796.         X3:out('Objects')),
  7797.       f(rbind, shoot, (1, 0):fixed:'Any', X4:out('Callable')),
  7798.       f(mapply,
  7799.         X4,
  7800.         X2:container:'ContainerContainer',
  7801.         X5:out('FrozenSet')),
  7802.       f(underfill,
  7803.         IN:'Grid',
  7804.         'ONE':value:'Integer',
  7805.         X5:'Patch',
  7806.         X6:out('Grid')),
  7807.       f(compose,
  7808.         halve:outer:'Callable',
  7809.         width:inner:'Callable',
  7810.         X7:out('Callable')),
  7811.       f(rbind, greater, 'ONE':fixed:'Any', X8:out('Callable')),
  7812.       f(compose,
  7813.         X8:outer:'Callable',
  7814.         X7:inner:'Callable',
  7815.         X9:out('Callable')),
  7816.       f(matcher, X7, 'THREE':target:'Any', X10:out('Callable')),
  7817.       f(power, outbox, 'TWO':n:'Integer', X11:out('Callable')),
  7818.       f(power, outbox, 'THREE':n:'Integer', X12:out('Callable')),
  7819.       f(mapply,
  7820.         outbox,
  7821.         X3:container:'ContainerContainer',
  7822.         X13:out('FrozenSet')),
  7823.       f(sfilter,
  7824.         X3:'Container',
  7825.         X9:condition:'Callable',
  7826.         X14:out('Container')),
  7827.       f(sfilter,
  7828.         X3:'Container',
  7829.         X10:condition:'Callable',
  7830.         X15:out('Container')),
  7831.       f(mapply,
  7832.         X11,
  7833.         X14:container:'ContainerContainer',
  7834.         X16:out('FrozenSet')),
  7835.       f(mapply,
  7836.         X12,
  7837.         X15:container:'ContainerContainer',
  7838.         X17:out('FrozenSet')),
  7839.       f(fill,
  7840.         X6:'Grid',
  7841.         'THREE':value:'Integer',
  7842.         X13:'Patch',
  7843.         X18:out('Grid')),
  7844.       f(fill,
  7845.         X18:'Grid',
  7846.         'THREE':value:'Integer',
  7847.         X16:'Patch',
  7848.         X19:out('Grid')),
  7849.       f(fill,
  7850.         X19:'Grid',
  7851.         'THREE':value:'Integer',
  7852.         X17:'Patch',
  7853.         OUT:out('Grid'))
  7854.     ].
  7855. solve('53b68214', IN, OUT) :-
  7856.     [ f(width, IN:'Piece', X1:out('Integer')),
  7857.       f(objects,
  7858.         IN:'Grid',
  7859.         univalued=true,
  7860.         diagonal=true,
  7861.         without_bg=true,
  7862.         X2:out('Objects')),
  7863.       f(first, X2:'Container', X3:out('Any')),
  7864.       f(vperiod, X3:obj:'Object', X4:out('Integer')),
  7865.       f(toivec, X4:i:'Integer', X5:out('Point')),
  7866.       f(interval,
  7867.         'ZERO':start:'Integer',
  7868.         'NINE':stop:'Integer',
  7869.         'ONE':step:'Integer',
  7870.         X6:out('Tuple')),
  7871.       f(lbind, multiply, X5:fixed:'Any', X7:out('Callable')),
  7872.       f(apply, X7, X6:'Container', X8:out('Container')),
  7873.       f(lbind, shift, X3:fixed:'Any', X9:out('Callable')),
  7874.       f(mapply,
  7875.         X9,
  7876.         X8:container:'ContainerContainer',
  7877.         X10:out('FrozenSet')),
  7878.       f(astuple, X1:a:'Integer', X1:b:'Integer', X11:out('Point')),
  7879.       f(portrait, X3:'Piece', returns=X12),
  7880.       f(shape, X3:'Piece', X13:out('Point')),
  7881.       f(add, (1, 0):a:'Numerical', X13:b:'Numerical', X14:out('Numerical')),
  7882.       f(decrement, X14:x:'Numerical', X15:out('Numerical')),
  7883.       f(shift, X3:'Patch', X15:directions:'Point', X16:out('Patch')),
  7884.       f(branch,
  7885.         condition=X12,
  7886.         X10:a:'Any',
  7887.         X16:b:'Any',
  7888.         X17:out('Any')),
  7889.       f(canvas,
  7890.         'ZERO':value:'Integer',
  7891.         X11:dimensions:'Point',
  7892.         X18:out('Grid')),
  7893.       f(paint, X18:'Grid', X3:obj:'Object', X19:out('Grid')),
  7894.       f(paint, X19:'Grid', X17:obj:'Object', OUT:out('Grid'))
  7895.     ].
  7896. solve(d6ad076f, IN, OUT) :-
  7897.     [ f(objects,
  7898.         IN:'Grid',
  7899.         univalued=true,
  7900.         diagonal=false,
  7901.         without_bg=true,
  7902.         X1:out('Objects')),
  7903.       f(argmin, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  7904.       f(argmax, X1:'Container', size:compfunc:'Callable', X3:out('Any')),
  7905.       f(vmatching, X2:a:'Patch', X3:b:'Patch', returns=X4),
  7906.       f(branch, condition=X4, (1, 0):a:'Any', (0, 1):b:'Any', X5:out('Any')),
  7907.       f(branch,
  7908.         condition=X4,
  7909.         uppermost:a:'Any',
  7910.         leftmost:b:'Any',
  7911.         X6:out('Any')),
  7912.       f(valmax,
  7913.         X1:'Container',
  7914.         X6:compfunc:'Callable',
  7915.         X7:out('Integer')),
  7916.       f(X6, X2, X8),
  7917.       f(equality, X7:a:'Any', X8:b:'Any', returns=X9),
  7918.       f(branch, condition=X9, 'NEG_ONE':a:'Any', 'ONE':b:'Any', X10:out('Any')),
  7919.       f(multiply,
  7920.         X5:a:'Numerical',
  7921.         X10:b:'Numerical',
  7922.         X11:out('Numerical')),
  7923.       f(inbox, X2:'Patch', X12:out('Indices')),
  7924.       f(rbind, shoot, X11:fixed:'Any', X13:out('Callable')),
  7925.       f(mapply,
  7926.         X13,
  7927.         X12:container:'ContainerContainer',
  7928.         X14:out('FrozenSet')),
  7929.       f(underfill,
  7930.         IN:'Grid',
  7931.         'EIGHT':value:'Integer',
  7932.         X14:'Patch',
  7933.         X15:out('Grid')),
  7934.       f(objects,
  7935.         X15:'Grid',
  7936.         univalued=true,
  7937.         diagonal=false,
  7938.         without_bg=true,
  7939.         X16:out('Objects')),
  7940.       f(colorfilter,
  7941.         X16:objs:'Objects',
  7942.         'EIGHT':value:'Integer',
  7943.         X17:out('Objects')),
  7944.       f(rbind, bordering, IN:fixed:'Any', X18:out('Callable')),
  7945.       f(mfilter, X17:'Container', X18, X19:out('FrozenSet')),
  7946.       f(cover, X15:'Grid', X19:'Patch', OUT:out('Grid'))
  7947.     ].
  7948. solve('6cdd2623', IN, OUT) :-
  7949.     [ f(leastcolor, IN:'Element', X1:out('Integer')),
  7950.       f(height, IN:'Piece', X2:out('Integer')),
  7951.       f(width, IN:'Piece', X3:out('Integer')),
  7952.       f(objects,
  7953.         IN:'Grid',
  7954.         univalued=true,
  7955.         diagonal=false,
  7956.         without_bg=true,
  7957.         X4:out('Objects')),
  7958.       f(merge, X4:containers:'ContainerContainer', X5:out('Container')),
  7959.       f(cover, IN:'Grid', X5:'Patch', X6:out('Grid')),
  7960.       f(ofcolor, IN:'Grid', X1:value:'Integer', X7:out('Indices')),
  7961.       f(prapply, connect, X7, X7, X8),
  7962.       f(merge, X8:containers:'ContainerContainer', X9:out('Container')),
  7963.       f(decrement, X2:x:'Numerical', X10:out('Numerical')),
  7964.       f(decrement, X3:x:'Numerical', X11:out('Numerical')),
  7965.       f(lbind, greater, X10:fixed:'Any', X12:out('Callable')),
  7966.       f(lbind, greater, X11:fixed:'Any', X13:out('Callable')),
  7967.       f(fork,
  7968.         both:outer:'Callable',
  7969.         positive:a:'Callable',
  7970.         X12:b:'Callable',
  7971.         X14:out('Callable')),
  7972.       f(compose,
  7973.         X14:outer:'Callable',
  7974.         first:inner:'Callable',
  7975.         X15:out('Callable')),
  7976.       f(fork,
  7977.         both:outer:'Callable',
  7978.         positive:a:'Callable',
  7979.         X13:b:'Callable',
  7980.         X16:out('Callable')),
  7981.       f(compose,
  7982.         X16:outer:'Callable',
  7983.         last:inner:'Callable',
  7984.         X17:out('Callable')),
  7985.       f(fork,
  7986.         both:outer:'Callable',
  7987.         X15:a:'Callable',
  7988.         X17:b:'Callable',
  7989.         X18:out('Callable')),
  7990.       f(sfilter,
  7991.         X9:'Container',
  7992.         X18:condition:'Callable',
  7993.         X19:out('Container')),
  7994.       f(fill,
  7995.         X6:'Grid',
  7996.         X1:value:'Integer',
  7997.         X19:'Patch',
  7998.         X20:out('Grid')),
  7999.       f(fill,
  8000.         X20:'Grid',
  8001.         X1:value:'Integer',
  8002.         X7:'Patch',
  8003.         OUT:out('Grid'))
  8004.     ].
  8005. solve(a3df8b1e, IN, OUT) :-
  8006.     [ f(shape, IN:'Piece', X1:out('Point')),
  8007.       f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X2:out('Indices')),
  8008.       f(first, X2:'Container', X3:out('Any')),
  8009.       f(shoot,
  8010.         X3:start:'Point',
  8011.         (-1, 1):direction:'Point',
  8012.         X4:out('Indices')),
  8013.       f(fill,
  8014.         IN:'Grid',
  8015.         'ONE':value:'Integer',
  8016.         X4:'Patch',
  8017.         X5:out('Grid')),
  8018.       f(ofcolor, X5:'Grid', 'ONE':value:'Integer', X6:out('Indices')),
  8019.       f(urcorner, X6:'Patch', X7:out('Point')),
  8020.       f(shoot,
  8021.         X7:start:'Point',
  8022.         (-1, -1):direction:'Point',
  8023.         X8:out('Indices')),
  8024.       f(fill,
  8025.         X5:'Grid',
  8026.         'ONE':value:'Integer',
  8027.         X8:'Patch',
  8028.         X9:out('Grid')),
  8029.       f(objects,
  8030.         X9:'Grid',
  8031.         univalued=true,
  8032.         diagonal=true,
  8033.         without_bg=true,
  8034.         X10:out('Objects')),
  8035.       f(first, X10:'Container', X11:out('Any')),
  8036.       f(subgrid, X11:'Patch', X9:'Grid', X12:out('Grid')),
  8037.       f(shape, X12:'Piece', X13:out('Point')),
  8038.       f(subtract,
  8039.         X13:a:'Numerical',
  8040.         (1, 0):b:'Numerical',
  8041.         X14:out('Numerical')),
  8042.       f(crop,
  8043.         X12:'Grid',
  8044.         (1, 0):start:'Point',
  8045.         X14:dims:'Point',
  8046.         X15:out('Grid')),
  8047.       f(vconcat, X15:a:'Grid', X15:b:'Grid', X16:out('Grid')),
  8048.       f(vconcat, X16:a:'Grid', X16:b:'Grid', X17:out('Grid')),
  8049.       f(vconcat, X17:a:'Grid', X17:b:'Grid', X18:out('Grid')),
  8050.       f(hmirror, X18:'Piece', X19:out('Piece')),
  8051.       f(crop,
  8052.         X19:'Grid',
  8053.         (0, 0):start:'Point',
  8054.         X1:dims:'Point',
  8055.         X20:out('Grid')),
  8056.       f(hmirror, X20:'Piece', OUT:out('Piece'))
  8057.     ].
  8058. solve('8d510a79', IN, OUT) :-
  8059.     [ f(height, IN:'Piece', X1:out('Integer')),
  8060.       f(halve, X1:n:'Numerical', X2:out('Numerical')),
  8061.       f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X3:out('Indices')),
  8062.       f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X4:out('Indices')),
  8063.       f(ofcolor, IN:'Grid', 'FIVE':value:'Integer', X5:out('Indices')),
  8064.       f(rbind, gravitate, X5:fixed:'Any', X6:out('Callable')),
  8065.       f(compose,
  8066.         X6:outer:'Callable',
  8067.         initset:inner:'Callable',
  8068.         X7:out('Callable')),
  8069.       f(fork,
  8070.         add:outer:'Callable',
  8071.         identity:a:'Callable',
  8072.         X7:b:'Callable',
  8073.         X8:out('Callable')),
  8074.       f(fork,
  8075.         connect:outer:'Callable',
  8076.         identity:a:'Callable',
  8077.         X8:b:'Callable',
  8078.         X9:out('Callable')),
  8079.       f(mapply,
  8080.         X9,
  8081.         X4:container:'ContainerContainer',
  8082.         X10:out('FrozenSet')),
  8083.       f(fill,
  8084.         IN:'Grid',
  8085.         'TWO':value:'Integer',
  8086.         X10:'Patch',
  8087.         X11:out('Grid')),
  8088.       f(rbind, greater, X2:fixed:'Any', X12:out('Callable')),
  8089.       f(compose,
  8090.         X12:outer:'Callable',
  8091.         first:inner:'Callable',
  8092.         X13:out('Callable')),
  8093.       f(sfilter,
  8094.         X3:'Container',
  8095.         X13:condition:'Callable',
  8096.         X14:out('Container')),
  8097.       f(difference,
  8098.         X3:a:'FrozenSet',
  8099.         X14:b:'FrozenSet',
  8100.         X15:out('FrozenSet')),
  8101.       f(rbind, shoot, (-1, 0):fixed:'Any', X16:out('Callable')),
  8102.       f(rbind, shoot, (1, 0):fixed:'Any', X17:out('Callable')),
  8103.       f(mapply,
  8104.         X16,
  8105.         X15:container:'ContainerContainer',
  8106.         X18:out('FrozenSet')),
  8107.       f(mapply,
  8108.         X17,
  8109.         X14:container:'ContainerContainer',
  8110.         X19:out('FrozenSet')),
  8111.       f(combine,
  8112.         X18:a:'Container',
  8113.         X19:b:'Container',
  8114.         X20:out('Container')),
  8115.       f(fill,
  8116.         X11:'Grid',
  8117.         'ONE':value:'Integer',
  8118.         X20:'Patch',
  8119.         OUT:out('Grid'))
  8120.     ].
  8121. solve(cdecee7f, IN, OUT) :-
  8122.     [ f(objects,
  8123.         IN:'Grid',
  8124.         univalued=true,
  8125.         diagonal=false,
  8126.         without_bg=true,
  8127.         X1:out('Objects')),
  8128.       f(astuple, 'ONE':a:'Integer', 'THREE':b:'Integer', X2:out('Point')),
  8129.       f(size, X1:'Container', X3:out('Integer')),
  8130.       f(order,
  8131.         X1:'Container',
  8132.         leftmost:compfunc:'Callable',
  8133.         X4:out('Tuple')),
  8134.       f(apply, color, X4:'Container', X5:out('Container')),
  8135.       f(rbind, canvas, (1, 1):fixed:'Any', X6:out('Callable')),
  8136.       f(apply, X6, X5:'Container', X7:out('Container')),
  8137.       f(merge, X7:containers:'ContainerContainer', X8:out('Container')),
  8138.       f(dmirror, X8:'Piece', X9:out('Piece')),
  8139.       f(subtract,
  8140.         'NINE':a:'Numerical',
  8141.         X3:b:'Numerical',
  8142.         X10:out('Numerical')),
  8143.       f(astuple, 'ONE':a:'Integer', X10:b:'Integer', X11:out('Point')),
  8144.       f(canvas,
  8145.         'ZERO':value:'Integer',
  8146.         X11:dimensions:'Point',
  8147.         X12:out('Grid')),
  8148.       f(hconcat, X9:a:'Grid', X12:b:'Grid', X13:out('Grid')),
  8149.       f(hsplit, X13:'Grid', 'THREE':n:'Integer', X14:out('Tuple')),
  8150.       f(merge,
  8151.         X14:containers:'ContainerContainer',
  8152.         X15:out('Container')),
  8153.       f(crop,
  8154.         X15:'Grid',
  8155.         (0, 0):start:'Point',
  8156.         X2:dims:'Point',
  8157.         X16:out('Grid')),
  8158.       f(crop,
  8159.         X15:'Grid',
  8160.         (1, 0):start:'Point',
  8161.         X2:dims:'Point',
  8162.         X17:out('Grid')),
  8163.       f(crop,
  8164.         X15:'Grid',
  8165.         (2, 0):start:'Point',
  8166.         X2:dims:'Point',
  8167.         X18:out('Grid')),
  8168.       f(vmirror, X17:'Piece', X19:out('Piece')),
  8169.       f(vconcat, X16:a:'Grid', X19:b:'Grid', X20:out('Grid')),
  8170.       f(vconcat, X20:a:'Grid', X18:b:'Grid', OUT:out('Grid'))
  8171.     ].
  8172. solve('3345333e', IN, OUT) :-
  8173.     [ f(mostcolor, IN:'Element', X1:out('Integer')),
  8174.       f(asindices, IN:'Grid', X2:out('Indices')),
  8175.       f(objects,
  8176.         IN:'Grid',
  8177.         univalued=false,
  8178.         diagonal=true,
  8179.         without_bg=true,
  8180.         X3:out('Objects')),
  8181.       f(first, X3:'Container', X4:out('Any')),
  8182.       f(mostcolor, X4:'Element', X5:out('Integer')),
  8183.       f(matcher, first, X5:target:'Any', X6:out('Callable')),
  8184.       f(sfilter,
  8185.         X4:'Container',
  8186.         X6:condition:'Callable',
  8187.         X7:out('Container')),
  8188.       f(toindices, X7:'Patch', X8:out('Indices')),
  8189.       f(ulcorner, X7:'Patch', X9:out('Point')),
  8190.       f(difference,
  8191.         X2:a:'FrozenSet',
  8192.         X8:b:'FrozenSet',
  8193.         X10:out('FrozenSet')),
  8194.       f(fill,
  8195.         IN:'Grid',
  8196.         X1:value:'Integer',
  8197.         X10:'Patch',
  8198.         X11:out('Grid')),
  8199.       f(subgrid, X7:'Patch', X11:'Grid', X12:out('Grid')),
  8200.       f(vmirror, X12:'Piece', X13:out('Piece')),
  8201.       f(ofcolor, X13:'Grid', X5:value:'Integer', X14:out('Indices')),
  8202.       f(last, X9:'Container', X15:out('Any')),
  8203.       f(even, X15:n:'Integer', returns=X16),
  8204.       f(invert, X16:n:'Numerical', X17:out('Numerical')),
  8205.       f(tojvec, X17:j:'Integer', X18:out('Point')),
  8206.       f(add,
  8207.         X9:a:'Numerical',
  8208.         X18:b:'Numerical',
  8209.         X19:out('Numerical')),
  8210.       f(shift, X14:'Patch', X19:directions:'Point', X20:out('Patch')),
  8211.       f(fill,
  8212.         X11:'Grid',
  8213.         X5:value:'Integer',
  8214.         X20:'Patch',
  8215.         OUT:out('Grid'))
  8216.     ].
  8217. solve(b190f7f5, IN, OUT) :-
  8218.     [ f(dmirror, IN:'Piece', X1:out('Piece')),
  8219.       f(portrait, IN:'Piece', returns=X2),
  8220.       f(branch,
  8221.         condition=X2,
  8222.         X1:a:'Any',
  8223.         IN:b:'Any',
  8224.         X3:out('Any')),
  8225.       f(lefthalf, X3:'Grid', X4:out('Grid')),
  8226.       f(righthalf, X3:'Grid', X5:out('Grid')),
  8227.       f(palette, X4:'Element', X6:out('IntegerSet')),
  8228.       f(contained, 'EIGHT':value:'Any', X6:'Container', returns=X7),
  8229.       f(branch,
  8230.         condition=X7,
  8231.         X4:a:'Any',
  8232.         X5:b:'Any',
  8233.         X8:out('Any')),
  8234.       f(branch,
  8235.         condition=X7,
  8236.         X5:a:'Any',
  8237.         X4:b:'Any',
  8238.         X9:out('Any')),
  8239.       f(width, X9:'Piece', X10:out('Integer')),
  8240.       f(upscale,
  8241.         X9:'Element',
  8242.         X10:factor:'Integer',
  8243.         X11:out('Element')),
  8244.       f(repeat, X8:item:'Any', X10:num:'Integer', X12:out('Tuple')),
  8245.       f(merge,
  8246.         X12:containers:'ContainerContainer',
  8247.         X13:out('Container')),
  8248.       f(dmirror, X13:'Piece', X14:out('Piece')),
  8249.       f(repeat, X14:item:'Any', X10:num:'Integer', X15:out('Tuple')),
  8250.       f(merge,
  8251.         X15:containers:'ContainerContainer',
  8252.         X16:out('Container')),
  8253.       f(dmirror, X16:'Piece', X17:out('Piece')),
  8254.       f(ofcolor, X17:'Grid', 'ZERO':value:'Integer', X18:out('Indices')),
  8255.       f(fill,
  8256.         X11:'Grid',
  8257.         'ZERO':value:'Integer',
  8258.         X18:'Patch',
  8259.         X19:out('Grid')),
  8260.       f(dmirror, X19:'Piece', X20:out('Piece')),
  8261.       f(branch,
  8262.         condition=X2,
  8263.         X20:a:'Any',
  8264.         X19:b:'Any',
  8265.         OUT:out('Any'))
  8266.     ].
  8267. solve(caa06a1f, IN, OUT) :-
  8268.     [ f(asobject, IN:'Grid', X1:out('Object')),
  8269.       f(shape, IN:'Piece', X2:out('Point')),
  8270.       f(decrement, X2:x:'Numerical', X3:out('Numerical')),
  8271.       f(index, IN:'Grid', X3:loc:'Point', X4:out('Integer')),
  8272.       f(double, X2:n:'Numerical', X5:out('Numerical')),
  8273.       f(canvas,
  8274.         X4:value:'Integer',
  8275.         X5:dimensions:'Point',
  8276.         X6:out('Grid')),
  8277.       f(paint, X6:'Grid', X1:obj:'Object', X7:out('Grid')),
  8278.       f(objects,
  8279.         X7:'Grid',
  8280.         univalued=false,
  8281.         diagonal=false,
  8282.         without_bg=true,
  8283.         X8:out('Objects')),
  8284.       f(first, X8:'Container', X9:out('Any')),
  8285.       f(shift, X9:'Patch', (0, -1):directions:'Point', X10:out('Patch')),
  8286.       f(vperiod, X10:obj:'Object', X11:out('Integer')),
  8287.       f(hperiod, X10:obj:'Object', X12:out('Integer')),
  8288.       f(neighbors, (0, 0):loc:'Point', X13:out('Indices')),
  8289.       f(lbind, mapply, neighbors:fixed:'Any', X14:out('Callable')),
  8290.       f(power, X14, 'TWO':n:'Integer', X15:out('Callable')),
  8291.       f(X15, X13, X16),
  8292.       f(astuple, X11:a:'Integer', X12:b:'Integer', X17:out('Point')),
  8293.       f(lbind, multiply, X17:fixed:'Any', X18:out('Callable')),
  8294.       f(apply, X18, X16:'Container', X19:out('Container')),
  8295.       f(lbind, shift, X10:fixed:'Any', X20:out('Callable')),
  8296.       f(mapply,
  8297.         X20,
  8298.         X19:container:'ContainerContainer',
  8299.         X21:out('FrozenSet')),
  8300.       f(paint, IN:'Grid', X21:obj:'Object', OUT:out('Grid'))
  8301.     ].
  8302. solve(e21d9049, IN, OUT) :-
  8303.     [ f(asindices, IN:'Grid', X1:out('Indices')),
  8304.       f(leastcolor, IN:'Element', X2:out('Integer')),
  8305.       f(objects,
  8306.         IN:'Grid',
  8307.         univalued=true,
  8308.         diagonal=false,
  8309.         without_bg=true,
  8310.         X3:out('Objects')),
  8311.       f(ofcolor, IN:'Grid', X2:value:'Integer', X4:out('Indices')),
  8312.       f(merge, X3:containers:'ContainerContainer', X5:out('Container')),
  8313.       f(shape, X5:'Piece', X6:out('Point')),
  8314.       f(neighbors, (0, 0):loc:'Point', X7:out('Indices')),
  8315.       f(lbind, mapply, neighbors:fixed:'Any', X8:out('Callable')),
  8316.       f(power, X8, 'TWO':n:'Integer', X9:out('Callable')),
  8317.       f(X9, X7, X10),
  8318.       f(lbind, multiply, X6:fixed:'Any', X11:out('Callable')),
  8319.       f(lbind, shift, X5:fixed:'Any', X12:out('Callable')),
  8320.       f(apply, X11, X10:'Container', X13:out('Container')),
  8321.       f(mapply,
  8322.         X12,
  8323.         X13:container:'ContainerContainer',
  8324.         X14:out('FrozenSet')),
  8325.       f(lbind, hmatching, X4:fixed:'Any', X15:out('Callable')),
  8326.       f(lbind, vmatching, X4:fixed:'Any', X16:out('Callable')),
  8327.       f(fork,
  8328.         either:outer:'Callable',
  8329.         X15:a:'Callable',
  8330.         X16:b:'Callable',
  8331.         X17:out('Callable')),
  8332.       f(compose,
  8333.         X17:outer:'Callable',
  8334.         initset:inner:'Callable',
  8335.         X18:out('Callable')),
  8336.       f(paint, IN:'Grid', X14:obj:'Object', X19:out('Grid')),
  8337.       f(sfilter,
  8338.         X1:'Container',
  8339.         X18:condition:'Callable',
  8340.         X20:out('Container')),
  8341.       f(difference,
  8342.         X1:a:'FrozenSet',
  8343.         X20:b:'FrozenSet',
  8344.         X21:out('FrozenSet')),
  8345.       f(cover, X19:'Grid', X21:'Patch', OUT:out('Grid'))
  8346.     ].
  8347. solve(d89b689b, IN, OUT) :-
  8348.     [ f(asindices, IN:'Grid', X1:out('Indices')),
  8349.       f(ofcolor, IN:'Grid', 'EIGHT':value:'Integer', X2:out('Indices')),
  8350.       f(replace,
  8351.         IN:'Grid',
  8352.         'EIGHT':replacee:'Integer',
  8353.         'ZERO':replacer:'Integer',
  8354.         X3:out('Grid')),
  8355.       f(vsplit, X3:'Grid', 'TWO':n:'Integer', X4:out('Tuple')),
  8356.       f(rbind, order, leftmost:fixed:'Any', X5:out('Callable')),
  8357.       f(lbind, apply, color:fixed:'Any', X6:out('Callable')),
  8358.       f(rbind, repeat, 'ONE':fixed:'Any', X7:out('Callable')),
  8359.       f(chain,
  8360.         X7:h:'Callable',
  8361.         X6:g:'Callable',
  8362.         X5:f:'Callable',
  8363.         X8:out('Callable')),
  8364.       f(matcher, first, 'ZERO':target:'Any', X9:out('Callable')),
  8365.       f(compose,
  8366.         flip:outer:'Callable',
  8367.         X9:inner:'Callable',
  8368.         X10:out('Callable')),
  8369.       f(rbind, sfilter, X10:fixed:'Any', X11:out('Callable')),
  8370.       f(lbind, apply, initset:fixed:'Any', X12:out('Callable')),
  8371.       f(chain,
  8372.         X12:h:'Callable',
  8373.         X11:g:'Callable',
  8374.         asobject:f:'Callable',
  8375.         X13:out('Callable')),
  8376.       f(compose,
  8377.         X8:outer:'Callable',
  8378.         X13:inner:'Callable',
  8379.         X14:out('Callable')),
  8380.       f(apply, X14, X4:'Container', X15:out('Container')),
  8381.       f(merge,
  8382.         X15:containers:'ContainerContainer',
  8383.         X16:out('Container')),
  8384.       f(ulcorner, X2:'Patch', X17:out('Point')),
  8385.       f(asindices, X16:'Grid', X18:out('Indices')),
  8386.       f(toobject, X18:'Patch', X16:'Grid', X19:out('Object')),
  8387.       f(shift, X19:'Patch', X17:directions:'Point', X20:out('Patch')),
  8388.       f(cover, IN:'Grid', X1:'Patch', X21:out('Grid')),
  8389.       f(paint, X21:'Grid', X20:obj:'Object', OUT:out('Grid'))
  8390.     ].
  8391. solve('746b3537', IN, OUT) :-
  8392.     [ f(rot90, IN:'Grid', X1:out('Grid')),
  8393.       f(objects,
  8394.         IN:'Grid',
  8395.         univalued=true,
  8396.         diagonal=false,
  8397.         without_bg=false,
  8398.         X2:out('Objects')),
  8399.       f(sfilter,
  8400.         X2:'Container',
  8401.         vline:condition:'Callable',
  8402.         X3:out('Container')),
  8403.       f(compose,
  8404.         positive:outer:'Callable',
  8405.         size:inner:'Callable',
  8406.         X4:out('Callable')),
  8407.       f(X4, X3, X5),
  8408.       f(branch,
  8409.         condition=X5,
  8410.         X1:a:'Any',
  8411.         IN:b:'Any',
  8412.         X6:out('Any')),
  8413.       f(height, X6:'Piece', X7:out('Integer')),
  8414.       f(astuple, X7:a:'Integer', 'ONE':b:'Integer', X8:out('Point')),
  8415.       f(crop,
  8416.         X6:'Grid',
  8417.         (0, 0):start:'Point',
  8418.         X8:dims:'Point',
  8419.         X9:out('Grid')),
  8420.       f(objects,
  8421.         X9:'Grid',
  8422.         univalued=true,
  8423.         diagonal=false,
  8424.         without_bg=false,
  8425.         X10:out('Objects')),
  8426.       f(asindices, X9:'Grid', X11:out('Indices')),
  8427.       f(apply, center, X10:'Container', X12:out('Container')),
  8428.       f(difference,
  8429.         X11:a:'FrozenSet',
  8430.         X12:b:'FrozenSet',
  8431.         X13:out('FrozenSet')),
  8432.       f(fill,
  8433.         X9:'Grid',
  8434.         'ZERO':value:'Integer',
  8435.         X13:'Patch',
  8436.         X14:out('Grid')),
  8437.       f(vsplit, X14:'Grid', X7:n:'Integer', X15:out('Tuple')),
  8438.       f(canvas, 'ZERO':value:'Integer', (1, 1):dimensions:'Point', X16:out('Grid')),
  8439.       f(rbind, equality, X16:fixed:'Any', X17:out('Callable')),
  8440.       f(compose,
  8441.         flip:outer:'Callable',
  8442.         X17:inner:'Callable',
  8443.         X18:out('Callable')),
  8444.       f(sfilter,
  8445.         X15:'Container',
  8446.         X18:condition:'Callable',
  8447.         X19:out('Container')),
  8448.       f(merge,
  8449.         X19:containers:'ContainerContainer',
  8450.         X20:out('Container')),
  8451.       f(dmirror, X20:'Piece', X21:out('Piece')),
  8452.       f(branch,
  8453.         condition=X5,
  8454.         X21:a:'Any',
  8455.         X20:b:'Any',
  8456.         OUT:out('Any'))
  8457.     ].
  8458. solve(63613498, IN, OUT) :-
  8459.     [ f(objects,
  8460.         IN:'Grid',
  8461.         univalued=false,
  8462.         diagonal=false,
  8463.         without_bg=true,
  8464.         X1:out('Objects')),
  8465.       f(crop,
  8466.         IN:'Grid',
  8467.         (0, 0):start:'Point',
  8468.         (3, 3):dims:'Point',
  8469.         X2:out('Grid')),
  8470.       f(partition, X2:'Grid', X3:out('Objects')),
  8471.       f(colorfilter,
  8472.         X3:objs:'Objects',
  8473.         'ZERO':value:'Integer',
  8474.         X4:out('Objects')),
  8475.       f(difference,
  8476.         X3:a:'FrozenSet',
  8477.         X4:b:'FrozenSet',
  8478.         X5:out('FrozenSet')),
  8479.       f(first, X5:'Container', X6:out('Any')),
  8480.       f(toindices, X6:'Patch', X7:out('Indices')),
  8481.       f(ulcorner, X7:'Patch', X8:out('Point')),
  8482.       f(invert, X8:n:'Numerical', X9:out('Numerical')),
  8483.       f(shift, X7:'Patch', X9:directions:'Point', X10:out('Patch')),
  8484.       f(totuple, X1:container:'FrozenSet', X11:out('Tuple')),
  8485.       f(apply, toindices, X11:'Container', X12:out('Container')),
  8486.       f(apply, normalize, X12:'Container', X13:out('Container')),
  8487.       f(pair, X11:a:'Tuple', X13:b:'Tuple', X14:out('TupleTuple')),
  8488.       f(matcher, last, X10:target:'Any', X15:out('Callable')),
  8489.       f(sfilter,
  8490.         X14:'Container',
  8491.         X15:condition:'Callable',
  8492.         X16:out('Container')),
  8493.       f(matcher, first, X6:target:'Any', X17:out('Callable')),
  8494.       f(compose,
  8495.         flip:outer:'Callable',
  8496.         X17:inner:'Callable',
  8497.         X18:out('Callable')),
  8498.       f(extract,
  8499.         X16:'Container',
  8500.         X18:condition:'Callable',
  8501.         X19:out('Any')),
  8502.       f(first, X19:'Container', X20:out('Any')),
  8503.       f(recolor, 'FIVE':value:'Integer', X20:'Patch', X21:out('Object')),
  8504.       f(paint, IN:'Grid', X21:obj:'Object', OUT:out('Grid'))
  8505.     ].
  8506. solve('06df4c85', IN, OUT) :-
  8507.     [ f(partition, IN:'Grid', X1:out('Objects')),
  8508.       f(mostcolor, IN:'Element', X2:out('Integer')),
  8509.       f(ofcolor, IN:'Grid', X2:value:'Integer', X3:out('Indices')),
  8510.       f(colorfilter,
  8511.         X1:objs:'Objects',
  8512.         'ZERO':value:'Integer',
  8513.         X4:out('Objects')),
  8514.       f(argmax, X1:'Container', size:compfunc:'Callable', X5:out('Any')),
  8515.       f(difference,
  8516.         X1:a:'FrozenSet',
  8517.         X4:b:'FrozenSet',
  8518.         X6:out('FrozenSet')),
  8519.       f(remove, X5:value:'Any', X6:'Container', X7:out('Container')),
  8520.       f(merge, X7:containers:'ContainerContainer', X8:out('Container')),
  8521.       f(product,
  8522.         X8:a:'Container',
  8523.         X8:b:'Container',
  8524.         X9:out('FrozenSet')),
  8525.       f(power, first, 'TWO':n:'Integer', X10:out('Callable')),
  8526.       f(compose,
  8527.         first:outer:'Callable',
  8528.         last:inner:'Callable',
  8529.         X11:out('Callable')),
  8530.       f(fork,
  8531.         equality:outer:'Callable',
  8532.         X10:a:'Callable',
  8533.         X11:b:'Callable',
  8534.         X12:out('Callable')),
  8535.       f(sfilter,
  8536.         X9:'Container',
  8537.         X12:condition:'Callable',
  8538.         X13:out('Container')),
  8539.       f(compose,
  8540.         last:outer:'Callable',
  8541.         first:inner:'Callable',
  8542.         X14:out('Callable')),
  8543.       f(power, last, 'TWO':n:'Integer', X15:out('Callable')),
  8544.       f(fork,
  8545.         connect:outer:'Callable',
  8546.         X14:a:'Callable',
  8547.         X15:b:'Callable',
  8548.         X16:out('Callable')),
  8549.       f(fork,
  8550.         recolor:outer:'Callable',
  8551.         color:a:'Callable',
  8552.         X16:b:'Callable',
  8553.         X17:out('Callable')),
  8554.       f(apply, X17, X13:'Container', X18:out('Container')),
  8555.       f(fork,
  8556.         either:outer:'Callable',
  8557.         vline:a:'Callable',
  8558.         hline:b:'Callable',
  8559.         X19:out('Callable')),
  8560.       f(mfilter, X18:'Container', X19, X20:out('FrozenSet')),
  8561.       f(paint, IN:'Grid', X20:obj:'Object', X21:out('Grid')),
  8562.       f(fill,
  8563.         X21:'Grid',
  8564.         X2:value:'Integer',
  8565.         X3:'Patch',
  8566.         OUT:out('Grid'))
  8567.     ].
  8568. solve(f9012d9b, IN, OUT) :-
  8569.     [ f(objects,
  8570.         IN:'Grid',
  8571.         univalued=true,
  8572.         diagonal=false,
  8573.         without_bg=false,
  8574.         X1:out('Objects')),
  8575.       f(ofcolor, IN:'Grid', 'ZERO':value:'Integer', X2:out('Indices')),
  8576.       f(lbind, contained, 'ZERO':fixed:'Any', X3:out('Callable')),
  8577.       f(chain,
  8578.         flip:h:'Callable',
  8579.         X3:g:'Callable',
  8580.         palette:f:'Callable',
  8581.         X4:out('Callable')),
  8582.       f(mfilter, X1:'Container', X4, X5:out('FrozenSet')),
  8583.       f(vsplit, IN:'Grid', 'TWO':n:'Integer', X6:out('Tuple')),
  8584.       f(hsplit, IN:'Grid', 'TWO':n:'Integer', X7:out('Tuple')),
  8585.       f(extract,
  8586.         X6:'Container',
  8587.         X4:condition:'Callable',
  8588.         X8:out('Any')),
  8589.       f(extract,
  8590.         X7:'Container',
  8591.         X4:condition:'Callable',
  8592.         X9:out('Any')),
  8593.       f(asobject, X8:'Grid', X10:out('Object')),
  8594.       f(asobject, X9:'Grid', X11:out('Object')),
  8595.       f(vperiod, X10:obj:'Object', X12:out('Integer')),
  8596.       f(hperiod, X11:obj:'Object', X13:out('Integer')),
  8597.       f(neighbors, (0, 0):loc:'Point', X14:out('Indices')),
  8598.       f(mapply,
  8599.         neighbors,
  8600.         X14:container:'ContainerContainer',
  8601.         X15:out('FrozenSet')),
  8602.       f(astuple, X12:a:'Integer', X13:b:'Integer', X16:out('Point')),
  8603.       f(rbind, multiply, X16:fixed:'Any', X17:out('Callable')),
  8604.       f(apply, X17, X15:'Container', X18:out('Container')),
  8605.       f(lbind, shift, X5:fixed:'Any', X19:out('Callable')),
  8606.       f(mapply,
  8607.         X19,
  8608.         X18:container:'ContainerContainer',
  8609.         X20:out('FrozenSet')),
  8610.       f(paint, IN:'Grid', X20:obj:'Object', X21:out('Grid')),
  8611.       f(subgrid, X2:'Patch', X21:'Grid', OUT:out('Grid'))
  8612.     ].
  8613. solve('4522001f', IN, OUT) :-
  8614.     [ f(objects,
  8615.         IN:'Grid',
  8616.         univalued=false,
  8617.         diagonal=false,
  8618.         without_bg=true,
  8619.         X1:out('Objects')),
  8620.       f(first, X1:'Container', X2:out('Any')),
  8621.       f(toindices, X2:'Patch', X3:out('Indices')),
  8622.       f(contained, (0, 2):value:'Any', X3:'Container', returns=X4),
  8623.       f(contained, (2, 2):value:'Any', X3:'Container', returns=X5),
  8624.       f(contained, (2, 0):value:'Any', X3:'Container', returns=X6),
  8625.       f(astuple, 'NINE':a:'Integer', 'NINE':b:'Integer', X7:out('Point')),
  8626.       f(canvas,
  8627.         'ZERO':value:'Integer',
  8628.         X7:dimensions:'Point',
  8629.         X8:out('Grid')),
  8630.       f(astuple, 'THREE':a:'Integer', (0, 0):b:'Integer', X9:out('Point')),
  8631.       f(initset, X9:value:'Any', X10:out('FrozenSet')),
  8632.       f(upscale, X10:'Element', 'TWO':factor:'Integer', X11:out('Element')),
  8633.       f(upscale, X11:'Element', 'TWO':factor:'Integer', X12:out('Element')),
  8634.       f(shape, X12:'Piece', X13:out('Point')),
  8635.       f(shift, X12:'Patch', X13:directions:'Point', X14:out('Patch')),
  8636.       f(combine,
  8637.         X12:a:'Container',
  8638.         X14:b:'Container',
  8639.         X15:out('Container')),
  8640.       f(paint, X8:'Grid', X15:obj:'Object', X16:out('Grid')),
  8641.       f(rot90, X16:'Grid', X17:out('Grid')),
  8642.       f(rot180, X16:'Grid', X18:out('Grid')),
  8643.       f(rot270, X16:'Grid', X19:out('Grid')),
  8644.       f(branch,
  8645.         condition=X4,
  8646.         X17:a:'Any',
  8647.         X16:b:'Any',
  8648.         X20:out('Any')),
  8649.       f(branch,
  8650.         condition=X5,
  8651.         X18:a:'Any',
  8652.         X20:b:'Any',
  8653.         X21:out('Any')),
  8654.       f(branch,
  8655.         condition=X6,
  8656.         X19:a:'Any',
  8657.         X21:b:'Any',
  8658.         OUT:out('Any'))
  8659.     ].
  8660. solve(a48eeaf7, IN, OUT) :-
  8661.     [ f(objects,
  8662.         IN:'Grid',
  8663.         univalued=true,
  8664.         diagonal=false,
  8665.         without_bg=true,
  8666.         X1:out('Objects')),
  8667.       f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X2:out('Indices')),
  8668.       f(colorfilter,
  8669.         X1:objs:'Objects',
  8670.         'FIVE':value:'Integer',
  8671.         X3:out('Objects')),
  8672.       f(rbind, gravitate, X2:fixed:'Any', X4:out('Callable')),
  8673.       f(fork,
  8674.         shift:outer:'Callable',
  8675.         identity:a:'Callable',
  8676.         X4:b:'Callable',
  8677.         X5:out('Callable')),
  8678.       f(mapply,
  8679.         X5,
  8680.         X3:container:'ContainerContainer',
  8681.         X6:out('FrozenSet')),
  8682.       f(paint, IN:'Grid', X6:obj:'Object', X7:out('Grid')),
  8683.       f(rbind, vmatching, X2:fixed:'Any', X8:out('Callable')),
  8684.       f(rbind, hmatching, X2:fixed:'Any', X9:out('Callable')),
  8685.       f(fork,
  8686.         either:outer:'Callable',
  8687.         X8:a:'Callable',
  8688.         X9:b:'Callable',
  8689.         X10:out('Callable')),
  8690.       f(sfilter,
  8691.         X3:'Container',
  8692.         X10:condition:'Callable',
  8693.         X11:out('Container')),
  8694.       f(merge, X3:containers:'ContainerContainer', X12:out('Container')),
  8695.       f(cover, X7:'Grid', X12:'Patch', X13:out('Grid')),
  8696.       f(difference,
  8697.         X3:a:'FrozenSet',
  8698.         X11:b:'FrozenSet',
  8699.         X14:out('FrozenSet')),
  8700.       f(rbind, position, X2:fixed:'Any', X15:out('Callable')),
  8701.       f(rbind, manhattan, X2:fixed:'Any', X16:out('Callable')),
  8702.       f(compose,
  8703.         halve:outer:'Callable',
  8704.         X16:inner:'Callable',
  8705.         X17:out('Callable')),
  8706.       f(fork,
  8707.         multiply:outer:'Callable',
  8708.         X17:a:'Callable',
  8709.         X15:b:'Callable',
  8710.         X18:out('Callable')),
  8711.       f(fork,
  8712.         subtract:outer:'Callable',
  8713.         X18:a:'Callable',
  8714.         X15:b:'Callable',
  8715.         X19:out('Callable')),
  8716.       f(fork,
  8717.         shift:outer:'Callable',
  8718.         identity:a:'Callable',
  8719.         X19:b:'Callable',
  8720.         X20:out('Callable')),
  8721.       f(mapply,
  8722.         X20,
  8723.         X14:container:'ContainerContainer',
  8724.         X21:out('FrozenSet')),
  8725.       f(paint, X13:'Grid', X21:obj:'Object', OUT:out('Grid'))
  8726.     ].
  8727. solve(eb5a1d5d, IN, OUT) :-
  8728.     [ f(objects,
  8729.         IN:'Grid',
  8730.         univalued=true,
  8731.         diagonal=false,
  8732.         without_bg=false,
  8733.         X1:out('Objects')),
  8734.       f(argmin, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  8735.       f(color, X2:obj:'Object', X3:out('Integer')),
  8736.       f(compose,
  8737.         invert:outer:'Callable',
  8738.         width:inner:'Callable',
  8739.         X4:out('Callable')),
  8740.       f(order,
  8741.         X1:'Container',
  8742.         X4:compfunc:'Callable',
  8743.         X5:out('Tuple')),
  8744.       f(apply, color, X5:'Container', X6:out('Container')),
  8745.       f(size, X5:'Container', X7:out('Integer')),
  8746.       f(double, X7:n:'Numerical', X8:out('Numerical')),
  8747.       f(decrement, X8:x:'Numerical', X9:out('Numerical')),
  8748.       f(interval,
  8749.         'ZERO':start:'Integer',
  8750.         X7:stop:'Integer',
  8751.         'ONE':step:'Integer',
  8752.         X10:out('Tuple')),
  8753.       f(pair, X10:a:'Tuple', X10:b:'Tuple', X11:out('TupleTuple')),
  8754.       f(decrement, X9:x:'Numerical', X12:out('Numerical')),
  8755.       f(interval,
  8756.         X12:start:'Integer',
  8757.         'ZERO':stop:'Integer',
  8758.         'NEG_TWO':step:'Integer',
  8759.         X13:out('Tuple')),
  8760.       f(papply, add, X13:a:'Tuple', X10:b:'Tuple', X14:out('Tuple')),
  8761.       f(order,
  8762.         X14:'Container',
  8763.         invert:compfunc:'Callable',
  8764.         X15:out('Tuple')),
  8765.       f(pair, X15:a:'Tuple', X15:b:'Tuple', X16:out('TupleTuple')),
  8766.       f(pair, X11:a:'Tuple', X16:b:'Tuple', X17:out('TupleTuple')),
  8767.       f(apply, box, X17:'Container', X18:out('Container')),
  8768.       f(mpapply,
  8769.         recolor,
  8770.         X6:a:'Tuple',
  8771.         X18:b:'Tuple',
  8772.         X19:out('Tuple')),
  8773.       f(astuple, X9:a:'Integer', X9:b:'Integer', X20:out('Point')),
  8774.       f(canvas,
  8775.         'ZERO':value:'Integer',
  8776.         X20:dimensions:'Point',
  8777.         X21:out('Grid')),
  8778.       f(paint, X21:'Grid', X19:obj:'Object', X22:out('Grid')),
  8779.       f(replace,
  8780.         X22:'Grid',
  8781.         'ZERO':replacee:'Integer',
  8782.         X3:replacer:'Integer',
  8783.         OUT:out('Grid'))
  8784.     ].
  8785. solve(e179c5f4, IN, OUT) :-
  8786.     [ f(height, IN:'Piece', X1:out('Integer')),
  8787.       f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X2:out('Indices')),
  8788.       f(first, X2:'Container', X3:out('Any')),
  8789.       f(shoot,
  8790.         X3:start:'Point',
  8791.         (-1, 1):direction:'Point',
  8792.         X4:out('Indices')),
  8793.       f(fill,
  8794.         IN:'Grid',
  8795.         'ONE':value:'Integer',
  8796.         X4:'Patch',
  8797.         X5:out('Grid')),
  8798.       f(ofcolor, X5:'Grid', 'ONE':value:'Integer', X6:out('Indices')),
  8799.       f(urcorner, X6:'Patch', X7:out('Point')),
  8800.       f(shoot,
  8801.         X7:start:'Point',
  8802.         (-1, -1):direction:'Point',
  8803.         X8:out('Indices')),
  8804.       f(fill,
  8805.         X5:'Grid',
  8806.         'ONE':value:'Integer',
  8807.         X8:'Patch',
  8808.         X9:out('Grid')),
  8809.       f(ofcolor, X9:'Grid', 'ONE':value:'Integer', X10:out('Indices')),
  8810.       f(subgrid, X10:'Patch', X9:'Grid', X11:out('Grid')),
  8811.       f(height, X11:'Piece', X12:out('Integer')),
  8812.       f(width, X11:'Piece', X13:out('Integer')),
  8813.       f(decrement, X12:x:'Numerical', X14:out('Numerical')),
  8814.       f(astuple, X14:a:'Integer', X13:b:'Integer', X15:out('Point')),
  8815.       f(ulcorner, X10:'Patch', X16:out('Point')),
  8816.       f(crop,
  8817.         X9:'Grid',
  8818.         X16:start:'Point',
  8819.         X15:dims:'Point',
  8820.         X17:out('Grid')),
  8821.       f(repeat, X17:item:'Any', 'NINE':num:'Integer', X18:out('Tuple')),
  8822.       f(merge,
  8823.         X18:containers:'ContainerContainer',
  8824.         X19:out('Container')),
  8825.       f(astuple, X1:a:'Integer', X13:b:'Integer', X20:out('Point')),
  8826.       f(crop,
  8827.         X19:'Grid',
  8828.         (0, 0):start:'Point',
  8829.         X20:dims:'Point',
  8830.         X21:out('Grid')),
  8831.       f(hmirror, X21:'Piece', X22:out('Piece')),
  8832.       f(replace,
  8833.         X22:'Grid',
  8834.         'ZERO':replacee:'Integer',
  8835.         'EIGHT':replacer:'Integer',
  8836.         OUT:out('Grid'))
  8837.     ].
  8838. solve('228f6490', IN, OUT) :-
  8839.     [ f(objects,
  8840.         IN:'Grid',
  8841.         univalued=true,
  8842.         diagonal=false,
  8843.         without_bg=false,
  8844.         X1:out('Objects')),
  8845.       f(colorfilter,
  8846.         X1:objs:'Objects',
  8847.         'ZERO':value:'Integer',
  8848.         X2:out('Objects')),
  8849.       f(rbind, bordering, IN:fixed:'Any', X3:out('Callable')),
  8850.       f(compose,
  8851.         flip:outer:'Callable',
  8852.         X3:inner:'Callable',
  8853.         X4:out('Callable')),
  8854.       f(sfilter,
  8855.         X2:'Container',
  8856.         X4:condition:'Callable',
  8857.         X5:out('Container')),
  8858.       f(first, X5:'Container', X6:out('Any')),
  8859.       f(last, X5:'Container', X7:out('Any')),
  8860.       f(difference,
  8861.         X1:a:'FrozenSet',
  8862.         X2:b:'FrozenSet',
  8863.         X8:out('FrozenSet')),
  8864.       f(compose,
  8865.         normalize:outer:'Callable',
  8866.         toindices:inner:'Callable',
  8867.         X9:out('Callable')),
  8868.       f(X9, X6, X10),
  8869.       f(X9, X7, X11),
  8870.       f(matcher, X9, X10:target:'Any', X12:out('Callable')),
  8871.       f(matcher, X9, X11:target:'Any', X13:out('Callable')),
  8872.       f(extract,
  8873.         X8:'Container',
  8874.         X12:condition:'Callable',
  8875.         X14:out('Any')),
  8876.       f(extract,
  8877.         X8:'Container',
  8878.         X13:condition:'Callable',
  8879.         X15:out('Any')),
  8880.       f(ulcorner, X6:'Patch', X16:out('Point')),
  8881.       f(ulcorner, X7:'Patch', X17:out('Point')),
  8882.       f(ulcorner, X14:'Patch', X18:out('Point')),
  8883.       f(ulcorner, X15:'Patch', X19:out('Point')),
  8884.       f(subtract,
  8885.         X16:a:'Numerical',
  8886.         X18:b:'Numerical',
  8887.         X20:out('Numerical')),
  8888.       f(subtract,
  8889.         X17:a:'Numerical',
  8890.         X19:b:'Numerical',
  8891.         X21:out('Numerical')),
  8892.       f(move,
  8893.         IN:'Grid',
  8894.         X14:obj:'Object',
  8895.         X20:offset:'Point',
  8896.         X22:out('Grid')),
  8897.       f(move,
  8898.         X22:'Grid',
  8899.         X15:obj:'Object',
  8900.         X21:offset:'Point',
  8901.         OUT:out('Grid'))
  8902.     ].
  8903. solve('995c5fa3', IN, OUT) :-
  8904.     [ f(hsplit, IN:'Grid', 'THREE':n:'Integer', X1:out('Tuple')),
  8905.       f(astuple, 'TWO':a:'Integer', 'ONE':b:'Integer', X2:out('Point')),
  8906.       f(rbind, ofcolor, 'ZERO':fixed:'Any', X3:out('Callable')),
  8907.       f(compose,
  8908.         ulcorner:outer:'Callable',
  8909.         X3:inner:'Callable',
  8910.         X4:out('Callable')),
  8911.       f(compose,
  8912.         size:outer:'Callable',
  8913.         X3:inner:'Callable',
  8914.         X5:out('Callable')),
  8915.       f(matcher, X5, 'ZERO':target:'Any', X6:out('Callable')),
  8916.       f(matcher, X4, (1, 1):target:'Any', X7:out('Callable')),
  8917.       f(matcher, X4, (1, 0):target:'Any', X8:out('Callable')),
  8918.       f(matcher, X4, X2:target:'Any', X9:out('Callable')),
  8919.       f(rbind, multiply, 'THREE':fixed:'Any', X10:out('Callable')),
  8920.       f(power, double, 'TWO':n:'Integer', X11:out('Callable')),
  8921.       f(compose,
  8922.         double:outer:'Callable',
  8923.         X6:inner:'Callable',
  8924.         X12:out('Callable')),
  8925.       f(chain,
  8926.         X11:h:'Callable',
  8927.         double:g:'Callable',
  8928.         X7:f:'Callable',
  8929.         X13:out('Callable')),
  8930.       f(compose,
  8931.         X10:outer:'Callable',
  8932.         X8:inner:'Callable',
  8933.         X14:out('Callable')),
  8934.       f(compose,
  8935.         X11:outer:'Callable',
  8936.         X9:inner:'Callable',
  8937.         X15:out('Callable')),
  8938.       f(fork,
  8939.         add:outer:'Callable',
  8940.         X12:a:'Callable',
  8941.         X13:b:'Callable',
  8942.         X16:out('Callable')),
  8943.       f(fork,
  8944.         add:outer:'Callable',
  8945.         X14:a:'Callable',
  8946.         X15:b:'Callable',
  8947.         X17:out('Callable')),
  8948.       f(fork,
  8949.         add:outer:'Callable',
  8950.         X16:a:'Callable',
  8951.         X17:b:'Callable',
  8952.         X18:out('Callable')),
  8953.       f(rbind, canvas, (1, 1):fixed:'Any', X19:out('Callable')),
  8954.       f(compose,
  8955.         X19:outer:'Callable',
  8956.         X18:inner:'Callable',
  8957.         X20:out('Callable')),
  8958.       f(apply, X20, X1:'Container', X21:out('Container')),
  8959.       f(merge,
  8960.         X21:containers:'ContainerContainer',
  8961.         X22:out('Container')),
  8962.       f(hupscale, X22:'Grid', 'THREE':factor:'Integer', OUT:out('Grid'))
  8963.     ].
  8964. solve(d06dbe63, IN, OUT) :-
  8965.     [ f(ofcolor, IN:'Grid', 'EIGHT':value:'Integer', X1:out('Indices')),
  8966.       f(center, X1:'Patch', X2:out('Point')),
  8967.       f(connect, (0, 0):a:'Point', (1, 0):b:'Point', X3:out('Indices')),
  8968.       f(connect, (0, 0):a:'Point', (0, 2):b:'Point', X4:out('Indices')),
  8969.       f(combine,
  8970.         X3:a:'Container',
  8971.         X4:b:'Container',
  8972.         X5:out('Container')),
  8973.       f(subtract,
  8974.         X2:a:'Numerical',
  8975.         (2, 0):b:'Numerical',
  8976.         X6:out('Numerical')),
  8977.       f(shift, X5:'Patch', X6:directions:'Point', X7:out('Patch')),
  8978.       f(astuple, 'NEG_TWO':a:'Integer', 'TWO':b:'Integer', X8:out('Point')),
  8979.       f(interval,
  8980.         'ZERO':start:'Integer',
  8981.         'FIVE':stop:'Integer',
  8982.         'ONE':step:'Integer',
  8983.         X9:out('Tuple')),
  8984.       f(lbind, multiply, X8:fixed:'Any', X10:out('Callable')),
  8985.       f(apply, X10, X9:'Container', X11:out('Container')),
  8986.       f(lbind, shift, X7:fixed:'Any', X12:out('Callable')),
  8987.       f(mapply,
  8988.         X12,
  8989.         X11:container:'ContainerContainer',
  8990.         X13:out('FrozenSet')),
  8991.       f(fill,
  8992.         IN:'Grid',
  8993.         'FIVE':value:'Integer',
  8994.         X13:'Patch',
  8995.         X14:out('Grid')),
  8996.       f(rot180, X14:'Grid', X15:out('Grid')),
  8997.       f(ofcolor, X15:'Grid', 'EIGHT':value:'Integer', X16:out('Indices')),
  8998.       f(center, X16:'Patch', X17:out('Point')),
  8999.       f(subtract,
  9000.         X17:a:'Numerical',
  9001.         X6:b:'Numerical',
  9002.         X18:out('Numerical')),
  9003.       f(shift, X13:'Patch', X18:directions:'Point', X19:out('Patch')),
  9004.       f(toivec, 'NEG_TWO':i:'Integer', X20:out('Point')),
  9005.       f(shift, X19:'Patch', X20:directions:'Point', X21:out('Patch')),
  9006.       f(fill,
  9007.         X15:'Grid',
  9008.         'FIVE':value:'Integer',
  9009.         X21:'Patch',
  9010.         X22:out('Grid')),
  9011.       f(rot180, X22:'Grid', OUT:out('Grid'))
  9012.     ].
  9013. solve('36fdfd69', IN, OUT) :-
  9014.     [ f(upscale, IN:'Element', 'TWO':factor:'Integer', X1:out('Element')),
  9015.       f(ofcolor, X1:'Grid', 'TWO':value:'Integer', X2:out('Indices')),
  9016.       f(mapply,
  9017.         neighbors,
  9018.         X2:container:'ContainerContainer',
  9019.         X3:out('FrozenSet')),
  9020.       f(difference,
  9021.         X3:a:'FrozenSet',
  9022.         X2:b:'FrozenSet',
  9023.         X4:out('FrozenSet')),
  9024.       f(fill,
  9025.         X1:'Grid',
  9026.         'FOUR':value:'Integer',
  9027.         X4:'Patch',
  9028.         X5:out('Grid')),
  9029.       f(objects,
  9030.         X5:'Grid',
  9031.         univalued=true,
  9032.         diagonal=true,
  9033.         without_bg=true,
  9034.         X6:out('Objects')),
  9035.       f(colorfilter,
  9036.         X6:objs:'Objects',
  9037.         'FOUR':value:'Integer',
  9038.         X7:out('Objects')),
  9039.       f(totuple, X7:container:'FrozenSet', X8:out('Tuple')),
  9040.       f(rbind, subgrid, X5:fixed:'Any', X9:out('Callable')),
  9041.       f(apply, X9, X8:'Container', X10:out('Container')),
  9042.       f(apply, ulcorner, X8:'Container', X11:out('Container')),
  9043.       f(rbind, ofcolor, 'TWO':fixed:'Any', X12:out('Callable')),
  9044.       f(apply, X12, X10:'Container', X13:out('Container')),
  9045.       f(papply,
  9046.         subgrid,
  9047.         X13:a:'Tuple',
  9048.         X10:b:'Tuple',
  9049.         X14:out('Tuple')),
  9050.       f(rbind, downscale, 'TWO':fixed:'Any', X15:out('Callable')),
  9051.       f(apply, X15, X14:'Container', X16:out('Container')),
  9052.       f(apply, asindices, X16:'Container', X17:out('Container')),
  9053.       f(apply, increment, X11:'Container', X18:out('Container')),
  9054.       f(apply, halve, X18:'Container', X19:out('Container')),
  9055.       f(mpapply,
  9056.         shift,
  9057.         X17:a:'Tuple',
  9058.         X19:b:'Tuple',
  9059.         X20:out('Tuple')),
  9060.       f(fill,
  9061.         IN:'Grid',
  9062.         'FOUR':value:'Integer',
  9063.         X20:'Patch',
  9064.         X21:out('Grid')),
  9065.       f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X22:out('Indices')),
  9066.       f(fill,
  9067.         X21:'Grid',
  9068.         'TWO':value:'Integer',
  9069.         X22:'Patch',
  9070.         OUT:out('Grid'))
  9071.     ].
  9072. solve('0a938d79', IN, OUT) :-
  9073.     [ f(portrait, IN:'Piece', returns=X1),
  9074.       f(branch,
  9075.         condition=X1,
  9076.         dmirror:a:'Any',
  9077.         identity:b:'Any',
  9078.         X2:out('Any')),
  9079.       f(X2, IN, X3),
  9080.       f(objects,
  9081.         X3:'Grid',
  9082.         univalued=true,
  9083.         diagonal=false,
  9084.         without_bg=true,
  9085.         X4:out('Objects')),
  9086.       f(argmin,
  9087.         X4:'Container',
  9088.         leftmost:compfunc:'Callable',
  9089.         X5:out('Any')),
  9090.       f(argmax,
  9091.         X4:'Container',
  9092.         leftmost:compfunc:'Callable',
  9093.         X6:out('Any')),
  9094.       f(color, X5:obj:'Object', X7:out('Integer')),
  9095.       f(color, X6:obj:'Object', X8:out('Integer')),
  9096.       f(leftmost, X5:'Patch', X9:out('Integer')),
  9097.       f(leftmost, X6:'Patch', X10:out('Integer')),
  9098.       f(subtract,
  9099.         X10:a:'Numerical',
  9100.         X9:b:'Numerical',
  9101.         X11:out('Numerical')),
  9102.       f(double, X11:n:'Numerical', X12:out('Numerical')),
  9103.       f(multiply, 'THREE':a:'Numerical', 'TEN':b:'Numerical', X13:out('Numerical')),
  9104.       f(interval,
  9105.         X9:start:'Integer',
  9106.         X13:stop:'Integer',
  9107.         X12:step:'Integer',
  9108.         X14:out('Tuple')),
  9109.       f(interval,
  9110.         X10:start:'Integer',
  9111.         X13:stop:'Integer',
  9112.         X12:step:'Integer',
  9113.         X15:out('Tuple')),
  9114.       f(compose,
  9115.         vfrontier:outer:'Callable',
  9116.         tojvec:inner:'Callable',
  9117.         X16:out('Callable')),
  9118.       f(mapply,
  9119.         X16,
  9120.         X14:container:'ContainerContainer',
  9121.         X17:out('FrozenSet')),
  9122.       f(mapply,
  9123.         X16,
  9124.         X15:container:'ContainerContainer',
  9125.         X18:out('FrozenSet')),
  9126.       f(recolor, X7:value:'Integer', X17:'Patch', X19:out('Object')),
  9127.       f(recolor, X8:value:'Integer', X18:'Patch', X20:out('Object')),
  9128.       f(combine,
  9129.         X19:a:'Container',
  9130.         X20:b:'Container',
  9131.         X21:out('Container')),
  9132.       f(paint, X3:'Grid', X21:obj:'Object', X22:out('Grid')),
  9133.       f(X2, X22, OUT)
  9134.     ].
  9135. solve('045e512c', IN, OUT) :-
  9136.     [ f(objects,
  9137.         IN:'Grid',
  9138.         univalued=true,
  9139.         diagonal=true,
  9140.         without_bg=true,
  9141.         X1:out('Objects')),
  9142.       f(apply, size, X1:'Container', X2:out('Container')),
  9143.       f(maximum, X2:container:'IntegerSet', X3:out('Integer')),
  9144.       f(lbind, greater, X3:fixed:'Any', X4:out('Callable')),
  9145.       f(compose,
  9146.         X4:outer:'Callable',
  9147.         size:inner:'Callable',
  9148.         X5:out('Callable')),
  9149.       f(sfilter,
  9150.         X1:'Container',
  9151.         X5:condition:'Callable',
  9152.         X6:out('Container')),
  9153.       f(difference,
  9154.         X1:a:'FrozenSet',
  9155.         X6:b:'FrozenSet',
  9156.         X7:out('FrozenSet')),
  9157.       f(first, X7:'Container', X8:out('Any')),
  9158.       f(interval,
  9159.         'ONE':start:'Integer',
  9160.         'FOUR':stop:'Integer',
  9161.         'ONE':step:'Integer',
  9162.         X9:out('Tuple')),
  9163.       f(lbind, multiply, 'FOUR':fixed:'Any', X10:out('Callable')),
  9164.       f(apply, X10, X9:'Container', X11:out('Container')),
  9165.       f(product,
  9166.         X6:a:'Container',
  9167.         X11:b:'Container',
  9168.         X12:out('FrozenSet')),
  9169.       f(totuple, X12:container:'FrozenSet', X13:out('Tuple')),
  9170.       f(apply, first, X13:'Container', X14:out('Container')),
  9171.       f(apply, last, X13:'Container', X15:out('Container')),
  9172.       f(apply, color, X14:'Container', X16:out('Container')),
  9173.       f(lbind, position, X8:fixed:'Any', X17:out('Callable')),
  9174.       f(apply, X17, X14:'Container', X18:out('Container')),
  9175.       f(papply,
  9176.         multiply,
  9177.         X18:a:'Tuple',
  9178.         X15:b:'Tuple',
  9179.         X19:out('Tuple')),
  9180.       f(rbind, recolor, X8:fixed:'Any', X20:out('Callable')),
  9181.       f(apply, X20, X16:'Container', X21:out('Container')),
  9182.       f(mpapply,
  9183.         shift,
  9184.         X21:a:'Tuple',
  9185.         X19:b:'Tuple',
  9186.         X22:out('Tuple')),
  9187.       f(paint, IN:'Grid', X22:obj:'Object', X23:out('Grid')),
  9188.       f(paint, X23:'Grid', X8:obj:'Object', OUT:out('Grid'))
  9189.     ].
  9190. solve(82819916, IN, OUT) :-
  9191.     [ f(objects,
  9192.         IN:'Grid',
  9193.         univalued=false,
  9194.         diagonal=false,
  9195.         without_bg=true,
  9196.         X1:out('Objects')),
  9197.       f(index, IN:'Grid', (1, 0):loc:'Point', X2:out('Integer')),
  9198.       f(argmax, X1:'Container', size:compfunc:'Callable', X3:out('Any')),
  9199.       f(remove, X3:value:'Any', X1:'Container', X4:out('Container')),
  9200.       f(matcher, first, X2:target:'Any', X5:out('Callable')),
  9201.       f(sfilter,
  9202.         X3:'Container',
  9203.         X5:condition:'Callable',
  9204.         X6:out('Container')),
  9205.       f(difference,
  9206.         X3:a:'FrozenSet',
  9207.         X6:b:'FrozenSet',
  9208.         X7:out('FrozenSet')),
  9209.       f(lbind, shift, X6:fixed:'Any', X8:out('Callable')),
  9210.       f(lbind, shift, X7:fixed:'Any', X9:out('Callable')),
  9211.       f(totuple, X4:container:'FrozenSet', X10:out('Tuple')),
  9212.       f(apply, ulcorner, X10:'Container', X11:out('Container')),
  9213.       f(apply, urcorner, X10:'Container', X12:out('Container')),
  9214.       f(apply, first, X11:'Container', X13:out('Container')),
  9215.       f(apply, decrement, X13:'Container', X14:out('Container')),
  9216.       f(apply, toivec, X14:'Container', X15:out('Container')),
  9217.       f(lbind, index, IN:fixed:'Any', X16:out('Callable')),
  9218.       f(apply, X16, X11:'Container', X17:out('Container')),
  9219.       f(apply, X16, X12:'Container', X18:out('Container')),
  9220.       f(apply, X8, X15:'Container', X19:out('Container')),
  9221.       f(apply, X9, X15:'Container', X20:out('Container')),
  9222.       f(mpapply,
  9223.         recolor,
  9224.         X17:a:'Tuple',
  9225.         X19:b:'Tuple',
  9226.         X21:out('Tuple')),
  9227.       f(mpapply,
  9228.         recolor,
  9229.         X18:a:'Tuple',
  9230.         X20:b:'Tuple',
  9231.         X22:out('Tuple')),
  9232.       f(paint, IN:'Grid', X21:obj:'Object', X23:out('Grid')),
  9233.       f(paint, X23:'Grid', X22:obj:'Object', OUT:out('Grid'))
  9234.     ].
  9235. solve('99fa7670', IN, OUT) :-
  9236.     [ f(shape, IN:'Piece', X1:out('Point')),
  9237.       f(objects,
  9238.         IN:'Grid',
  9239.         univalued=true,
  9240.         diagonal=false,
  9241.         without_bg=true,
  9242.         X2:out('Objects')),
  9243.       f(rbind, shoot, (0, 1):fixed:'Any', X3:out('Callable')),
  9244.       f(compose,
  9245.         X3:outer:'Callable',
  9246.         center:inner:'Callable',
  9247.         X4:out('Callable')),
  9248.       f(fork,
  9249.         recolor:outer:'Callable',
  9250.         color:a:'Callable',
  9251.         X4:b:'Callable',
  9252.         X5:out('Callable')),
  9253.       f(mapply,
  9254.         X5,
  9255.         X2:container:'ContainerContainer',
  9256.         X6:out('FrozenSet')),
  9257.       f(paint, IN:'Grid', X6:obj:'Object', X7:out('Grid')),
  9258.       f(add, X1:a:'Numerical', (1, -1):b:'Numerical', X8:out('Numerical')),
  9259.       f(initset, X8:value:'Any', X9:out('FrozenSet')),
  9260.       f(recolor, 'ZERO':value:'Integer', X9:'Patch', X10:out('Object')),
  9261.       f(objects,
  9262.         X7:'Grid',
  9263.         univalued=true,
  9264.         diagonal=false,
  9265.         without_bg=true,
  9266.         X11:out('Objects')),
  9267.       f(insert,
  9268.         X10:value:'Any',
  9269.         X11:container:'FrozenSet',
  9270.         X12:out('FrozenSet')),
  9271.       f(order,
  9272.         X12:'Container',
  9273.         uppermost:compfunc:'Callable',
  9274.         X13:out('Tuple')),
  9275.       f(first, X13:'Container', X14:out('Any')),
  9276.       f(remove,
  9277.         X10:value:'Any',
  9278.         X13:'Container',
  9279.         X15:out('Container')),
  9280.       f(remove,
  9281.         X14:value:'Any',
  9282.         X13:'Container',
  9283.         X16:out('Container')),
  9284.       f(compose,
  9285.         lrcorner:outer:'Callable',
  9286.         first:inner:'Callable',
  9287.         X17:out('Callable')),
  9288.       f(compose,
  9289.         lrcorner:outer:'Callable',
  9290.         last:inner:'Callable',
  9291.         X18:out('Callable')),
  9292.       f(fork,
  9293.         connect:outer:'Callable',
  9294.         X17:a:'Callable',
  9295.         X18:b:'Callable',
  9296.         X19:out('Callable')),
  9297.       f(compose,
  9298.         color:outer:'Callable',
  9299.         first:inner:'Callable',
  9300.         X20:out('Callable')),
  9301.       f(fork,
  9302.         recolor:outer:'Callable',
  9303.         X20:a:'Callable',
  9304.         X19:b:'Callable',
  9305.         X21:out('Callable')),
  9306.       f(pair, X15:a:'Tuple', X16:b:'Tuple', X22:out('TupleTuple')),
  9307.       f(mapply,
  9308.         X21,
  9309.         X22:container:'ContainerContainer',
  9310.         X23:out('FrozenSet')),
  9311.       f(underpaint, X7:'Grid', X23:obj:'Object', OUT:out('Grid'))
  9312.     ].
  9313. solve('72322fa7', IN, OUT) :-
  9314.     [ f(objects,
  9315.         IN:'Grid',
  9316.         univalued=false,
  9317.         diagonal=true,
  9318.         without_bg=true,
  9319.         X1:out('Objects')),
  9320.       f(matcher, numcolors, 'ONE':target:'Any', X2:out('Callable')),
  9321.       f(sfilter,
  9322.         X1:'Container',
  9323.         X2:condition:'Callable',
  9324.         X3:out('Container')),
  9325.       f(difference,
  9326.         X1:a:'FrozenSet',
  9327.         X3:b:'FrozenSet',
  9328.         X4:out('FrozenSet')),
  9329.       f(lbind, matcher, first:fixed:'Any', X5:out('Callable')),
  9330.       f(compose,
  9331.         X5:outer:'Callable',
  9332.         mostcolor:inner:'Callable',
  9333.         X6:out('Callable')),
  9334.       f(fork,
  9335.         sfilter:outer:'Callable',
  9336.         identity:a:'Callable',
  9337.         X6:b:'Callable',
  9338.         X7:out('Callable')),
  9339.       f(fork,
  9340.         difference:outer:'Callable',
  9341.         identity:a:'Callable',
  9342.         X7:b:'Callable',
  9343.         X8:out('Callable')),
  9344.       f(lbind, occurrences, IN:fixed:'Any', X9:out('Callable')),
  9345.       f(compose,
  9346.         X9:outer:'Callable',
  9347.         X7:inner:'Callable',
  9348.         X10:out('Callable')),
  9349.       f(compose,
  9350.         X9:outer:'Callable',
  9351.         X8:inner:'Callable',
  9352.         X11:out('Callable')),
  9353.       f(compose,
  9354.         ulcorner:outer:'Callable',
  9355.         X8:inner:'Callable',
  9356.         X12:out('Callable')),
  9357.       f(fork,
  9358.         subtract:outer:'Callable',
  9359.         ulcorner:a:'Callable',
  9360.         X12:b:'Callable',
  9361.         X13:out('Callable')),
  9362.       f(lbind, rbind, add:fixed:'Any', X14:out('Callable')),
  9363.       f(compose,
  9364.         X14:outer:'Callable',
  9365.         X13:inner:'Callable',
  9366.         X15:out('Callable')),
  9367.       f(fork,
  9368.         apply:outer:'Callable',
  9369.         X15:a:'Callable',
  9370.         X11:b:'Callable',
  9371.         X16:out('Callable')),
  9372.       f(lbind, lbind, shift:fixed:'Any', X17:out('Callable')),
  9373.       f(compose,
  9374.         X17:outer:'Callable',
  9375.         normalize:inner:'Callable',
  9376.         X18:out('Callable')),
  9377.       f(fork,
  9378.         mapply:outer:'Callable',
  9379.         X18:a:'Callable',
  9380.         X10:b:'Callable',
  9381.         X19:out('Callable')),
  9382.       f(fork,
  9383.         mapply:outer:'Callable',
  9384.         X18:a:'Callable',
  9385.         X16:b:'Callable',
  9386.         X20:out('Callable')),
  9387.       f(mapply,
  9388.         X19,
  9389.         X4:container:'ContainerContainer',
  9390.         X21:out('FrozenSet')),
  9391.       f(mapply,
  9392.         X20,
  9393.         X4:container:'ContainerContainer',
  9394.         X22:out('FrozenSet')),
  9395.       f(paint, IN:'Grid', X21:obj:'Object', X23:out('Grid')),
  9396.       f(paint, X23:'Grid', X22:obj:'Object', OUT:out('Grid'))
  9397.     ].
  9398. solve('855e0971', IN, OUT) :-
  9399.     [ f(rot90, IN:'Grid', X1:out('Grid')),
  9400.       f(objects,
  9401.         IN:'Grid',
  9402.         univalued=true,
  9403.         diagonal=false,
  9404.         without_bg=false,
  9405.         X2:out('Objects')),
  9406.       f(sizefilter, X2:'Container', 'ONE':n:'Integer', X3:out('FrozenSet')),
  9407.       f(difference,
  9408.         X2:a:'FrozenSet',
  9409.         X3:b:'FrozenSet',
  9410.         X4:out('FrozenSet')),
  9411.       f(first, X4:'Container', X5:out('Any')),
  9412.       f(portrait, X5:'Piece', returns=X6),
  9413.       f(branch,
  9414.         condition=X6,
  9415.         X1:a:'Any',
  9416.         IN:b:'Any',
  9417.         X7:out('Any')),
  9418.       f(objects,
  9419.         X7:'Grid',
  9420.         univalued=true,
  9421.         diagonal=false,
  9422.         without_bg=false,
  9423.         X8:out('Objects')),
  9424.       f(sizefilter, X8:'Container', 'ONE':n:'Integer', X9:out('FrozenSet')),
  9425.       f(difference,
  9426.         X8:a:'FrozenSet',
  9427.         X9:b:'FrozenSet',
  9428.         X10:out('FrozenSet')),
  9429.       f(rbind, subgrid, X7:fixed:'Any', X11:out('Callable')),
  9430.       f(rbind, ofcolor, 'ZERO':fixed:'Any', X12:out('Callable')),
  9431.       f(lbind, mapply, vfrontier:fixed:'Any', X13:out('Callable')),
  9432.       f(chain,
  9433.         X13:h:'Callable',
  9434.         X12:g:'Callable',
  9435.         X11:f:'Callable',
  9436.         X14:out('Callable')),
  9437.       f(lbind, recolor, 'ZERO':fixed:'Any', X15:out('Callable')),
  9438.       f(compose,
  9439.         X15:outer:'Callable',
  9440.         X14:inner:'Callable',
  9441.         X16:out('Callable')),
  9442.       f(fork,
  9443.         paint:outer:'Callable',
  9444.         X11:a:'Callable',
  9445.         X16:b:'Callable',
  9446.         X17:out('Callable')),
  9447.       f(fork,
  9448.         toobject:outer:'Callable',
  9449.         asindices:a:'Callable',
  9450.         identity:b:'Callable',
  9451.         X18:out('Callable')),
  9452.       f(compose,
  9453.         X18:outer:'Callable',
  9454.         X17:inner:'Callable',
  9455.         X19:out('Callable')),
  9456.       f(fork,
  9457.         shift:outer:'Callable',
  9458.         X19:a:'Callable',
  9459.         ulcorner:b:'Callable',
  9460.         X20:out('Callable')),
  9461.       f(mapply,
  9462.         X20,
  9463.         X10:container:'ContainerContainer',
  9464.         X21:out('FrozenSet')),
  9465.       f(paint, X7:'Grid', X21:obj:'Object', X22:out('Grid')),
  9466.       f(rot270, X22:'Grid', X23:out('Grid')),
  9467.       f(branch,
  9468.         condition=X6,
  9469.         X23:a:'Any',
  9470.         X22:b:'Any',
  9471.         OUT:out('Any'))
  9472.     ].
  9473. solve(a78176bb, IN, OUT) :-
  9474.     [ f(palette, IN:'Element', X1:out('IntegerSet')),
  9475.       f(objects,
  9476.         IN:'Grid',
  9477.         univalued=true,
  9478.         diagonal=false,
  9479.         without_bg=true,
  9480.         X2:out('Objects')),
  9481.       f(remove, 'ZERO':value:'Any', X1:'Container', X3:out('Container')),
  9482.       f(other, X3:'Container', 'FIVE':value:'Any', X4:out('Any')),
  9483.       f(colorfilter,
  9484.         X2:objs:'Objects',
  9485.         'FIVE':value:'Integer',
  9486.         X5:out('Objects')),
  9487.       f(lbind, index, IN:fixed:'Any', X6:out('Callable')),
  9488.       f(compose,
  9489.         X6:outer:'Callable',
  9490.         urcorner:inner:'Callable',
  9491.         X7:out('Callable')),
  9492.       f(matcher, X7, 'FIVE':target:'Any', X8:out('Callable')),
  9493.       f(sfilter,
  9494.         X5:'Container',
  9495.         X8:condition:'Callable',
  9496.         X9:out('Container')),
  9497.       f(difference,
  9498.         X5:a:'FrozenSet',
  9499.         X9:b:'FrozenSet',
  9500.         X10:out('FrozenSet')),
  9501.       f(apply, urcorner, X9:'Container', X11:out('Container')),
  9502.       f(apply, llcorner, X10:'Container', X12:out('Container')),
  9503.       f(rbind, add, (-1, 1):fixed:'Any', X13:out('Callable')),
  9504.       f(rbind, add, (1, -1):fixed:'Any', X14:out('Callable')),
  9505.       f(apply, X13, X11:'Container', X15:out('Container')),
  9506.       f(apply, X14, X12:'Container', X16:out('Container')),
  9507.       f(rbind, shoot, (1, 1):fixed:'Any', X17:out('Callable')),
  9508.       f(rbind, shoot, (-1, -1):fixed:'Any', X18:out('Callable')),
  9509.       f(fork,
  9510.         combine:outer:'Callable',
  9511.         X17:a:'Callable',
  9512.         X18:b:'Callable',
  9513.         X19:out('Callable')),
  9514.       f(mapply,
  9515.         X19,
  9516.         X15:container:'ContainerContainer',
  9517.         X20:out('FrozenSet')),
  9518.       f(mapply,
  9519.         X19,
  9520.         X16:container:'ContainerContainer',
  9521.         X21:out('FrozenSet')),
  9522.       f(combine,
  9523.         X20:a:'Container',
  9524.         X21:b:'Container',
  9525.         X22:out('Container')),
  9526.       f(fill,
  9527.         IN:'Grid',
  9528.         X4:value:'Integer',
  9529.         X22:'Patch',
  9530.         X23:out('Grid')),
  9531.       f(replace,
  9532.         X23:'Grid',
  9533.         'FIVE':replacee:'Integer',
  9534.         'ZERO':replacer:'Integer',
  9535.         OUT:out('Grid'))
  9536.     ].
  9537. solve('952a094c', IN, OUT) :-
  9538.     [ f(objects,
  9539.         IN:'Grid',
  9540.         univalued=false,
  9541.         diagonal=false,
  9542.         without_bg=true,
  9543.         X1:out('Objects')),
  9544.       f(first, X1:'Container', X2:out('Any')),
  9545.       f(inbox, X2:'Patch', X3:out('Indices')),
  9546.       f(toobject, X3:'Patch', IN:'Grid', X4:out('Object')),
  9547.       f(dmirror, X4:'Piece', X5:out('Piece')),
  9548.       f(cmirror, X5:'Piece', X6:out('Piece')),
  9549.       f(paint, IN:'Grid', X6:obj:'Object', X7:out('Grid')),
  9550.       f(lbind, index, X7:fixed:'Any', X8:out('Callable')),
  9551.       f(fork,
  9552.         astuple:outer:'Callable',
  9553.         X8:a:'Callable',
  9554.         identity:b:'Callable',
  9555.         X9:out('Callable')),
  9556.       f(compose,
  9557.         initset:outer:'Callable',
  9558.         X9:inner:'Callable',
  9559.         X10:out('Callable')),
  9560.       f(double, (-1, -1):n:'Numerical', X11:out('Numerical')),
  9561.       f(astuple, 'NEG_TWO':a:'Integer', 'TWO':b:'Integer', X12:out('Point')),
  9562.       f(astuple, 'TWO':a:'Integer', 'NEG_TWO':b:'Integer', X13:out('Point')),
  9563.       f(ulcorner, X3:'Patch', X14:out('Point')),
  9564.       f(urcorner, X3:'Patch', X15:out('Point')),
  9565.       f(llcorner, X3:'Patch', X16:out('Point')),
  9566.       f(lrcorner, X3:'Patch', X17:out('Point')),
  9567.       f(X10, X14, X18),
  9568.       f(move,
  9569.         X7:'Grid',
  9570.         X18:obj:'Object',
  9571.         X11:offset:'Point',
  9572.         X19:out('Grid')),
  9573.       f(X10, X15, X20),
  9574.       f(move,
  9575.         X19:'Grid',
  9576.         X20:obj:'Object',
  9577.         X12:offset:'Point',
  9578.         X21:out('Grid')),
  9579.       f(X10, X16, X22),
  9580.       f(move,
  9581.         X21:'Grid',
  9582.         X22:obj:'Object',
  9583.         X13:offset:'Point',
  9584.         X23:out('Grid')),
  9585.       f(X10, X17, X24),
  9586.       f(move,
  9587.         X23:'Grid',
  9588.         X24:obj:'Object',
  9589.         (2, 2):offset:'Point',
  9590.         OUT:out('Grid'))
  9591.     ].
  9592. solve('6d58a25d', IN, OUT) :-
  9593.     [ f(objects,
  9594.         IN:'Grid',
  9595.         univalued=true,
  9596.         diagonal=true,
  9597.         without_bg=true,
  9598.         X1:out('Objects')),
  9599.       f(argmax, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  9600.       f(remove, X2:value:'Any', X1:'Container', X3:out('Container')),
  9601.       f(first, X3:'Container', X4:out('Any')),
  9602.       f(color, X4:obj:'Object', X5:out('Integer')),
  9603.       f(leftmost, X2:'Patch', X6:out('Integer')),
  9604.       f(rightmost, X2:'Patch', X7:out('Integer')),
  9605.       f(center, X2:'Patch', X8:out('Point')),
  9606.       f(first, X8:'Container', X9:out('Any')),
  9607.       f(rbind, greater, X6:fixed:'Any', X10:out('Callable')),
  9608.       f(compose,
  9609.         X10:outer:'Callable',
  9610.         leftmost:inner:'Callable',
  9611.         X11:out('Callable')),
  9612.       f(lbind, greater, X7:fixed:'Any', X12:out('Callable')),
  9613.       f(compose,
  9614.         X12:outer:'Callable',
  9615.         rightmost:inner:'Callable',
  9616.         X13:out('Callable')),
  9617.       f(rbind, greater, X9:fixed:'Any', X14:out('Callable')),
  9618.       f(compose,
  9619.         X14:outer:'Callable',
  9620.         lowermost:inner:'Callable',
  9621.         X15:out('Callable')),
  9622.       f(fork,
  9623.         both:outer:'Callable',
  9624.         X11:a:'Callable',
  9625.         X13:b:'Callable',
  9626.         X16:out('Callable')),
  9627.       f(fork,
  9628.         both:outer:'Callable',
  9629.         X16:a:'Callable',
  9630.         X15:b:'Callable',
  9631.         X17:out('Callable')),
  9632.       f(sfilter,
  9633.         X3:'Container',
  9634.         X17:condition:'Callable',
  9635.         X18:out('Container')),
  9636.       f(mapply,
  9637.         toindices,
  9638.         X18:container:'ContainerContainer',
  9639.         X19:out('FrozenSet')),
  9640.       f(apply, last, X19:'Container', X20:out('Container')),
  9641.       f(lbind, astuple, X9:fixed:'Any', X21:out('Callable')),
  9642.       f(apply, X21, X20:'Container', X22:out('Container')),
  9643.       f(rbind, shoot, (1, 0):fixed:'Any', X23:out('Callable')),
  9644.       f(mapply,
  9645.         X23,
  9646.         X22:container:'ContainerContainer',
  9647.         X24:out('FrozenSet')),
  9648.       f(underfill,
  9649.         IN:'Grid',
  9650.         X5:value:'Integer',
  9651.         X24:'Patch',
  9652.         OUT:out('Grid'))
  9653.     ].
  9654. solve('6aa20dc0', IN, OUT) :-
  9655.     [ f(objects,
  9656.         IN:'Grid',
  9657.         univalued=false,
  9658.         diagonal=true,
  9659.         without_bg=true,
  9660.         X1:out('Objects')),
  9661.       f(argmax,
  9662.         X1:'Container',
  9663.         numcolors:compfunc:'Callable',
  9664.         X2:out('Any')),
  9665.       f(normalize, X2:'Patch', X3:out('Patch')),
  9666.       f(lbind, matcher, first:fixed:'Any', X4:out('Callable')),
  9667.       f(compose,
  9668.         X4:outer:'Callable',
  9669.         mostcolor:inner:'Callable',
  9670.         X5:out('Callable')),
  9671.       f(fork,
  9672.         sfilter:outer:'Callable',
  9673.         identity:a:'Callable',
  9674.         X5:b:'Callable',
  9675.         X6:out('Callable')),
  9676.       f(fork,
  9677.         difference:outer:'Callable',
  9678.         identity:a:'Callable',
  9679.         X6:b:'Callable',
  9680.         X7:out('Callable')),
  9681.       f(lbind, rbind, upscale:fixed:'Any', X8:out('Callable')),
  9682.       f(interval,
  9683.         'ONE':start:'Integer',
  9684.         'FOUR':stop:'Integer',
  9685.         'ONE':step:'Integer',
  9686.         X9:out('Tuple')),
  9687.       f(apply, X8, X9:'Container', X10:out('Container')),
  9688.       f(initset, identity:value:'Any', X11:out('FrozenSet')),
  9689.       f(insert,
  9690.         vmirror:value:'Any',
  9691.         X11:container:'FrozenSet',
  9692.         X12:out('FrozenSet')),
  9693.       f(insert,
  9694.         hmirror:value:'Any',
  9695.         X12:container:'FrozenSet',
  9696.         X13:out('FrozenSet')),
  9697.       f(insert,
  9698.         cmirror:value:'Any',
  9699.         X13:container:'FrozenSet',
  9700.         X14:out('FrozenSet')),
  9701.       f(insert,
  9702.         dmirror:value:'Any',
  9703.         X14:container:'FrozenSet',
  9704.         X15:out('FrozenSet')),
  9705.       f(fork,
  9706.         compose:outer:'Callable',
  9707.         first:a:'Callable',
  9708.         last:b:'Callable',
  9709.         X16:out('Callable')),
  9710.       f(lbind, occurrences, IN:fixed:'Any', X17:out('Callable')),
  9711.       f(lbind, lbind, shift:fixed:'Any', X18:out('Callable')),
  9712.       f(compose,
  9713.         X17:outer:'Callable',
  9714.         X7:inner:'Callable',
  9715.         X19:out('Callable')),
  9716.       f(product,
  9717.         X15:a:'Container',
  9718.         X10:b:'Container',
  9719.         X20:out('FrozenSet')),
  9720.       f(apply, X16, X20:'Container', X21:out('Container')),
  9721.       f(rapply,
  9722.         X21:functions:'Container',
  9723.         X3:value:'Any',
  9724.         X22:out('Container')),
  9725.       f(fork,
  9726.         mapply:outer:'Callable',
  9727.         X18:a:'Callable',
  9728.         X19:b:'Callable',
  9729.         X23:out('Callable')),
  9730.       f(mapply,
  9731.         X23,
  9732.         X22:container:'ContainerContainer',
  9733.         X24:out('FrozenSet')),
  9734.       f(paint, IN:'Grid', X24:obj:'Object', OUT:out('Grid'))
  9735.     ].
  9736. solve(e6721834, IN, OUT) :-
  9737.     [ f(portrait, IN:'Piece', returns=X1),
  9738.       f(branch,
  9739.         condition=X1,
  9740.         vsplit:a:'Any',
  9741.         hsplit:b:'Any',
  9742.         X2:out('Any')),
  9743.       f(X2, IN, 'TWO', X3),
  9744.       f(order,
  9745.         X3:'Container',
  9746.         numcolors:compfunc:'Callable',
  9747.         X4:out('Tuple')),
  9748.       f(first, X4:'Container', X5:out('Any')),
  9749.       f(last, X4:'Container', X6:out('Any')),
  9750.       f(objects,
  9751.         X6:'Grid',
  9752.         univalued=false,
  9753.         diagonal=false,
  9754.         without_bg=true,
  9755.         X7:out('Objects')),
  9756.       f(merge, X7:containers:'ContainerContainer', X8:out('Container')),
  9757.       f(mostcolor, X8:'Element', X9:out('Integer')),
  9758.       f(matcher, first, X9:target:'Any', X10:out('Callable')),
  9759.       f(compose,
  9760.         flip:outer:'Callable',
  9761.         X10:inner:'Callable',
  9762.         X11:out('Callable')),
  9763.       f(rbind, sfilter, X11:fixed:'Any', X12:out('Callable')),
  9764.       f(lbind, occurrences, X5:fixed:'Any', X13:out('Callable')),
  9765.       f(compose,
  9766.         X13:outer:'Callable',
  9767.         X12:inner:'Callable',
  9768.         X14:out('Callable')),
  9769.       f(chain,
  9770.         positive:h:'Callable',
  9771.         size:g:'Callable',
  9772.         X14:f:'Callable',
  9773.         X15:out('Callable')),
  9774.       f(sfilter,
  9775.         X7:'Container',
  9776.         X15:condition:'Callable',
  9777.         X16:out('Container')),
  9778.       f(chain,
  9779.         first:h:'Callable',
  9780.         X13:g:'Callable',
  9781.         X12:f:'Callable',
  9782.         X17:out('Callable')),
  9783.       f(compose,
  9784.         ulcorner:outer:'Callable',
  9785.         X12:inner:'Callable',
  9786.         X18:out('Callable')),
  9787.       f(fork,
  9788.         subtract:outer:'Callable',
  9789.         X17:a:'Callable',
  9790.         X18:b:'Callable',
  9791.         X19:out('Callable')),
  9792.       f(fork,
  9793.         shift:outer:'Callable',
  9794.         identity:a:'Callable',
  9795.         X19:b:'Callable',
  9796.         X20:out('Callable')),
  9797.       f(apply, X20, X16:'Container', X21:out('Container')),
  9798.       f(compose,
  9799.         decrement:outer:'Callable',
  9800.         width:inner:'Callable',
  9801.         X22:out('Callable')),
  9802.       f(chain,
  9803.         positive:h:'Callable',
  9804.         decrement:g:'Callable',
  9805.         X22:f:'Callable',
  9806.         X23:out('Callable')),
  9807.       f(mfilter, X21:'Container', X23, X24:out('FrozenSet')),
  9808.       f(paint, X5:'Grid', X24:obj:'Object', OUT:out('Grid'))
  9809.     ].
  9810. solve('447fd412', IN, OUT) :-
  9811.     [ f(objects,
  9812.         IN:'Grid',
  9813.         univalued=false,
  9814.         diagonal=true,
  9815.         without_bg=true,
  9816.         X1:out('Objects')),
  9817.       f(argmax,
  9818.         X1:'Container',
  9819.         numcolors:compfunc:'Callable',
  9820.         X2:out('Any')),
  9821.       f(normalize, X2:'Patch', X3:out('Patch')),
  9822.       f(lbind, matcher, first:fixed:'Any', X4:out('Callable')),
  9823.       f(compose,
  9824.         X4:outer:'Callable',
  9825.         mostcolor:inner:'Callable',
  9826.         X5:out('Callable')),
  9827.       f(fork,
  9828.         sfilter:outer:'Callable',
  9829.         identity:a:'Callable',
  9830.         X5:b:'Callable',
  9831.         X6:out('Callable')),
  9832.       f(fork,
  9833.         difference:outer:'Callable',
  9834.         identity:a:'Callable',
  9835.         X6:b:'Callable',
  9836.         X7:out('Callable')),
  9837.       f(lbind, rbind, upscale:fixed:'Any', X8:out('Callable')),
  9838.       f(interval,
  9839.         'ONE':start:'Integer',
  9840.         'FOUR':stop:'Integer',
  9841.         'ONE':step:'Integer',
  9842.         X9:out('Tuple')),
  9843.       f(apply, X8, X9:'Container', X10:out('Container')),
  9844.       f(lbind, recolor, 'ZERO':fixed:'Any', X11:out('Callable')),
  9845.       f(compose,
  9846.         X11:outer:'Callable',
  9847.         outbox:inner:'Callable',
  9848.         X12:out('Callable')),
  9849.       f(fork,
  9850.         combine:outer:'Callable',
  9851.         identity:a:'Callable',
  9852.         X12:b:'Callable',
  9853.         X13:out('Callable')),
  9854.       f(lbind, occurrences, IN:fixed:'Any', X14:out('Callable')),
  9855.       f(lbind, rbind, subtract:fixed:'Any', X15:out('Callable')),
  9856.       f(lbind, apply, increment:fixed:'Any', X16:out('Callable')),
  9857.       f(lbind, lbind, shift:fixed:'Any', X17:out('Callable')),
  9858.       f(chain,
  9859.         X15:h:'Callable',
  9860.         ulcorner:g:'Callable',
  9861.         X7:f:'Callable',
  9862.         X18:out('Callable')),
  9863.       f(chain,
  9864.         X14:h:'Callable',
  9865.         X13:g:'Callable',
  9866.         X7:f:'Callable',
  9867.         X19:out('Callable')),
  9868.       f(fork,
  9869.         apply:outer:'Callable',
  9870.         X18:a:'Callable',
  9871.         X19:b:'Callable',
  9872.         X20:out('Callable')),
  9873.       f(compose,
  9874.         X16:outer:'Callable',
  9875.         X20:inner:'Callable',
  9876.         X21:out('Callable')),
  9877.       f(fork,
  9878.         mapply:outer:'Callable',
  9879.         X17:a:'Callable',
  9880.         X21:b:'Callable',
  9881.         X22:out('Callable')),
  9882.       f(rapply,
  9883.         X10:functions:'Container',
  9884.         X3:value:'Any',
  9885.         X23:out('Container')),
  9886.       f(mapply,
  9887.         X22,
  9888.         X23:container:'ContainerContainer',
  9889.         X24:out('FrozenSet')),
  9890.       f(paint, IN:'Grid', X24:obj:'Object', OUT:out('Grid'))
  9891.     ].
  9892. solve('2bcee788', IN, OUT) :-
  9893.     [ f(mostcolor, IN:'Element', X1:out('Integer')),
  9894.       f(objects,
  9895.         IN:'Grid',
  9896.         univalued=true,
  9897.         diagonal=false,
  9898.         without_bg=true,
  9899.         X2:out('Objects')),
  9900.       f(replace,
  9901.         IN:'Grid',
  9902.         X1:replacee:'Integer',
  9903.         'THREE':replacer:'Integer',
  9904.         X3:out('Grid')),
  9905.       f(argmax, X2:'Container', size:compfunc:'Callable', X4:out('Any')),
  9906.       f(argmin, X2:'Container', size:compfunc:'Callable', X5:out('Any')),
  9907.       f(position, X4:a:'Patch', X5:b:'Patch', X6:out('Point')),
  9908.       f(first, X6:'Container', X7:out('Any')),
  9909.       f(last, X6:'Container', X8:out('Any')),
  9910.       f(subgrid, X4:'Patch', X3:'Grid', X9:out('Grid')),
  9911.       f(hline, X5:'Patch', returns=X10),
  9912.       f(hmirror, X9:'Piece', X11:out('Piece')),
  9913.       f(vmirror, X9:'Piece', X12:out('Piece')),
  9914.       f(branch,
  9915.         condition=X10,
  9916.         X11:a:'Any',
  9917.         X12:b:'Any',
  9918.         X13:out('Any')),
  9919.       f(branch,
  9920.         condition=X10,
  9921.         X7:a:'Any',
  9922.         'ZERO':b:'Any',
  9923.         X14:out('Any')),
  9924.       f(branch,
  9925.         condition=X10,
  9926.         'ZERO':a:'Any',
  9927.         X8:b:'Any',
  9928.         X15:out('Any')),
  9929.       f(asobject, X13:'Grid', X16:out('Object')),
  9930.       f(matcher, first, 'THREE':target:'Any', X17:out('Callable')),
  9931.       f(compose,
  9932.         flip:outer:'Callable',
  9933.         X17:inner:'Callable',
  9934.         X18:out('Callable')),
  9935.       f(sfilter,
  9936.         X16:'Container',
  9937.         X18:condition:'Callable',
  9938.         X19:out('Container')),
  9939.       f(ulcorner, X4:'Patch', X20:out('Point')),
  9940.       f(shape, X4:'Piece', X21:out('Point')),
  9941.       f(astuple, X14:a:'Integer', X15:b:'Integer', X22:out('Point')),
  9942.       f(multiply,
  9943.         X21:a:'Numerical',
  9944.         X22:b:'Numerical',
  9945.         X23:out('Numerical')),
  9946.       f(add,
  9947.         X20:a:'Numerical',
  9948.         X23:b:'Numerical',
  9949.         X24:out('Numerical')),
  9950.       f(shift, X19:'Patch', X24:directions:'Point', X25:out('Patch')),
  9951.       f(paint, X3:'Grid', X25:obj:'Object', OUT:out('Grid'))
  9952.     ].
  9953. solve('776ffc46', IN, OUT) :-
  9954.     [ f(objects,
  9955.         IN:'Grid',
  9956.         univalued=true,
  9957.         diagonal=false,
  9958.         without_bg=true,
  9959.         X1:out('Objects')),
  9960.       f(colorfilter,
  9961.         X1:objs:'Objects',
  9962.         'FIVE':value:'Integer',
  9963.         X2:out('Objects')),
  9964.       f(totuple, X2:container:'FrozenSet', X3:out('Tuple')),
  9965.       f(rbind, subgrid, IN:fixed:'Any', X4:out('Callable')),
  9966.       f(apply, X4, X3:'Container', X5:out('Container')),
  9967.       f(multiply, 'FOUR':a:'Numerical', 'SIX':b:'Numerical', X6:out('Numerical')),
  9968.       f(rbind, ofcolor, 'FIVE':fixed:'Any', X7:out('Callable')),
  9969.       f(compose,
  9970.         size:outer:'Callable',
  9971.         X7:inner:'Callable',
  9972.         X8:out('Callable')),
  9973.       f(matcher, X8, X6:target:'Any', X9:out('Callable')),
  9974.       f(extract,
  9975.         X5:'Container',
  9976.         X9:condition:'Callable',
  9977.         X10:out('Any')),
  9978.       f(astuple, 'FIVE':a:'Integer', 'FIVE':b:'Integer', X11:out('Point')),
  9979.       f(crop,
  9980.         X10:'Grid',
  9981.         (1, 1):start:'Point',
  9982.         X11:dims:'Point',
  9983.         X12:out('Grid')),
  9984.       f(objects,
  9985.         X12:'Grid',
  9986.         univalued=true,
  9987.         diagonal=false,
  9988.         without_bg=true,
  9989.         X13:out('Objects')),
  9990.       f(first, X13:'Container', X14:out('Any')),
  9991.       f(color, X14:obj:'Object', X15:out('Integer')),
  9992.       f(normalize, X14:'Patch', X16:out('Patch')),
  9993.       f(toindices, X16:'Patch', X17:out('Indices')),
  9994.       f(totuple, X1:container:'FrozenSet', X18:out('Tuple')),
  9995.       f(apply, normalize, X18:'Container', X19:out('Container')),
  9996.       f(apply, toindices, X19:'Container', X20:out('Container')),
  9997.       f(pair, X18:a:'Tuple', X20:b:'Tuple', X21:out('TupleTuple')),
  9998.       f(matcher, last, X17:target:'Any', X22:out('Callable')),
  9999.       f(sfilter,
  10000.         X21:'Container',
  10001.         X22:condition:'Callable',
  10002.         X23:out('Container')),
  10003.       f(mapply,
  10004.         first,
  10005.         X23:container:'ContainerContainer',
  10006.         X24:out('FrozenSet')),
  10007.       f(recolor, X15:value:'Integer', X24:'Patch', X25:out('Object')),
  10008.       f(paint, IN:'Grid', X25:obj:'Object', OUT:out('Grid'))
  10009.     ].
  10010. solve(f35d900a, IN, OUT) :-
  10011.     [ f(objects,
  10012.         IN:'Grid',
  10013.         univalued=true,
  10014.         diagonal=false,
  10015.         without_bg=true,
  10016.         X1:out('Objects')),
  10017.       f(merge, X1:containers:'ContainerContainer', X2:out('Container')),
  10018.       f(hmirror, X2:'Piece', X3:out('Piece')),
  10019.       f(compose,
  10020.         neighbors:outer:'Callable',
  10021.         last:inner:'Callable',
  10022.         X4:out('Callable')),
  10023.       f(fork,
  10024.         recolor:outer:'Callable',
  10025.         first:a:'Callable',
  10026.         X4:b:'Callable',
  10027.         X5:out('Callable')),
  10028.       f(mapply,
  10029.         X5,
  10030.         X3:container:'ContainerContainer',
  10031.         X6:out('FrozenSet')),
  10032.       f(paint, IN:'Grid', X6:obj:'Object', X7:out('Grid')),
  10033.       f(outbox, X2:'Patch', X8:out('Indices')),
  10034.       f(ulcorner, X8:'Patch', X9:out('Point')),
  10035.       f(subgrid, X8:'Patch', X7:'Grid', X10:out('Grid')),
  10036.       f(dneighbors, (0, 0):loc:'Point', X11:out('Indices')),
  10037.       f(rbind, multiply, 'FOUR':fixed:'Any', X12:out('Callable')),
  10038.       f(apply, double, X11:'Container', X13:out('Container')),
  10039.       f(apply, X12, X11:'Container', X14:out('Container')),
  10040.       f(apply, increment, X13:'Container', X15:out('Container')),
  10041.       f(apply, increment, X14:'Container', X16:out('Container')),
  10042.       f(combine,
  10043.         X15:a:'Container',
  10044.         X16:b:'Container',
  10045.         X17:out('Container')),
  10046.       f(underfill,
  10047.         X10:'Grid',
  10048.         'FIVE':value:'Integer',
  10049.         X17:'Patch',
  10050.         X18:out('Grid')),
  10051.       f(vmirror, X18:'Piece', X19:out('Piece')),
  10052.       f(underfill,
  10053.         X19:'Grid',
  10054.         'FIVE':value:'Integer',
  10055.         X17:'Patch',
  10056.         X20:out('Grid')),
  10057.       f(ofcolor, X20:'Grid', 'FIVE':value:'Integer', X21:out('Indices')),
  10058.       f(hmirror, X20:'Piece', X22:out('Piece')),
  10059.       f(underfill,
  10060.         X22:'Grid',
  10061.         'FIVE':value:'Integer',
  10062.         X21:'Patch',
  10063.         X23:out('Grid')),
  10064.       f(ofcolor, X23:'Grid', 'FIVE':value:'Integer', X24:out('Indices')),
  10065.       f(shift, X24:'Patch', X9:directions:'Point', X25:out('Patch')),
  10066.       f(fill,
  10067.         X7:'Grid',
  10068.         'FIVE':value:'Integer',
  10069.         X25:'Patch',
  10070.         OUT:out('Grid'))
  10071.     ].
  10072. solve('0dfd9992', IN, OUT) :-
  10073.     [ f(height, IN:'Piece', X1:out('Integer')),
  10074.       f(width, IN:'Piece', X2:out('Integer')),
  10075.       f(partition, IN:'Grid', X3:out('Objects')),
  10076.       f(colorfilter,
  10077.         X3:objs:'Objects',
  10078.         'ZERO':value:'Integer',
  10079.         X4:out('Objects')),
  10080.       f(difference,
  10081.         X3:a:'FrozenSet',
  10082.         X4:b:'FrozenSet',
  10083.         X5:out('FrozenSet')),
  10084.       f(merge, X5:containers:'ContainerContainer', X6:out('Container')),
  10085.       f(astuple, X1:a:'Integer', 'ONE':b:'Integer', X7:out('Point')),
  10086.       f(astuple, 'ONE':a:'Integer', X2:b:'Integer', X8:out('Point')),
  10087.       f(decrement, X1:x:'Numerical', X9:out('Numerical')),
  10088.       f(decrement, X2:x:'Numerical', X10:out('Numerical')),
  10089.       f(toivec, X10:i:'Integer', X11:out('Point')),
  10090.       f(tojvec, X9:j:'Integer', X12:out('Point')),
  10091.       f(crop,
  10092.         IN:'Grid',
  10093.         X11:start:'Point',
  10094.         X8:dims:'Point',
  10095.         X13:out('Grid')),
  10096.       f(crop,
  10097.         IN:'Grid',
  10098.         X12:start:'Point',
  10099.         X7:dims:'Point',
  10100.         X14:out('Grid')),
  10101.       f(asobject, X14:'Grid', X15:out('Object')),
  10102.       f(asobject, X13:'Grid', X16:out('Object')),
  10103.       f(vperiod, X15:obj:'Object', X17:out('Integer')),
  10104.       f(hperiod, X16:obj:'Object', X18:out('Integer')),
  10105.       f(astuple, X17:a:'Integer', X18:b:'Integer', X19:out('Point')),
  10106.       f(lbind, multiply, X19:fixed:'Any', X20:out('Callable')),
  10107.       f(neighbors, (0, 0):loc:'Point', X21:out('Indices')),
  10108.       f(mapply,
  10109.         neighbors,
  10110.         X21:container:'ContainerContainer',
  10111.         X22:out('FrozenSet')),
  10112.       f(apply, X20, X22:'Container', X23:out('Container')),
  10113.       f(lbind, shift, X6:fixed:'Any', X24:out('Callable')),
  10114.       f(mapply,
  10115.         X24,
  10116.         X23:container:'ContainerContainer',
  10117.         X25:out('FrozenSet')),
  10118.       f(paint, IN:'Grid', X25:obj:'Object', OUT:out('Grid'))
  10119.     ].
  10120. solve('29ec7d0e', IN, OUT) :-
  10121.     [ f(height, IN:'Piece', X1:out('Integer')),
  10122.       f(width, IN:'Piece', X2:out('Integer')),
  10123.       f(partition, IN:'Grid', X3:out('Objects')),
  10124.       f(colorfilter,
  10125.         X3:objs:'Objects',
  10126.         'ZERO':value:'Integer',
  10127.         X4:out('Objects')),
  10128.       f(difference,
  10129.         X3:a:'FrozenSet',
  10130.         X4:b:'FrozenSet',
  10131.         X5:out('FrozenSet')),
  10132.       f(merge, X5:containers:'ContainerContainer', X6:out('Container')),
  10133.       f(astuple, X1:a:'Integer', 'ONE':b:'Integer', X7:out('Point')),
  10134.       f(astuple, 'ONE':a:'Integer', X2:b:'Integer', X8:out('Point')),
  10135.       f(decrement, X1:x:'Numerical', X9:out('Numerical')),
  10136.       f(decrement, X2:x:'Numerical', X10:out('Numerical')),
  10137.       f(toivec, X10:i:'Integer', X11:out('Point')),
  10138.       f(tojvec, X9:j:'Integer', X12:out('Point')),
  10139.       f(crop,
  10140.         IN:'Grid',
  10141.         X11:start:'Point',
  10142.         X8:dims:'Point',
  10143.         X13:out('Grid')),
  10144.       f(crop,
  10145.         IN:'Grid',
  10146.         X12:start:'Point',
  10147.         X7:dims:'Point',
  10148.         X14:out('Grid')),
  10149.       f(asobject, X14:'Grid', X15:out('Object')),
  10150.       f(asobject, X13:'Grid', X16:out('Object')),
  10151.       f(vperiod, X15:obj:'Object', X17:out('Integer')),
  10152.       f(hperiod, X16:obj:'Object', X18:out('Integer')),
  10153.       f(astuple, X17:a:'Integer', X18:b:'Integer', X19:out('Point')),
  10154.       f(lbind, multiply, X19:fixed:'Any', X20:out('Callable')),
  10155.       f(neighbors, (0, 0):loc:'Point', X21:out('Indices')),
  10156.       f(mapply,
  10157.         neighbors,
  10158.         X21:container:'ContainerContainer',
  10159.         X22:out('FrozenSet')),
  10160.       f(apply, X20, X22:'Container', X23:out('Container')),
  10161.       f(lbind, shift, X6:fixed:'Any', X24:out('Callable')),
  10162.       f(mapply,
  10163.         X24,
  10164.         X23:container:'ContainerContainer',
  10165.         X25:out('FrozenSet')),
  10166.       f(paint, IN:'Grid', X25:obj:'Object', OUT:out('Grid'))
  10167.     ].
  10168. solve('36d67576', IN, OUT) :-
  10169.     [ f(objects,
  10170.         IN:'Grid',
  10171.         univalued=false,
  10172.         diagonal=false,
  10173.         without_bg=true,
  10174.         X1:out('Objects')),
  10175.       f(argmax,
  10176.         X1:'Container',
  10177.         numcolors:compfunc:'Callable',
  10178.         X2:out('Any')),
  10179.       f(astuple, 'TWO':a:'Integer', 'FOUR':b:'Integer', X3:out('Point')),
  10180.       f(rbind, contained, X3:fixed:'Any', X4:out('Callable')),
  10181.       f(compose,
  10182.         X4:outer:'Callable',
  10183.         first:inner:'Callable',
  10184.         X5:out('Callable')),
  10185.       f(rbind, sfilter, X5:fixed:'Any', X6:out('Callable')),
  10186.       f(lbind, rbind, subtract:fixed:'Any', X7:out('Callable')),
  10187.       f(lbind, occurrences, IN:fixed:'Any', X8:out('Callable')),
  10188.       f(lbind, lbind, shift:fixed:'Any', X9:out('Callable')),
  10189.       f(compose,
  10190.         X7:outer:'Callable',
  10191.         ulcorner:inner:'Callable',
  10192.         X10:out('Callable')),
  10193.       f(chain,
  10194.         X10:h:'Callable',
  10195.         X6:g:'Callable',
  10196.         normalize:f:'Callable',
  10197.         X11:out('Callable')),
  10198.       f(chain,
  10199.         X8:h:'Callable',
  10200.         X6:g:'Callable',
  10201.         normalize:f:'Callable',
  10202.         X12:out('Callable')),
  10203.       f(fork,
  10204.         apply:outer:'Callable',
  10205.         X11:a:'Callable',
  10206.         X12:b:'Callable',
  10207.         X13:out('Callable')),
  10208.       f(compose,
  10209.         X9:outer:'Callable',
  10210.         normalize:inner:'Callable',
  10211.         X14:out('Callable')),
  10212.       f(fork,
  10213.         mapply:outer:'Callable',
  10214.         X14:a:'Callable',
  10215.         X13:b:'Callable',
  10216.         X15:out('Callable')),
  10217.       f(astuple, cmirror:a:'Integer', dmirror:b:'Integer', X16:out('Point')),
  10218.       f(astuple, hmirror:a:'Integer', vmirror:b:'Integer', X17:out('Point')),
  10219.       f(combine,
  10220.         X16:a:'Container',
  10221.         X17:b:'Container',
  10222.         X18:out('Container')),
  10223.       f(product,
  10224.         X18:a:'Container',
  10225.         X18:b:'Container',
  10226.         X19:out('FrozenSet')),
  10227.       f(fork,
  10228.         compose:outer:'Callable',
  10229.         first:a:'Callable',
  10230.         last:b:'Callable',
  10231.         X20:out('Callable')),
  10232.       f(apply, X20, X19:'Container', X21:out('Container')),
  10233.       f(totuple, X21:container:'FrozenSet', X22:out('Tuple')),
  10234.       f(combine,
  10235.         X18:a:'Container',
  10236.         X22:b:'Container',
  10237.         X23:out('Container')),
  10238.       f(rapply,
  10239.         X23:functions:'Container',
  10240.         X2:value:'Any',
  10241.         X24:out('Container')),
  10242.       f(mapply,
  10243.         X15,
  10244.         X24:container:'ContainerContainer',
  10245.         X25:out('FrozenSet')),
  10246.       f(paint, IN:'Grid', X25:obj:'Object', OUT:out('Grid'))
  10247.     ].
  10248. solve('98cf29f8', IN, OUT) :-
  10249.     [ f(objects,
  10250.         IN:'Grid',
  10251.         univalued=true,
  10252.         diagonal=false,
  10253.         without_bg=true,
  10254.         X1:out('Objects')),
  10255.       f(fork,
  10256.         multiply:outer:'Callable',
  10257.         height:a:'Callable',
  10258.         width:b:'Callable',
  10259.         X2:out('Callable')),
  10260.       f(fork,
  10261.         equality:outer:'Callable',
  10262.         size:a:'Callable',
  10263.         X2:b:'Callable',
  10264.         X3:out('Callable')),
  10265.       f(extract,
  10266.         X1:'Container',
  10267.         X3:condition:'Callable',
  10268.         X4:out('Any')),
  10269.       f(other, X1:'Container', X4:value:'Any', X5:out('Any')),
  10270.       f(toindices, X5:'Patch', X6:out('Indices')),
  10271.       f(rbind, add, (0, -1):fixed:'Any', X7:out('Callable')),
  10272.       f(rbind, add, (0, 1):fixed:'Any', X8:out('Callable')),
  10273.       f(rbind, add, (-1, 0):fixed:'Any', X9:out('Callable')),
  10274.       f(rbind, add, (1, 0):fixed:'Any', X10:out('Callable')),
  10275.       f(initset, 'ZERO':value:'Any', X11:out('FrozenSet')),
  10276.       f(compose,
  10277.         initset:outer:'Callable',
  10278.         X8:inner:'Callable',
  10279.         X12:out('Callable')),
  10280.       f(compose,
  10281.         initset:outer:'Callable',
  10282.         X10:inner:'Callable',
  10283.         X13:out('Callable')),
  10284.       f(fork,
  10285.         insert:outer:'Callable',
  10286.         X7:a:'Callable',
  10287.         X12:b:'Callable',
  10288.         X14:out('Callable')),
  10289.       f(fork,
  10290.         insert:outer:'Callable',
  10291.         X9:a:'Callable',
  10292.         X13:b:'Callable',
  10293.         X15:out('Callable')),
  10294.       f(matcher, palette, X11:target:'Any', X16:out('Callable')),
  10295.       f(rbind, toobject, IN:fixed:'Any', X17:out('Callable')),
  10296.       f(chain,
  10297.         X16:h:'Callable',
  10298.         X17:g:'Callable',
  10299.         X14:f:'Callable',
  10300.         X18:out('Callable')),
  10301.       f(chain,
  10302.         X16:h:'Callable',
  10303.         X17:g:'Callable',
  10304.         X15:f:'Callable',
  10305.         X19:out('Callable')),
  10306.       f(fork,
  10307.         either:outer:'Callable',
  10308.         X18:a:'Callable',
  10309.         X19:b:'Callable',
  10310.         X20:out('Callable')),
  10311.       f(sfilter,
  10312.         X6:'Container',
  10313.         X20:condition:'Callable',
  10314.         X21:out('Container')),
  10315.       f(cover, IN:'Grid', X21:'Patch', X22:out('Grid')),
  10316.       f(difference,
  10317.         X6:a:'FrozenSet',
  10318.         X21:b:'FrozenSet',
  10319.         X23:out('FrozenSet')),
  10320.       f(gravitate,
  10321.         X23:source:'Patch',
  10322.         X4:destination:'Patch',
  10323.         X24:out('Point')),
  10324.       f(toobject, X23:'Patch', X22:'Grid', X25:out('Object')),
  10325.       f(move,
  10326.         X22:'Grid',
  10327.         X25:obj:'Object',
  10328.         X24:offset:'Point',
  10329.         OUT:out('Grid'))
  10330.     ].
  10331. solve('469497ad', IN, OUT) :-
  10332.     [ f(numcolors, IN:'Element', X1:out('IntegerSet')),
  10333.       f(decrement, X1:x:'Numerical', X2:out('Numerical')),
  10334.       f(upscale,
  10335.         IN:'Element',
  10336.         X2:factor:'Integer',
  10337.         X3:out('Element')),
  10338.       f(objects,
  10339.         X3:'Grid',
  10340.         univalued=false,
  10341.         diagonal=false,
  10342.         without_bg=true,
  10343.         X4:out('Objects')),
  10344.       f(argmin, X4:'Container', size:compfunc:'Callable', X5:out('Any')),
  10345.       f(ulcorner, X5:'Patch', X6:out('Point')),
  10346.       f(llcorner, X5:'Patch', X7:out('Point')),
  10347.       f(shoot,
  10348.         X6:start:'Point',
  10349.         (-1, -1):direction:'Point',
  10350.         X8:out('Indices')),
  10351.       f(shoot,
  10352.         X6:start:'Point',
  10353.         (1, 1):direction:'Point',
  10354.         X9:out('Indices')),
  10355.       f(shoot,
  10356.         X7:start:'Point',
  10357.         (1, -1):direction:'Point',
  10358.         X10:out('Indices')),
  10359.       f(shoot,
  10360.         X7:start:'Point',
  10361.         (-1, 1):direction:'Point',
  10362.         X11:out('Indices')),
  10363.       f(combine,
  10364.         X8:a:'Container',
  10365.         X9:b:'Container',
  10366.         X12:out('Container')),
  10367.       f(combine,
  10368.         X10:a:'Container',
  10369.         X11:b:'Container',
  10370.         X13:out('Container')),
  10371.       f(combine,
  10372.         X12:a:'Container',
  10373.         X13:b:'Container',
  10374.         X14:out('Container')),
  10375.       f(underfill,
  10376.         X3:'Grid',
  10377.         'TWO':value:'Integer',
  10378.         X14:'Patch',
  10379.         X15:out('Grid')),
  10380.       f(objects,
  10381.         X15:'Grid',
  10382.         univalued=true,
  10383.         diagonal=false,
  10384.         without_bg=true,
  10385.         X16:out('Objects')),
  10386.       f(argmax,
  10387.         X16:'Container',
  10388.         lrcorner:compfunc:'Callable',
  10389.         X17:out('Any')),
  10390.       f(urcorner, X17:'Patch', X18:out('Point')),
  10391.       f(tojvec, 'NEG_TWO':j:'Integer', X19:out('Point')),
  10392.       f(add,
  10393.         X18:a:'Numerical',
  10394.         X19:b:'Numerical',
  10395.         X20:out('Numerical')),
  10396.       f(connect, X18:a:'Point', X20:b:'Point', X21:out('Indices')),
  10397.       f(toobject, X21:'Patch', X15:'Grid', X22:out('Object')),
  10398.       f(shift, X22:'Patch', (-1, 0):directions:'Point', X23:out('Patch')),
  10399.       f(color, X23:obj:'Object', X24:out('Integer')),
  10400.       f(equality, X24:a:'Any', 'SIX':b:'Any', returns=X25),
  10401.       f(branch,
  10402.         condition=X25,
  10403.         X23:a:'Any',
  10404.         X17:b:'Any',
  10405.         X26:out('Any')),
  10406.       f(paint, X15:'Grid', X26:obj:'Object', OUT:out('Grid'))
  10407.     ].
  10408. solve('39e1d7f9', IN, OUT) :-
  10409.     [ f(fgpartition, IN:'Grid', X1:out('Objects')),
  10410.       f(objects,
  10411.         IN:'Grid',
  10412.         univalued=true,
  10413.         diagonal=false,
  10414.         without_bg=true,
  10415.         X2:out('Objects')),
  10416.       f(order, X1:'Container', height:compfunc:'Callable', X3:out('Tuple')),
  10417.       f(last, X3:'Container', X4:out('Any')),
  10418.       f(remove, X4:value:'Any', X3:'Container', X5:out('Container')),
  10419.       f(last, X5:'Container', X6:out('Any')),
  10420.       f(color, X6:obj:'Object', X7:out('Integer')),
  10421.       f(colorfilter,
  10422.         X2:objs:'Objects',
  10423.         X7:value:'Integer',
  10424.         X8:out('Objects')),
  10425.       f(power, outbox, 'TWO':n:'Integer', X9:out('Callable')),
  10426.       f(rbind, toobject, IN:fixed:'Any', X10:out('Callable')),
  10427.       f(chain,
  10428.         numcolors:h:'Callable',
  10429.         X10:g:'Callable',
  10430.         X9:f:'Callable',
  10431.         X11:out('Callable')),
  10432.       f(argmax,
  10433.         X8:'Container',
  10434.         X11:compfunc:'Callable',
  10435.         X12:out('Any')),
  10436.       f(ulcorner, X12:'Patch', X13:out('Point')),
  10437.       f(shape, X12:'Piece', X14:out('Point')),
  10438.       f(subtract,
  10439.         X13:a:'Numerical',
  10440.         X14:b:'Numerical',
  10441.         X15:out('Numerical')),
  10442.       f(decrement, X15:x:'Numerical', X16:out('Numerical')),
  10443.       f(multiply,
  10444.         X14:a:'Numerical',
  10445.         'THREE':b:'Numerical',
  10446.         X17:out('Numerical')),
  10447.       f(add, X17:a:'Numerical', (2, 2):b:'Numerical', X18:out('Numerical')),
  10448.       f(crop,
  10449.         IN:'Grid',
  10450.         X16:start:'Point',
  10451.         X18:dims:'Point',
  10452.         X19:out('Grid')),
  10453.       f(asobject, X19:'Grid', X20:out('Object')),
  10454.       f(apply, ulcorner, X8:'Container', X21:out('Container')),
  10455.       f(increment, X14:x:'Numerical', X22:out('Numerical')),
  10456.       f(rbind, subtract, X22:fixed:'Any', X23:out('Callable')),
  10457.       f(apply, X23, X21:'Container', X24:out('Container')),
  10458.       f(lbind, shift, X20:fixed:'Any', X25:out('Callable')),
  10459.       f(mapply,
  10460.         X25,
  10461.         X24:container:'ContainerContainer',
  10462.         X26:out('FrozenSet')),
  10463.       f(paint, IN:'Grid', X26:obj:'Object', OUT:out('Grid'))
  10464.     ].
  10465. solve('484b58aa', IN, OUT) :-
  10466.     [ f(height, IN:'Piece', X1:out('Integer')),
  10467.       f(width, IN:'Piece', X2:out('Integer')),
  10468.       f(partition, IN:'Grid', X3:out('Objects')),
  10469.       f(colorfilter,
  10470.         X3:objs:'Objects',
  10471.         'ZERO':value:'Integer',
  10472.         X4:out('Objects')),
  10473.       f(difference,
  10474.         X3:a:'FrozenSet',
  10475.         X4:b:'FrozenSet',
  10476.         X5:out('FrozenSet')),
  10477.       f(merge, X5:containers:'ContainerContainer', X6:out('Container')),
  10478.       f(astuple, X1:a:'Integer', 'TWO':b:'Integer', X7:out('Point')),
  10479.       f(astuple, 'TWO':a:'Integer', X2:b:'Integer', X8:out('Point')),
  10480.       f(power, decrement, 'TWO':n:'Integer', X9:out('Callable')),
  10481.       f(X9, X1, X10),
  10482.       f(X9, X2, X11),
  10483.       f(toivec, X11:i:'Integer', X12:out('Point')),
  10484.       f(tojvec, X10:j:'Integer', X13:out('Point')),
  10485.       f(crop,
  10486.         IN:'Grid',
  10487.         X12:start:'Point',
  10488.         X8:dims:'Point',
  10489.         X14:out('Grid')),
  10490.       f(crop,
  10491.         IN:'Grid',
  10492.         X13:start:'Point',
  10493.         X7:dims:'Point',
  10494.         X15:out('Grid')),
  10495.       f(asobject, X15:'Grid', X16:out('Object')),
  10496.       f(asobject, X14:'Grid', X17:out('Object')),
  10497.       f(vperiod, X16:obj:'Object', X18:out('Integer')),
  10498.       f(hperiod, X17:obj:'Object', X19:out('Integer')),
  10499.       f(astuple, X18:a:'Integer', X19:b:'Integer', X20:out('Point')),
  10500.       f(lbind, multiply, X20:fixed:'Any', X21:out('Callable')),
  10501.       f(neighbors, (0, 0):loc:'Point', X22:out('Indices')),
  10502.       f(mapply,
  10503.         neighbors,
  10504.         X22:container:'ContainerContainer',
  10505.         X23:out('FrozenSet')),
  10506.       f(apply, X21, X23:'Container', X24:out('Container')),
  10507.       f(lbind, shift, X6:fixed:'Any', X25:out('Callable')),
  10508.       f(mapply,
  10509.         X25,
  10510.         X24:container:'ContainerContainer',
  10511.         X26:out('FrozenSet')),
  10512.       f(paint, IN:'Grid', X26:obj:'Object', OUT:out('Grid'))
  10513.     ].
  10514. solve('3befdf3e', IN, OUT) :-
  10515.     [ f(objects,
  10516.         IN:'Grid',
  10517.         univalued=false,
  10518.         diagonal=false,
  10519.         without_bg=true,
  10520.         X1:out('Objects')),
  10521.       f(totuple, X1:container:'FrozenSet', X2:out('Tuple')),
  10522.       f(apply, mostcolor, X2:'Container', X3:out('Container')),
  10523.       f(apply, leastcolor, X2:'Container', X4:out('Container')),
  10524.       f(apply, width, X2:'Container', X5:out('Container')),
  10525.       f(rbind, subtract, 'TWO':fixed:'Any', X6:out('Callable')),
  10526.       f(apply, X6, X5:'Container', X7:out('Container')),
  10527.       f(apply, invert, X7:'Container', X8:out('Container')),
  10528.       f(papply, recolor, X4:a:'Tuple', X2:b:'Tuple', X9:out('Tuple')),
  10529.       f(apply, toivec, X7:'Container', X10:out('Container')),
  10530.       f(mpapply, shift, X9:a:'Tuple', X10:b:'Tuple', X11:out('Tuple')),
  10531.       f(paint, IN:'Grid', X11:obj:'Object', X12:out('Grid')),
  10532.       f(apply, toivec, X8:'Container', X13:out('Container')),
  10533.       f(mpapply, shift, X9:a:'Tuple', X13:b:'Tuple', X14:out('Tuple')),
  10534.       f(paint, X12:'Grid', X14:obj:'Object', X15:out('Grid')),
  10535.       f(apply, tojvec, X7:'Container', X16:out('Container')),
  10536.       f(mpapply, shift, X9:a:'Tuple', X16:b:'Tuple', X17:out('Tuple')),
  10537.       f(paint, X15:'Grid', X17:obj:'Object', X18:out('Grid')),
  10538.       f(apply, tojvec, X8:'Container', X19:out('Container')),
  10539.       f(mpapply, shift, X9:a:'Tuple', X19:b:'Tuple', X20:out('Tuple')),
  10540.       f(paint, X18:'Grid', X20:obj:'Object', X21:out('Grid')),
  10541.       f(merge, X2:containers:'ContainerContainer', X22:out('Container')),
  10542.       f(paint, X21:'Grid', X22:obj:'Object', X23:out('Grid')),
  10543.       f(first, X4:'Container', X24:out('Any')),
  10544.       f(first, X3:'Container', X25:out('Any')),
  10545.       f(replace,
  10546.         X23:'Grid',
  10547.         X24:replacee:'Integer',
  10548.         'NEG_ONE':replacer:'Integer',
  10549.         X26:out('Grid')),
  10550.       f(replace,
  10551.         X26:'Grid',
  10552.         X25:replacee:'Integer',
  10553.         X24:replacer:'Integer',
  10554.         X27:out('Grid')),
  10555.       f(replace,
  10556.         X27:'Grid',
  10557.         'NEG_ONE':replacee:'Integer',
  10558.         X25:replacer:'Integer',
  10559.         OUT:out('Grid'))
  10560.     ].
  10561. solve('9aec4887', IN, OUT) :-
  10562.     [ f(objects,
  10563.         IN:'Grid',
  10564.         univalued=false,
  10565.         diagonal=true,
  10566.         without_bg=true,
  10567.         X1:out('Objects')),
  10568.       f(colorfilter,
  10569.         X1:objs:'Objects',
  10570.         'EIGHT':value:'Integer',
  10571.         X2:out('Objects')),
  10572.       f(first, X2:'Container', X3:out('Any')),
  10573.       f(other, X1:'Container', X3:value:'Any', X4:out('Any')),
  10574.       f(subgrid, X4:'Patch', IN:'Grid', X5:out('Grid')),
  10575.       f(normalize, X3:'Patch', X6:out('Patch')),
  10576.       f(shift, X6:'Patch', (1, 1):directions:'Point', X7:out('Patch')),
  10577.       f(paint, X5:'Grid', X7:obj:'Object', X8:out('Grid')),
  10578.       f(palette, X8:'Element', X9:out('IntegerSet')),
  10579.       f(remove, 'ZERO':value:'Any', X9:'Container', X10:out('Container')),
  10580.       f(remove, 'EIGHT':value:'Any', X10:'Container', X11:out('Container')),
  10581.       f(lbind, ofcolor, X8:fixed:'Any', X12:out('Callable')),
  10582.       f(rbind, remove, X11:fixed:'Any', X13:out('Callable')),
  10583.       f(lbind, mapply, X12:fixed:'Any', X14:out('Callable')),
  10584.       f(lbind, rbind, manhattan:fixed:'Any', X15:out('Callable')),
  10585.       f(chain,
  10586.         X15:h:'Callable',
  10587.         X14:g:'Callable',
  10588.         X13:f:'Callable',
  10589.         X16:out('Callable')),
  10590.       f(rbind, compose, initset:fixed:'Any', X17:out('Callable')),
  10591.       f(lbind, lbind, manhattan:fixed:'Any', X18:out('Callable')),
  10592.       f(chain,
  10593.         X17:h:'Callable',
  10594.         X18:g:'Callable',
  10595.         X12:f:'Callable',
  10596.         X19:out('Callable')),
  10597.       f(compose,
  10598.         X17:outer:'Callable',
  10599.         X16:inner:'Callable',
  10600.         X20:out('Callable')),
  10601.       f(lbind, fork, greater:fixed:'Any', X21:out('Callable')),
  10602.       f(fork,
  10603.         X21:outer:'Callable',
  10604.         X20:a:'Callable',
  10605.         X19:b:'Callable',
  10606.         X22:out('Callable')),
  10607.       f(ofcolor, X8:'Grid', 'EIGHT':value:'Integer', X23:out('Indices')),
  10608.       f(lbind, sfilter, X23:fixed:'Any', X24:out('Callable')),
  10609.       f(compose,
  10610.         X24:outer:'Callable',
  10611.         X22:inner:'Callable',
  10612.         X25:out('Callable')),
  10613.       f(fork,
  10614.         recolor:outer:'Callable',
  10615.         identity:a:'Callable',
  10616.         X25:b:'Callable',
  10617.         X26:out('Callable')),
  10618.       f(mapply,
  10619.         X26,
  10620.         X11:container:'ContainerContainer',
  10621.         X27:out('FrozenSet')),
  10622.       f(paint, X8:'Grid', X27:obj:'Object', OUT:out('Grid'))
  10623.     ].
  10624. solve('49d1d64f', IN, OUT) :-
  10625.     [ f(upscale, IN:'Element', 'TWO':factor:'Integer', X1:out('Element')),
  10626.       f(asindices, X1:'Grid', X2:out('Indices')),
  10627.       f(corners, X2:'Patch', X3:out('Indices')),
  10628.       f(fill,
  10629.         X1:'Grid',
  10630.         'ZERO':value:'Integer',
  10631.         X3:'Patch',
  10632.         X4:out('Grid')),
  10633.       f(height, X4:'Piece', X5:out('Integer')),
  10634.       f(width, X4:'Piece', X6:out('Integer')),
  10635.       f(equality, X5:a:'Any', 'SIX':b:'Any', returns=X7),
  10636.       f(equality, X6:a:'Any', 'SIX':b:'Any', returns=X8),
  10637.       f(compose,
  10638.         decrement:outer:'Callable',
  10639.         halve:inner:'Callable',
  10640.         X9:out('Callable')),
  10641.       f(X9, X5, X10),
  10642.       f(X9, X6, X11),
  10643.       f(astuple, X10:a:'Integer', X6:b:'Integer', X12:out('Point')),
  10644.       f(crop,
  10645.         X4:'Grid',
  10646.         (0, 0):start:'Point',
  10647.         X12:dims:'Point',
  10648.         X13:out('Grid')),
  10649.       f(increment, X10:x:'Numerical', X14:out('Numerical')),
  10650.       f(toivec, X14:i:'Integer', X15:out('Point')),
  10651.       f(astuple, X14:a:'Integer', X6:b:'Integer', X16:out('Point')),
  10652.       f(crop,
  10653.         X4:'Grid',
  10654.         X15:start:'Point',
  10655.         X16:dims:'Point',
  10656.         X17:out('Grid')),
  10657.       f(vconcat, X13:a:'Grid', X17:b:'Grid', X18:out('Grid')),
  10658.       f(branch,
  10659.         condition=X7,
  10660.         X18:a:'Any',
  10661.         X4:b:'Any',
  10662.         X19:out('Any')),
  10663.       f(decrement, X5:x:'Numerical', X20:out('Numerical')),
  10664.       f(branch,
  10665.         condition=X7,
  10666.         X20:a:'Any',
  10667.         X5:b:'Any',
  10668.         X21:out('Any')),
  10669.       f(astuple, X21:a:'Integer', X11:b:'Integer', X22:out('Point')),
  10670.       f(crop,
  10671.         X19:'Grid',
  10672.         (0, 0):start:'Point',
  10673.         X22:dims:'Point',
  10674.         X23:out('Grid')),
  10675.       f(increment, X11:x:'Numerical', X24:out('Numerical')),
  10676.       f(tojvec, X24:j:'Integer', X25:out('Point')),
  10677.       f(astuple, X21:a:'Integer', X24:b:'Integer', X26:out('Point')),
  10678.       f(crop,
  10679.         X19:'Grid',
  10680.         X25:start:'Point',
  10681.         X26:dims:'Point',
  10682.         X27:out('Grid')),
  10683.       f(hconcat, X23:a:'Grid', X27:b:'Grid', X28:out('Grid')),
  10684.       f(branch,
  10685.         condition=X8,
  10686.         X28:a:'Any',
  10687.         X19:b:'Any',
  10688.         OUT:out('Any'))
  10689.     ].
  10690. solve('57aa92db', IN, OUT) :-
  10691.     [ f(objects,
  10692.         IN:'Grid',
  10693.         univalued=false,
  10694.         diagonal=true,
  10695.         without_bg=true,
  10696.         X1:out('Objects')),
  10697.       f(objects,
  10698.         IN:'Grid',
  10699.         univalued=true,
  10700.         diagonal=false,
  10701.         without_bg=true,
  10702.         X2:out('Objects')),
  10703.       f(lbind, lbind, colorcount:fixed:'Any', X3:out('Callable')),
  10704.       f(fork,
  10705.         apply:outer:'Callable',
  10706.         X3:a:'Callable',
  10707.         palette:b:'Callable',
  10708.         X4:out('Callable')),
  10709.       f(compose,
  10710.         maximum:outer:'Callable',
  10711.         X4:inner:'Callable',
  10712.         X5:out('Callable')),
  10713.       f(compose,
  10714.         minimum:outer:'Callable',
  10715.         X4:inner:'Callable',
  10716.         X6:out('Callable')),
  10717.       f(fork,
  10718.         subtract:outer:'Callable',
  10719.         X5:a:'Callable',
  10720.         X6:b:'Callable',
  10721.         X7:out('Callable')),
  10722.       f(argmax,
  10723.         X1:'Container',
  10724.         X7:compfunc:'Callable',
  10725.         X8:out('Any')),
  10726.       f(leastcolor, X8:'Element', X9:out('Integer')),
  10727.       f(normalize, X8:'Patch', X10:out('Patch')),
  10728.       f(matcher, first, X9:target:'Any', X11:out('Callable')),
  10729.       f(sfilter,
  10730.         X10:'Container',
  10731.         X11:condition:'Callable',
  10732.         X12:out('Container')),
  10733.       f(ulcorner, X12:'Patch', X13:out('Point')),
  10734.       f(colorfilter,
  10735.         X2:objs:'Objects',
  10736.         X9:value:'Integer',
  10737.         X14:out('Objects')),
  10738.       f(rbind, toobject, IN:fixed:'Any', X15:out('Callable')),
  10739.       f(lbind, remove, 'ZERO':fixed:'Any', X16:out('Callable')),
  10740.       f(chain,
  10741.         first:h:'Callable',
  10742.         X16:g:'Callable',
  10743.         palette:f:'Callable',
  10744.         X17:out('Callable')),
  10745.       f(chain,
  10746.         X17:h:'Callable',
  10747.         X15:g:'Callable',
  10748.         outbox:f:'Callable',
  10749.         X18:out('Callable')),
  10750.       f(lbind, multiply, X13:fixed:'Any', X19:out('Callable')),
  10751.       f(compose,
  10752.         X19:outer:'Callable',
  10753.         width:inner:'Callable',
  10754.         X20:out('Callable')),
  10755.       f(fork,
  10756.         subtract:outer:'Callable',
  10757.         ulcorner:a:'Callable',
  10758.         X20:b:'Callable',
  10759.         X21:out('Callable')),
  10760.       f(lbind, shift, X10:fixed:'Any', X22:out('Callable')),
  10761.       f(compose,
  10762.         X22:outer:'Callable',
  10763.         X21:inner:'Callable',
  10764.         X23:out('Callable')),
  10765.       f(fork,
  10766.         upscale:outer:'Callable',
  10767.         X23:a:'Callable',
  10768.         width:b:'Callable',
  10769.         X24:out('Callable')),
  10770.       f(fork,
  10771.         recolor:outer:'Callable',
  10772.         X18:a:'Callable',
  10773.         X24:b:'Callable',
  10774.         X25:out('Callable')),
  10775.       f(mapply,
  10776.         X25,
  10777.         X14:container:'ContainerContainer',
  10778.         X26:out('FrozenSet')),
  10779.       f(paint, IN:'Grid', X26:obj:'Object', X27:out('Grid')),
  10780.       f(merge, X2:containers:'ContainerContainer', X28:out('Container')),
  10781.       f(paint, X27:'Grid', X28:obj:'Object', OUT:out('Grid'))
  10782.     ].
  10783. solve(aba27056, IN, OUT) :-
  10784.     [ f(objects,
  10785.         IN:'Grid',
  10786.         univalued=true,
  10787.         diagonal=false,
  10788.         without_bg=true,
  10789.         X1:out('Objects')),
  10790.       f(mapply,
  10791.         toindices,
  10792.         X1:container:'ContainerContainer',
  10793.         X2:out('FrozenSet')),
  10794.       f(box, X2:'Patch', X3:out('Indices')),
  10795.       f(difference,
  10796.         X3:a:'FrozenSet',
  10797.         X2:b:'FrozenSet',
  10798.         X4:out('FrozenSet')),
  10799.       f(delta, X2:'Patch', X5:out('Indices')),
  10800.       f(position, X5:a:'Patch', X4:b:'Patch', X6:out('Point')),
  10801.       f(interval,
  10802.         'ZERO':start:'Integer',
  10803.         'NINE':stop:'Integer',
  10804.         'ONE':step:'Integer',
  10805.         X7:out('Tuple')),
  10806.       f(lbind, multiply, X6:fixed:'Any', X8:out('Callable')),
  10807.       f(apply, X8, X7:'Container', X9:out('Container')),
  10808.       f(lbind, shift, X4:fixed:'Any', X10:out('Callable')),
  10809.       f(mapply,
  10810.         X10,
  10811.         X9:container:'ContainerContainer',
  10812.         X11:out('FrozenSet')),
  10813.       f(fill,
  10814.         IN:'Grid',
  10815.         'FOUR':value:'Integer',
  10816.         X5:'Patch',
  10817.         X12:out('Grid')),
  10818.       f(fill,
  10819.         X12:'Grid',
  10820.         'FOUR':value:'Integer',
  10821.         X11:'Patch',
  10822.         X13:out('Grid')),
  10823.       f(corners, X4:'Patch', X14:out('Indices')),
  10824.       f(ofcolor, X13:'Grid', 'ZERO':value:'Integer', X15:out('Indices')),
  10825.       f(rbind, toobject, X13:fixed:'Any', X16:out('Callable')),
  10826.       f(rbind, colorcount, 'ZERO':fixed:'Any', X17:out('Callable')),
  10827.       f(chain,
  10828.         X17:h:'Callable',
  10829.         X16:g:'Callable',
  10830.         dneighbors:f:'Callable',
  10831.         X18:out('Callable')),
  10832.       f(matcher, X18, 'TWO':target:'Any', X19:out('Callable')),
  10833.       f(rbind, adjacent, X2:fixed:'Any', X20:out('Callable')),
  10834.       f(rbind, adjacent, X11:fixed:'Any', X21:out('Callable')),
  10835.       f(fork,
  10836.         both:outer:'Callable',
  10837.         X20:a:'Callable',
  10838.         X21:b:'Callable',
  10839.         X22:out('Callable')),
  10840.       f(compose,
  10841.         X22:outer:'Callable',
  10842.         initset:inner:'Callable',
  10843.         X23:out('Callable')),
  10844.       f(sfilter,
  10845.         X15:'Container',
  10846.         X19:condition:'Callable',
  10847.         X24:out('Container')),
  10848.       f(sfilter,
  10849.         X24:'Container',
  10850.         X23:condition:'Callable',
  10851.         X25:out('Container')),
  10852.       f(product,
  10853.         X14:a:'Container',
  10854.         X25:b:'Container',
  10855.         X26:out('FrozenSet')),
  10856.       f(fork,
  10857.         subtract:outer:'Callable',
  10858.         last:a:'Callable',
  10859.         first:b:'Callable',
  10860.         X27:out('Callable')),
  10861.       f(fork,
  10862.         shoot:outer:'Callable',
  10863.         first:a:'Callable',
  10864.         X27:b:'Callable',
  10865.         X28:out('Callable')),
  10866.       f(mapply,
  10867.         X28,
  10868.         X26:container:'ContainerContainer',
  10869.         X29:out('FrozenSet')),
  10870.       f(fill,
  10871.         X13:'Grid',
  10872.         'FOUR':value:'Integer',
  10873.         X29:'Patch',
  10874.         OUT:out('Grid'))
  10875.     ].
  10876. solve(f1cefba8, IN, OUT) :-
  10877.     [ f(palette, IN:'Element', X1:out('IntegerSet')),
  10878.       f(objects,
  10879.         IN:'Grid',
  10880.         univalued=false,
  10881.         diagonal=false,
  10882.         without_bg=true,
  10883.         X2:out('Objects')),
  10884.       f(ofcolor, IN:'Grid', 'ZERO':value:'Integer', X3:out('Indices')),
  10885.       f(first, X2:'Container', X4:out('Any')),
  10886.       f(ulcorner, X4:'Patch', X5:out('Point')),
  10887.       f(subgrid, X4:'Patch', IN:'Grid', X6:out('Grid')),
  10888.       f(power, trim, 'TWO':n:'Integer', X7:out('Callable')),
  10889.       f(X7, X6, X8),
  10890.       f(asindices, X8:'Grid', X9:out('Indices')),
  10891.       f(shift, X9:'Patch', (2, 2):directions:'Point', X10:out('Patch')),
  10892.       f(fill,
  10893.         X6:'Grid',
  10894.         'ZERO':value:'Integer',
  10895.         X10:'Patch',
  10896.         X11:out('Grid')),
  10897.       f(leastcolor, X11:'Element', X12:out('Integer')),
  10898.       f(remove, 'ZERO':value:'Any', X1:'Container', X13:out('Container')),
  10899.       f(other, X13:'Container', X12:value:'Any', X14:out('Any')),
  10900.       f(ofcolor, X11:'Grid', X12:value:'Integer', X15:out('Indices')),
  10901.       f(shift, X15:'Patch', X5:directions:'Point', X16:out('Patch')),
  10902.       f(ofcolor, IN:'Grid', X12:value:'Integer', X17:out('Indices')),
  10903.       f(uppermost, X17:'Patch', X18:out('Integer')),
  10904.       f(lowermost, X17:'Patch', X19:out('Integer')),
  10905.       f(matcher, first, X18:target:'Any', X20:out('Callable')),
  10906.       f(matcher, first, X19:target:'Any', X21:out('Callable')),
  10907.       f(fork,
  10908.         either:outer:'Callable',
  10909.         X20:a:'Callable',
  10910.         X21:b:'Callable',
  10911.         X22:out('Callable')),
  10912.       f(sfilter,
  10913.         X16:'Container',
  10914.         X22:condition:'Callable',
  10915.         X23:out('Container')),
  10916.       f(difference,
  10917.         X16:a:'FrozenSet',
  10918.         X23:b:'FrozenSet',
  10919.         X24:out('FrozenSet')),
  10920.       f(mapply,
  10921.         vfrontier,
  10922.         X23:container:'ContainerContainer',
  10923.         X25:out('FrozenSet')),
  10924.       f(mapply,
  10925.         hfrontier,
  10926.         X24:container:'ContainerContainer',
  10927.         X26:out('FrozenSet')),
  10928.       f(combine,
  10929.         X25:a:'Container',
  10930.         X26:b:'Container',
  10931.         X27:out('Container')),
  10932.       f(intersection,
  10933.         X3:a:'FrozenSet',
  10934.         X27:b:'FrozenSet',
  10935.         X28:out('FrozenSet')),
  10936.       f(fill,
  10937.         IN:'Grid',
  10938.         X14:value:'Integer',
  10939.         X27:'Patch',
  10940.         X29:out('Grid')),
  10941.       f(fill,
  10942.         X29:'Grid',
  10943.         X12:value:'Integer',
  10944.         X28:'Patch',
  10945.         OUT:out('Grid'))
  10946.     ].
  10947. solve('1e32b0e9', IN, OUT) :-
  10948.     [ f(height, IN:'Piece', X1:out('Integer')),
  10949.       f(mostcolor, IN:'Element', X2:out('Integer')),
  10950.       f(asobject, IN:'Grid', X3:out('Object')),
  10951.       f(subtract, X1:a:'Numerical', 'TWO':b:'Numerical', X4:out('Numerical')),
  10952.       f(divide, X4:a:'Numerical', 'THREE':b:'Numerical', X5:out('Numerical')),
  10953.       f(astuple, X5:a:'Integer', X5:b:'Integer', X6:out('Point')),
  10954.       f(crop,
  10955.         IN:'Grid',
  10956.         (0, 0):start:'Point',
  10957.         X6:dims:'Point',
  10958.         X7:out('Grid')),
  10959.       f(partition, X7:'Grid', X8:out('Objects')),
  10960.       f(matcher, color, 'ZERO':target:'Any', X9:out('Callable')),
  10961.       f(compose,
  10962.         flip:outer:'Callable',
  10963.         X9:inner:'Callable',
  10964.         X10:out('Callable')),
  10965.       f(extract,
  10966.         X8:'Container',
  10967.         X10:condition:'Callable',
  10968.         X11:out('Any')),
  10969.       f(initset, X2:value:'Any', X12:out('FrozenSet')),
  10970.       f(palette, X3:'Element', X13:out('IntegerSet')),
  10971.       f(palette, X11:'Element', X14:out('IntegerSet')),
  10972.       f(difference,
  10973.         X13:a:'FrozenSet',
  10974.         X14:b:'FrozenSet',
  10975.         X15:out('FrozenSet')),
  10976.       f(difference,
  10977.         X15:a:'FrozenSet',
  10978.         X12:b:'FrozenSet',
  10979.         X16:out('FrozenSet')),
  10980.       f(first, X16:'Container', X17:out('Any')),
  10981.       f(interval,
  10982.         'ZERO':start:'Integer',
  10983.         'THREE':stop:'Integer',
  10984.         'ONE':step:'Integer',
  10985.         X18:out('Tuple')),
  10986.       f(product,
  10987.         X18:a:'Container',
  10988.         X18:b:'Container',
  10989.         X19:out('FrozenSet')),
  10990.       f(totuple, X19:container:'FrozenSet', X20:out('Tuple')),
  10991.       f(apply, first, X20:'Container', X21:out('Container')),
  10992.       f(apply, last, X20:'Container', X22:out('Container')),
  10993.       f(lbind, multiply, X5:fixed:'Any', X23:out('Callable')),
  10994.       f(apply, X23, X21:'Container', X24:out('Container')),
  10995.       f(apply, X23, X22:'Container', X25:out('Container')),
  10996.       f(papply, add, X24:a:'Tuple', X21:b:'Tuple', X26:out('Tuple')),
  10997.       f(papply, add, X25:a:'Tuple', X22:b:'Tuple', X27:out('Tuple')),
  10998.       f(papply,
  10999.         astuple,
  11000.         X26:a:'Tuple',
  11001.         X27:b:'Tuple',
  11002.         X28:out('Tuple')),
  11003.       f(lbind, shift, X11:fixed:'Any', X29:out('Callable')),
  11004.       f(mapply,
  11005.         X29,
  11006.         X28:container:'ContainerContainer',
  11007.         X30:out('FrozenSet')),
  11008.       f(underfill,
  11009.         IN:'Grid',
  11010.         X17:value:'Integer',
  11011.         X30:'Patch',
  11012.         OUT:out('Grid'))
  11013.     ].
  11014. solve('28e73c20', IN, OUT) :-
  11015.     [ f(width, IN:'Piece', X1:out('Integer')),
  11016.       f(astuple, 'ONE':a:'Integer', 'TWO':b:'Integer', X2:out('Point')),
  11017.       f(astuple, 'TWO':a:'Integer', 'TWO':b:'Integer', X3:out('Point')),
  11018.       f(astuple, 'TWO':a:'Integer', 'ONE':b:'Integer', X4:out('Point')),
  11019.       f(astuple, 'THREE':a:'Integer', 'ONE':b:'Integer', X5:out('Point')),
  11020.       f(canvas, 'THREE':value:'Integer', (1, 1):dimensions:'Point', X6:out('Grid')),
  11021.       f(upscale, X6:'Element', 'FOUR':factor:'Integer', X7:out('Element')),
  11022.       f(initset, (1, 0):value:'Any', X8:out('FrozenSet')),
  11023.       f(insert,
  11024.         (1, 1):value:'Any',
  11025.         X8:container:'FrozenSet',
  11026.         X9:out('FrozenSet')),
  11027.       f(insert,
  11028.         X2:value:'Any',
  11029.         X9:container:'FrozenSet',
  11030.         X10:out('FrozenSet')),
  11031.       f(insert,
  11032.         X3:value:'Any',
  11033.         X10:container:'FrozenSet',
  11034.         X11:out('FrozenSet')),
  11035.       f(fill,
  11036.         X7:'Grid',
  11037.         'ZERO':value:'Integer',
  11038.         X11:'Patch',
  11039.         X12:out('Grid')),
  11040.       f(vupscale, X6:'Grid', 'FIVE':factor:'Integer', X13:out('Grid')),
  11041.       f(hupscale, X13:'Grid', 'THREE':factor:'Integer', X14:out('Grid')),
  11042.       f(insert,
  11043.         X4:value:'Any',
  11044.         X9:container:'FrozenSet',
  11045.         X15:out('FrozenSet')),
  11046.       f(insert,
  11047.         X5:value:'Any',
  11048.         X15:container:'FrozenSet',
  11049.         X16:out('FrozenSet')),
  11050.       f(fill,
  11051.         X14:'Grid',
  11052.         'ZERO':value:'Integer',
  11053.         X16:'Patch',
  11054.         X17:out('Grid')),
  11055.       f(even, X1:n:'Integer', returns=X18),
  11056.       f(branch,
  11057.         condition=X18,
  11058.         X12:a:'Any',
  11059.         X17:b:'Any',
  11060.         X19:out('Any')),
  11061.       f(canvas, 'ZERO':value:'Integer', (1, 1):dimensions:'Point', X20:out('Grid')),
  11062.       f(lbind, hupscale, X20:fixed:'Any', X21:out('Callable')),
  11063.       f(chain,
  11064.         X21:h:'Callable',
  11065.         decrement:g:'Callable',
  11066.         height:f:'Callable',
  11067.         X22:out('Callable')),
  11068.       f(rbind, hconcat, X6:fixed:'Any', X23:out('Callable')),
  11069.       f(compose,
  11070.         X23:outer:'Callable',
  11071.         X22:inner:'Callable',
  11072.         X24:out('Callable')),
  11073.       f(lbind, hupscale, X6:fixed:'Any', X25:out('Callable')),
  11074.       f(compose,
  11075.         X25:outer:'Callable',
  11076.         height:inner:'Callable',
  11077.         X26:out('Callable')),
  11078.       f(fork,
  11079.         vconcat:outer:'Callable',
  11080.         X24:a:'Callable',
  11081.         rot90:b:'Callable',
  11082.         X27:out('Callable')),
  11083.       f(fork,
  11084.         vconcat:outer:'Callable',
  11085.         X26:a:'Callable',
  11086.         X27:b:'Callable',
  11087.         X28:out('Callable')),
  11088.       f(subtract,
  11089.         X1:a:'Numerical',
  11090.         'FOUR':b:'Numerical',
  11091.         X29:out('Numerical')),
  11092.       f(power, X28, X29:n:'Integer', X30:out('Callable')),
  11093.       f(X30, X19, OUT)
  11094.     ].
  11095. solve('4c5c2cf0', IN, OUT) :-
  11096.     [ f(objects,
  11097.         IN:'Grid',
  11098.         univalued=true,
  11099.         diagonal=true,
  11100.         without_bg=true,
  11101.         X1:out('Objects')),
  11102.       f(objects,
  11103.         IN:'Grid',
  11104.         univalued=false,
  11105.         diagonal=true,
  11106.         without_bg=true,
  11107.         X2:out('Objects')),
  11108.       f(first, X2:'Container', X3:out('Any')),
  11109.       f(rbind, subgrid, IN:fixed:'Any', X4:out('Callable')),
  11110.       f(fork,
  11111.         equality:outer:'Callable',
  11112.         identity:a:'Callable',
  11113.         rot90:b:'Callable',
  11114.         X5:out('Callable')),
  11115.       f(compose,
  11116.         X5:outer:'Callable',
  11117.         X4:inner:'Callable',
  11118.         X6:out('Callable')),
  11119.       f(extract,
  11120.         X1:'Container',
  11121.         X6:condition:'Callable',
  11122.         X7:out('Any')),
  11123.       f(center, X7:'Patch', X8:out('Point')),
  11124.       f(subgrid, X3:'Patch', IN:'Grid', X9:out('Grid')),
  11125.       f(hmirror, X9:'Piece', X10:out('Piece')),
  11126.       f(objects,
  11127.         X10:'Grid',
  11128.         univalued=false,
  11129.         diagonal=true,
  11130.         without_bg=true,
  11131.         X11:out('Objects')),
  11132.       f(first, X11:'Container', X12:out('Any')),
  11133.       f(objects,
  11134.         X10:'Grid',
  11135.         univalued=true,
  11136.         diagonal=true,
  11137.         without_bg=true,
  11138.         X13:out('Objects')),
  11139.       f(extract,
  11140.         X13:'Container',
  11141.         X6:condition:'Callable',
  11142.         X14:out('Any')),
  11143.       f(center, X14:'Patch', X15:out('Point')),
  11144.       f(subtract,
  11145.         X8:a:'Numerical',
  11146.         X15:b:'Numerical',
  11147.         X16:out('Numerical')),
  11148.       f(shift, X12:'Patch', X16:directions:'Point', X17:out('Patch')),
  11149.       f(paint, IN:'Grid', X17:obj:'Object', X18:out('Grid')),
  11150.       f(objects,
  11151.         X18:'Grid',
  11152.         univalued=false,
  11153.         diagonal=true,
  11154.         without_bg=true,
  11155.         X19:out('Objects')),
  11156.       f(first, X19:'Container', X20:out('Any')),
  11157.       f(subgrid, X20:'Patch', X18:'Grid', X21:out('Grid')),
  11158.       f(vmirror, X21:'Piece', X22:out('Piece')),
  11159.       f(objects,
  11160.         X22:'Grid',
  11161.         univalued=false,
  11162.         diagonal=true,
  11163.         without_bg=true,
  11164.         X23:out('Objects')),
  11165.       f(first, X23:'Container', X24:out('Any')),
  11166.       f(objects,
  11167.         X22:'Grid',
  11168.         univalued=true,
  11169.         diagonal=true,
  11170.         without_bg=true,
  11171.         X25:out('Objects')),
  11172.       f(color, X7:obj:'Object', X26:out('Integer')),
  11173.       f(matcher, color, X26:target:'Any', X27:out('Callable')),
  11174.       f(extract,
  11175.         X25:'Container',
  11176.         X27:condition:'Callable',
  11177.         X28:out('Any')),
  11178.       f(center, X28:'Patch', X29:out('Point')),
  11179.       f(subtract,
  11180.         X8:a:'Numerical',
  11181.         X29:b:'Numerical',
  11182.         X30:out('Numerical')),
  11183.       f(shift, X24:'Patch', X30:directions:'Point', X31:out('Patch')),
  11184.       f(paint, X18:'Grid', X31:obj:'Object', OUT:out('Grid'))
  11185.     ].
  11186. solve('508bd3b6', IN, OUT) :-
  11187.     [ f(width, IN:'Piece', X1:out('Integer')),
  11188.       f(objects,
  11189.         IN:'Grid',
  11190.         univalued=true,
  11191.         diagonal=true,
  11192.         without_bg=true,
  11193.         X2:out('Objects')),
  11194.       f(argmin, X2:'Container', size:compfunc:'Callable', X3:out('Any')),
  11195.       f(argmax, X2:'Container', size:compfunc:'Callable', X4:out('Any')),
  11196.       f(ulcorner, X3:'Patch', X5:out('Point')),
  11197.       f(urcorner, X3:'Patch', X6:out('Point')),
  11198.       f(index, IN:'Grid', X5:loc:'Point', X7:out('Integer')),
  11199.       f(equality, X7:a:'Any', 'EIGHT':b:'Any', returns=X8),
  11200.       f(branch,
  11201.         condition=X8,
  11202.         X5:a:'Any',
  11203.         X6:b:'Any',
  11204.         X9:out('Any')),
  11205.       f(branch,
  11206.         condition=X8,
  11207.         (1, 1):a:'Any',
  11208.         (1, -1):b:'Any',
  11209.         X10:out('Any')),
  11210.       f(multiply,
  11211.         X10:a:'Numerical',
  11212.         X1:b:'Numerical',
  11213.         X11:out('Numerical')),
  11214.       f(double, X11:n:'Numerical', X12:out('Numerical')),
  11215.       f(add,
  11216.         X9:a:'Numerical',
  11217.         X12:b:'Numerical',
  11218.         X13:out('Numerical')),
  11219.       f(subtract,
  11220.         X9:a:'Numerical',
  11221.         X12:b:'Numerical',
  11222.         X14:out('Numerical')),
  11223.       f(connect, X13:a:'Point', X14:b:'Point', X15:out('Indices')),
  11224.       f(fill,
  11225.         IN:'Grid',
  11226.         'THREE':value:'Integer',
  11227.         X15:'Patch',
  11228.         X16:out('Grid')),
  11229.       f(paint, X16:'Grid', X4:obj:'Object', X17:out('Grid')),
  11230.       f(objects,
  11231.         X17:'Grid',
  11232.         univalued=true,
  11233.         diagonal=false,
  11234.         without_bg=true,
  11235.         X18:out('Objects')),
  11236.       f(rbind, adjacent, X4:fixed:'Any', X19:out('Callable')),
  11237.       f(extract,
  11238.         X18:'Container',
  11239.         X19:condition:'Callable',
  11240.         X20:out('Any')),
  11241.       f(first, X20:'Container', X21:out('Any')),
  11242.       f(last, X21:'Container', X22:out('Any')),
  11243.       f(flip, b=X8, returns=X23),
  11244.       f(branch,
  11245.         condition=X23,
  11246.         (1, 1):a:'Any',
  11247.         (1, -1):b:'Any',
  11248.         X24:out('Any')),
  11249.       f(multiply,
  11250.         X24:a:'Numerical',
  11251.         X1:b:'Numerical',
  11252.         X25:out('Numerical')),
  11253.       f(double, X25:n:'Numerical', X26:out('Numerical')),
  11254.       f(add,
  11255.         X22:a:'Numerical',
  11256.         X26:b:'Numerical',
  11257.         X27:out('Numerical')),
  11258.       f(subtract,
  11259.         X22:a:'Numerical',
  11260.         X26:b:'Numerical',
  11261.         X28:out('Numerical')),
  11262.       f(connect, X27:a:'Point', X28:b:'Point', X29:out('Indices')),
  11263.       f(fill,
  11264.         X17:'Grid',
  11265.         'THREE':value:'Integer',
  11266.         X29:'Patch',
  11267.         X30:out('Grid')),
  11268.       f(paint, X30:'Grid', X3:obj:'Object', X31:out('Grid')),
  11269.       f(paint, X31:'Grid', X4:obj:'Object', OUT:out('Grid'))
  11270.     ].
  11271. solve('6d0160f0', IN, OUT) :-
  11272.     [ f(ofcolor, IN:'Grid', 'FOUR':value:'Integer', X1:out('Indices')),
  11273.       f(first, X1:'Container', X2:out('Any')),
  11274.       f(first, X2:'Container', X3:out('Any')),
  11275.       f(last, X2:'Container', X4:out('Any')),
  11276.       f(greater, X3:a:'Integer', 'THREE':b:'Integer', returns=X5),
  11277.       f(greater, X3:a:'Integer', 'SEVEN':b:'Integer', returns=X6),
  11278.       f(greater, X4:a:'Integer', 'THREE':b:'Integer', returns=X7),
  11279.       f(greater, X4:a:'Integer', 'SEVEN':b:'Integer', returns=X8),
  11280.       f(branch, condition=X5, 'FOUR':a:'Any', 'ZERO':b:'Any', X9:out('Any')),
  11281.       f(branch,
  11282.         condition=X6,
  11283.         'EIGHT':a:'Any',
  11284.         X9:b:'Any',
  11285.         X10:out('Any')),
  11286.       f(branch, condition=X7, 'FOUR':a:'Any', 'ZERO':b:'Any', X11:out('Any')),
  11287.       f(branch,
  11288.         condition=X8,
  11289.         'EIGHT':a:'Any',
  11290.         X11:b:'Any',
  11291.         X12:out('Any')),
  11292.       f(astuple, X10:a:'Integer', X12:b:'Integer', X13:out('Point')),
  11293.       f(initset, 'ZERO':value:'Any', X14:out('FrozenSet')),
  11294.       f(insert,
  11295.         'FOUR':value:'Any',
  11296.         X14:container:'FrozenSet',
  11297.         X15:out('FrozenSet')),
  11298.       f(insert,
  11299.         'EIGHT':value:'Any',
  11300.         X15:container:'FrozenSet',
  11301.         X16:out('FrozenSet')),
  11302.       f(product,
  11303.         X16:a:'Container',
  11304.         X16:b:'Container',
  11305.         X17:out('FrozenSet')),
  11306.       f(crop,
  11307.         IN:'Grid',
  11308.         (0, 0):start:'Point',
  11309.         (3, 3):dims:'Point',
  11310.         X18:out('Grid')),
  11311.       f(asindices, X18:'Grid', X19:out('Indices')),
  11312.       f(recolor, 'ZERO':value:'Integer', X19:'Patch', X20:out('Object')),
  11313.       f(lbind, shift, X20:fixed:'Any', X21:out('Callable')),
  11314.       f(mapply,
  11315.         X21,
  11316.         X17:container:'ContainerContainer',
  11317.         X22:out('FrozenSet')),
  11318.       f(paint, IN:'Grid', X22:obj:'Object', X23:out('Grid')),
  11319.       f(crop,
  11320.         IN:'Grid',
  11321.         X13:start:'Point',
  11322.         (3, 3):dims:'Point',
  11323.         X24:out('Grid')),
  11324.       f(replace,
  11325.         X24:'Grid',
  11326.         'FIVE':replacee:'Integer',
  11327.         'ZERO':replacer:'Integer',
  11328.         X25:out('Grid')),
  11329.       f(ofcolor, X25:'Grid', 'FOUR':value:'Integer', X26:out('Indices')),
  11330.       f(first, X26:'Container', X27:out('Any')),
  11331.       f(asindices, X25:'Grid', X28:out('Indices')),
  11332.       f(toobject, X28:'Patch', X25:'Grid', X29:out('Object')),
  11333.       f(multiply,
  11334.         X27:a:'Numerical',
  11335.         'FOUR':b:'Numerical',
  11336.         X30:out('Numerical')),
  11337.       f(shift, X29:'Patch', X30:directions:'Point', X31:out('Patch')),
  11338.       f(paint, X23:'Grid', X31:obj:'Object', OUT:out('Grid'))
  11339.     ].
  11340. solve(f8a8fe49, IN, OUT) :-
  11341.     [ f(objects,
  11342.         IN:'Grid',
  11343.         univalued=true,
  11344.         diagonal=false,
  11345.         without_bg=true,
  11346.         X1:out('Objects')),
  11347.       f(replace,
  11348.         IN:'Grid',
  11349.         'FIVE':replacee:'Integer',
  11350.         'ZERO':replacer:'Integer',
  11351.         X2:out('Grid')),
  11352.       f(colorfilter,
  11353.         X1:objs:'Objects',
  11354.         'TWO':value:'Integer',
  11355.         X3:out('Objects')),
  11356.       f(first, X3:'Container', X4:out('Any')),
  11357.       f(portrait, X4:'Piece', returns=X5),
  11358.       f(branch,
  11359.         condition=X5,
  11360.         hsplit:a:'Any',
  11361.         vsplit:b:'Any',
  11362.         X6:out('Any')),
  11363.       f(branch,
  11364.         condition=X5,
  11365.         vmirror:a:'Any',
  11366.         hmirror:b:'Any',
  11367.         X7:out('Any')),
  11368.       f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X8:out('Indices')),
  11369.       f(subgrid, X8:'Patch', IN:'Grid', X9:out('Grid')),
  11370.       f(trim, X9:'Grid', X10:out('Grid')),
  11371.       f(X7, X10, X11),
  11372.       f(X6, X11, 'TWO', X12),
  11373.       f(compose,
  11374.         normalize:outer:'Callable',
  11375.         asobject:inner:'Callable',
  11376.         X13:out('Callable')),
  11377.       f(apply, X13, X12:'Container', X14:out('Container')),
  11378.       f(last, X14:'Container', X15:out('Any')),
  11379.       f(first, X14:'Container', X16:out('Any')),
  11380.       f(ulcorner, X8:'Patch', X17:out('Point')),
  11381.       f(increment, X17:x:'Numerical', X18:out('Numerical')),
  11382.       f(shift, X15:'Patch', X18:directions:'Point', X19:out('Patch')),
  11383.       f(shift, X16:'Patch', X18:directions:'Point', X20:out('Patch')),
  11384.       f(branch,
  11385.         condition=X5,
  11386.         width:a:'Any',
  11387.         height:b:'Any',
  11388.         X21:out('Any')),
  11389.       f(branch,
  11390.         condition=X5,
  11391.         tojvec:a:'Any',
  11392.         toivec:b:'Any',
  11393.         X22:out('Any')),
  11394.       f(X21, X15, X23),
  11395.       f(double, X23:n:'Numerical', X24:out('Numerical')),
  11396.       f(compose,
  11397.         X22:outer:'Callable',
  11398.         increment:inner:'Callable',
  11399.         X25:out('Callable')),
  11400.       f(X25, X23, X26),
  11401.       f(invert, X26:n:'Numerical', X27:out('Numerical')),
  11402.       f(X25, X24, X28),
  11403.       f(shift, X19:'Patch', X27:directions:'Point', X29:out('Patch')),
  11404.       f(shift, X20:'Patch', X28:directions:'Point', X30:out('Patch')),
  11405.       f(paint, X2:'Grid', X29:obj:'Object', X31:out('Grid')),
  11406.       f(paint, X31:'Grid', X30:obj:'Object', OUT:out('Grid'))
  11407.     ].
  11408. solve(d07ae81c, IN, OUT) :-
  11409.     [ f(objects,
  11410.         IN:'Grid',
  11411.         univalued=true,
  11412.         diagonal=false,
  11413.         without_bg=false,
  11414.         X1:out('Objects')),
  11415.       f(sizefilter, X1:'Container', 'ONE':n:'Integer', X2:out('FrozenSet')),
  11416.       f(apply, color, X2:'Container', X3:out('Container')),
  11417.       f(difference,
  11418.         X1:a:'FrozenSet',
  11419.         X2:b:'FrozenSet',
  11420.         X4:out('FrozenSet')),
  11421.       f(apply, color, X4:'Container', X5:out('Container')),
  11422.       f(first, X5:'Container', X6:out('Any')),
  11423.       f(last, X5:'Container', X7:out('Any')),
  11424.       f(ofcolor, IN:'Grid', X6:value:'Integer', X8:out('Indices')),
  11425.       f(ofcolor, IN:'Grid', X7:value:'Integer', X9:out('Indices')),
  11426.       f(rbind, shoot, (1, 1):fixed:'Any', X10:out('Callable')),
  11427.       f(rbind, shoot, (-1, -1):fixed:'Any', X11:out('Callable')),
  11428.       f(rbind, shoot, (1, -1):fixed:'Any', X12:out('Callable')),
  11429.       f(rbind, shoot, (-1, 1):fixed:'Any', X13:out('Callable')),
  11430.       f(fork,
  11431.         combine:outer:'Callable',
  11432.         X10:a:'Callable',
  11433.         X11:b:'Callable',
  11434.         X14:out('Callable')),
  11435.       f(fork,
  11436.         combine:outer:'Callable',
  11437.         X12:a:'Callable',
  11438.         X13:b:'Callable',
  11439.         X15:out('Callable')),
  11440.       f(fork,
  11441.         combine:outer:'Callable',
  11442.         X14:a:'Callable',
  11443.         X15:b:'Callable',
  11444.         X16:out('Callable')),
  11445.       f(compose,
  11446.         X16:outer:'Callable',
  11447.         center:inner:'Callable',
  11448.         X17:out('Callable')),
  11449.       f(mapply,
  11450.         X17,
  11451.         X2:container:'ContainerContainer',
  11452.         X18:out('FrozenSet')),
  11453.       f(intersection,
  11454.         X8:a:'FrozenSet',
  11455.         X18:b:'FrozenSet',
  11456.         X19:out('FrozenSet')),
  11457.       f(intersection,
  11458.         X9:a:'FrozenSet',
  11459.         X18:b:'FrozenSet',
  11460.         X20:out('FrozenSet')),
  11461.       f(first, X2:'Container', X21:out('Any')),
  11462.       f(color, X21:obj:'Object', X22:out('Integer')),
  11463.       f(center, X21:'Patch', X23:out('Point')),
  11464.       f(neighbors, X23:loc:'Point', X24:out('Indices')),
  11465.       f(toobject, X24:'Patch', IN:'Grid', X25:out('Object')),
  11466.       f(mostcolor, X25:'Element', X26:out('Integer')),
  11467.       f(other, X3:'Container', X22:value:'Any', X27:out('Any')),
  11468.       f(equality, X26:a:'Any', X6:b:'Any', returns=X28),
  11469.       f(branch,
  11470.         condition=X28,
  11471.         X22:a:'Any',
  11472.         X27:b:'Any',
  11473.         X29:out('Any')),
  11474.       f(branch,
  11475.         condition=X28,
  11476.         X27:a:'Any',
  11477.         X22:b:'Any',
  11478.         X30:out('Any')),
  11479.       f(fill,
  11480.         IN:'Grid',
  11481.         X29:value:'Integer',
  11482.         X19:'Patch',
  11483.         X31:out('Grid')),
  11484.       f(fill,
  11485.         X31:'Grid',
  11486.         X30:value:'Integer',
  11487.         X20:'Patch',
  11488.         OUT:out('Grid'))
  11489.     ].
  11490. solve('6a1e5592', IN, OUT) :-
  11491.     [ f(width, IN:'Piece', X1:out('Integer')),
  11492.       f(objects,
  11493.         IN:'Grid',
  11494.         univalued=true,
  11495.         diagonal=false,
  11496.         without_bg=true,
  11497.         X2:out('Objects')),
  11498.       f(astuple, 'FIVE':a:'Integer', X1:b:'Integer', X3:out('Point')),
  11499.       f(crop,
  11500.         IN:'Grid',
  11501.         (0, 0):start:'Point',
  11502.         X3:dims:'Point',
  11503.         X4:out('Grid')),
  11504.       f(colorfilter,
  11505.         X2:objs:'Objects',
  11506.         'FIVE':value:'Integer',
  11507.         X5:out('Objects')),
  11508.       f(merge, X5:containers:'ContainerContainer', X6:out('Container')),
  11509.       f(cover, IN:'Grid', X6:'Patch', X7:out('Grid')),
  11510.       f(compose,
  11511.         toindices:outer:'Callable',
  11512.         normalize:inner:'Callable',
  11513.         X8:out('Callable')),
  11514.       f(apply, X8, X5:'Container', X9:out('Container')),
  11515.       f(asindices, X4:'Grid', X10:out('Indices')),
  11516.       f(ofcolor, X4:'Grid', 'ZERO':value:'Integer', X11:out('Indices')),
  11517.       f(ofcolor, X4:'Grid', 'TWO':value:'Integer', X12:out('Indices')),
  11518.       f(rbind, multiply, 'TEN':fixed:'Any', X13:out('Callable')),
  11519.       f(rbind, multiply, 'EIGHT':fixed:'Any', X14:out('Callable')),
  11520.       f(rbind, intersection, X12:fixed:'Any', X15:out('Callable')),
  11521.       f(rbind, intersection, X11:fixed:'Any', X16:out('Callable')),
  11522.       f(rbind, intersection, X10:fixed:'Any', X17:out('Callable')),
  11523.       f(chain,
  11524.         X13:h:'Callable',
  11525.         size:g:'Callable',
  11526.         X15:f:'Callable',
  11527.         X18:out('Callable')),
  11528.       f(chain,
  11529.         size:h:'Callable',
  11530.         X16:g:'Callable',
  11531.         delta:f:'Callable',
  11532.         X19:out('Callable')),
  11533.       f(compose,
  11534.         X14:outer:'Callable',
  11535.         uppermost:inner:'Callable',
  11536.         X20:out('Callable')),
  11537.       f(chain,
  11538.         size:h:'Callable',
  11539.         X16:g:'Callable',
  11540.         outbox:f:'Callable',
  11541.         X21:out('Callable')),
  11542.       f(chain,
  11543.         X13:h:'Callable',
  11544.         size:g:'Callable',
  11545.         X17:f:'Callable',
  11546.         X22:out('Callable')),
  11547.       f(compose,
  11548.         invert:outer:'Callable',
  11549.         X18:inner:'Callable',
  11550.         X23:out('Callable')),
  11551.       f(fork,
  11552.         add:outer:'Callable',
  11553.         X22:a:'Callable',
  11554.         X23:b:'Callable',
  11555.         X24:out('Callable')),
  11556.       f(fork,
  11557.         subtract:outer:'Callable',
  11558.         X24:a:'Callable',
  11559.         X21:b:'Callable',
  11560.         X25:out('Callable')),
  11561.       f(fork,
  11562.         subtract:outer:'Callable',
  11563.         X25:a:'Callable',
  11564.         X20:b:'Callable',
  11565.         X26:out('Callable')),
  11566.       f(fork,
  11567.         subtract:outer:'Callable',
  11568.         X26:a:'Callable',
  11569.         X19:b:'Callable',
  11570.         X27:out('Callable')),
  11571.       f(rbind, apply, X10:fixed:'Any', X28:out('Callable')),
  11572.       f(lbind, lbind, shift:fixed:'Any', X29:out('Callable')),
  11573.       f(rbind, argmax, X27:fixed:'Any', X30:out('Callable')),
  11574.       f(chain,
  11575.         X30:h:'Callable',
  11576.         X28:g:'Callable',
  11577.         X29:f:'Callable',
  11578.         X31:out('Callable')),
  11579.       f(mapply,
  11580.         X31,
  11581.         X9:container:'ContainerContainer',
  11582.         X32:out('FrozenSet')),
  11583.       f(fill,
  11584.         X7:'Grid',
  11585.         'ONE':value:'Integer',
  11586.         X32:'Patch',
  11587.         OUT:out('Grid'))
  11588.     ].
  11589. solve('0e206a2e', IN, OUT) :-
  11590.     [ f(palette, IN:'Element', X1:out('IntegerSet')),
  11591.       f(objects,
  11592.         IN:'Grid',
  11593.         univalued=false,
  11594.         diagonal=false,
  11595.         without_bg=true,
  11596.         X2:out('Objects')),
  11597.       f(rbind, greater, 'ONE':fixed:'Any', X3:out('Callable')),
  11598.       f(compose,
  11599.         X3:outer:'Callable',
  11600.         numcolors:inner:'Callable',
  11601.         X4:out('Callable')),
  11602.       f(sfilter,
  11603.         X2:'Container',
  11604.         X4:condition:'Callable',
  11605.         X5:out('Container')),
  11606.       f(remove, 'ZERO':value:'Any', X1:'Container', X6:out('Container')),
  11607.       f(lbind, colorcount, IN:fixed:'Any', X7:out('Callable')),
  11608.       f(argmax,
  11609.         X6:'Container',
  11610.         X7:compfunc:'Callable',
  11611.         X8:out('Any')),
  11612.       f(remove, X8:value:'Any', X6:'Container', X9:out('Container')),
  11613.       f(rbind, contained, X9:fixed:'Any', X10:out('Callable')),
  11614.       f(compose,
  11615.         X10:outer:'Callable',
  11616.         first:inner:'Callable',
  11617.         X11:out('Callable')),
  11618.       f(rbind, sfilter, X11:fixed:'Any', X12:out('Callable')),
  11619.       f(lbind, rbind, subtract:fixed:'Any', X13:out('Callable')),
  11620.       f(lbind, occurrences, IN:fixed:'Any', X14:out('Callable')),
  11621.       f(lbind, lbind, shift:fixed:'Any', X15:out('Callable')),
  11622.       f(compose,
  11623.         X13:outer:'Callable',
  11624.         ulcorner:inner:'Callable',
  11625.         X16:out('Callable')),
  11626.       f(chain,
  11627.         X16:h:'Callable',
  11628.         X12:g:'Callable',
  11629.         normalize:f:'Callable',
  11630.         X17:out('Callable')),
  11631.       f(chain,
  11632.         X14:h:'Callable',
  11633.         X12:g:'Callable',
  11634.         normalize:f:'Callable',
  11635.         X18:out('Callable')),
  11636.       f(fork,
  11637.         apply:outer:'Callable',
  11638.         X17:a:'Callable',
  11639.         X18:b:'Callable',
  11640.         X19:out('Callable')),
  11641.       f(compose,
  11642.         X15:outer:'Callable',
  11643.         normalize:inner:'Callable',
  11644.         X20:out('Callable')),
  11645.       f(fork,
  11646.         mapply:outer:'Callable',
  11647.         X20:a:'Callable',
  11648.         X19:b:'Callable',
  11649.         X21:out('Callable')),
  11650.       f(astuple, cmirror:a:'Integer', dmirror:b:'Integer', X22:out('Point')),
  11651.       f(astuple, hmirror:a:'Integer', vmirror:b:'Integer', X23:out('Point')),
  11652.       f(combine,
  11653.         X22:a:'Container',
  11654.         X23:b:'Container',
  11655.         X24:out('Container')),
  11656.       f(product,
  11657.         X24:a:'Container',
  11658.         X24:b:'Container',
  11659.         X25:out('FrozenSet')),
  11660.       f(fork,
  11661.         compose:outer:'Callable',
  11662.         first:a:'Callable',
  11663.         last:b:'Callable',
  11664.         X26:out('Callable')),
  11665.       f(apply, X26, X25:'Container', X27:out('Container')),
  11666.       f(totuple, X27:container:'FrozenSet', X28:out('Tuple')),
  11667.       f(combine,
  11668.         X24:a:'Container',
  11669.         X28:b:'Container',
  11670.         X29:out('Container')),
  11671.       f(lbind, rapply, X29:fixed:'Any', X30:out('Callable')),
  11672.       f(mapply,
  11673.         X30,
  11674.         X5:container:'ContainerContainer',
  11675.         X31:out('FrozenSet')),
  11676.       f(mapply,
  11677.         X21,
  11678.         X31:container:'ContainerContainer',
  11679.         X32:out('FrozenSet')),
  11680.       f(paint, IN:'Grid', X32:obj:'Object', X33:out('Grid')),
  11681.       f(merge, X5:containers:'ContainerContainer', X34:out('Container')),
  11682.       f(cover, X33:'Grid', X34:'Patch', OUT:out('Grid'))
  11683.     ].
  11684. solve(d22278a0, IN, OUT) :-
  11685.     [ f(asindices, IN:'Grid', X1:out('Indices')),
  11686.       f(objects,
  11687.         IN:'Grid',
  11688.         univalued=true,
  11689.         diagonal=false,
  11690.         without_bg=true,
  11691.         X2:out('Objects')),
  11692.       f(fork,
  11693.         multiply:outer:'Callable',
  11694.         sign:a:'Callable',
  11695.         identity:b:'Callable',
  11696.         X3:out('Callable')),
  11697.       f(lbind, apply, X3:fixed:'Any', X4:out('Callable')),
  11698.       f(chain,
  11699.         even:h:'Callable',
  11700.         maximum:g:'Callable',
  11701.         X4:f:'Callable',
  11702.         X5:out('Callable')),
  11703.       f(lbind, sfilter, X1:fixed:'Any', X6:out('Callable')),
  11704.       f(fork,
  11705.         add:outer:'Callable',
  11706.         first:a:'Callable',
  11707.         last:b:'Callable',
  11708.         X7:out('Callable')),
  11709.       f(rbind, remove, X2:fixed:'Any', X8:out('Callable')),
  11710.       f(compose,
  11711.         center:outer:'Callable',
  11712.         last:inner:'Callable',
  11713.         X9:out('Callable')),
  11714.       f(fork,
  11715.         subtract:outer:'Callable',
  11716.         first:a:'Callable',
  11717.         X9:b:'Callable',
  11718.         X10:out('Callable')),
  11719.       f(compose,
  11720.         X5:outer:'Callable',
  11721.         X10:inner:'Callable',
  11722.         X11:out('Callable')),
  11723.       f(lbind, rbind, equality:fixed:'Any', X12:out('Callable')),
  11724.       f(lbind, argmin, X2:fixed:'Any', X13:out('Callable')),
  11725.       f(chain,
  11726.         X7:h:'Callable',
  11727.         X4:g:'Callable',
  11728.         X10:f:'Callable',
  11729.         X14:out('Callable')),
  11730.       f(lbind, lbind, astuple:fixed:'Any', X15:out('Callable')),
  11731.       f(lbind, rbind, astuple:fixed:'Any', X16:out('Callable')),
  11732.       f(lbind, compose, X11:fixed:'Any', X17:out('Callable')),
  11733.       f(lbind, compose, X14:fixed:'Any', X18:out('Callable')),
  11734.       f(compose,
  11735.         X18:outer:'Callable',
  11736.         X15:inner:'Callable',
  11737.         X19:out('Callable')),
  11738.       f(compose,
  11739.         X18:outer:'Callable',
  11740.         X16:inner:'Callable',
  11741.         X20:out('Callable')),
  11742.       f(compose,
  11743.         X13:outer:'Callable',
  11744.         X19:inner:'Callable',
  11745.         X21:out('Callable')),
  11746.       f(rbind, compose, X21:fixed:'Any', X22:out('Callable')),
  11747.       f(lbind, lbind, valmin:fixed:'Any', X23:out('Callable')),
  11748.       f(rbind, compose, X19:fixed:'Any', X24:out('Callable')),
  11749.       f(chain,
  11750.         X24:h:'Callable',
  11751.         X23:g:'Callable',
  11752.         X8:f:'Callable',
  11753.         X25:out('Callable')),
  11754.       f(lbind, fork, greater:fixed:'Any', X26:out('Callable')),
  11755.       f(fork,
  11756.         X26:outer:'Callable',
  11757.         X25:a:'Callable',
  11758.         X20:b:'Callable',
  11759.         X27:out('Callable')),
  11760.       f(chain,
  11761.         X6:h:'Callable',
  11762.         X17:g:'Callable',
  11763.         X16:f:'Callable',
  11764.         X28:out('Callable')),
  11765.       f(chain,
  11766.         X6:h:'Callable',
  11767.         X22:g:'Callable',
  11768.         X12:f:'Callable',
  11769.         X29:out('Callable')),
  11770.       f(fork,
  11771.         intersection:outer:'Callable',
  11772.         X28:a:'Callable',
  11773.         X29:b:'Callable',
  11774.         X30:out('Callable')),
  11775.       f(compose,
  11776.         X6:outer:'Callable',
  11777.         X27:inner:'Callable',
  11778.         X31:out('Callable')),
  11779.       f(fork,
  11780.         intersection:outer:'Callable',
  11781.         X30:a:'Callable',
  11782.         X31:b:'Callable',
  11783.         X32:out('Callable')),
  11784.       f(fork,
  11785.         recolor:outer:'Callable',
  11786.         color:a:'Callable',
  11787.         X32:b:'Callable',
  11788.         X33:out('Callable')),
  11789.       f(mapply,
  11790.         X33,
  11791.         X2:container:'ContainerContainer',
  11792.         X34:out('FrozenSet')),
  11793.       f(paint, IN:'Grid', X34:obj:'Object', OUT:out('Grid'))
  11794.     ].
  11795. solve('4290ef0e', IN, OUT) :-
  11796.     [ f(mostcolor, IN:'Element', X1:out('Integer')),
  11797.       f(fgpartition, IN:'Grid', X2:out('Objects')),
  11798.       f(objects,
  11799.         IN:'Grid',
  11800.         univalued=true,
  11801.         diagonal=false,
  11802.         without_bg=true,
  11803.         X3:out('Objects')),
  11804.       f(rbind, valmax, width:fixed:'Any', X4:out('Callable')),
  11805.       f(lbind, colorfilter, X3:fixed:'Any', X5:out('Callable')),
  11806.       f(chain,
  11807.         X4:h:'Callable',
  11808.         X5:g:'Callable',
  11809.         color:f:'Callable',
  11810.         X6:out('Callable')),
  11811.       f(compose,
  11812.         maximum:outer:'Callable',
  11813.         shape:inner:'Callable',
  11814.         X7:out('Callable')),
  11815.       f(fork,
  11816.         add:outer:'Callable',
  11817.         X7:a:'Callable',
  11818.         X6:b:'Callable',
  11819.         X8:out('Callable')),
  11820.       f(compose,
  11821.         invert:outer:'Callable',
  11822.         X8:inner:'Callable',
  11823.         X9:out('Callable')),
  11824.       f(order,
  11825.         X2:'Container',
  11826.         X9:compfunc:'Callable',
  11827.         X10:out('Tuple')),
  11828.       f(rbind, argmin, centerofmass:fixed:'Any', X11:out('Callable')),
  11829.       f(compose,
  11830.         initset:outer:'Callable',
  11831.         vmirror:inner:'Callable',
  11832.         X12:out('Callable')),
  11833.       f(fork,
  11834.         insert:outer:'Callable',
  11835.         dmirror:a:'Callable',
  11836.         X12:b:'Callable',
  11837.         X13:out('Callable')),
  11838.       f(fork,
  11839.         insert:outer:'Callable',
  11840.         cmirror:a:'Callable',
  11841.         X13:b:'Callable',
  11842.         X14:out('Callable')),
  11843.       f(fork,
  11844.         insert:outer:'Callable',
  11845.         hmirror:a:'Callable',
  11846.         X14:b:'Callable',
  11847.         X15:out('Callable')),
  11848.       f(compose,
  11849.         X11:outer:'Callable',
  11850.         X15:inner:'Callable',
  11851.         X16:out('Callable')),
  11852.       f(apply, X16, X10:'Container', X17:out('Container')),
  11853.       f(size, X2:'Container', X18:out('Integer')),
  11854.       f(apply, size, X2:'Container', X19:out('Container')),
  11855.       f(contained, 'ONE':value:'Any', X19:'Container', returns=X20),
  11856.       f(increment, X18:x:'Numerical', X21:out('Numerical')),
  11857.       f(branch,
  11858.         condition=X20,
  11859.         X18:a:'Any',
  11860.         X21:b:'Any',
  11861.         X22:out('Any')),
  11862.       f(double, X22:n:'Numerical', X23:out('Numerical')),
  11863.       f(decrement, X23:x:'Numerical', X24:out('Numerical')),
  11864.       f(apply, normalize, X17:'Container', X25:out('Container')),
  11865.       f(interval,
  11866.         'ZERO':start:'Integer',
  11867.         X22:stop:'Integer',
  11868.         'ONE':step:'Integer',
  11869.         X26:out('Tuple')),
  11870.       f(pair, X26:a:'Tuple', X26:b:'Tuple', X27:out('TupleTuple')),
  11871.       f(mpapply,
  11872.         shift,
  11873.         X25:a:'Tuple',
  11874.         X27:b:'Tuple',
  11875.         X28:out('Tuple')),
  11876.       f(astuple, X24:a:'Integer', X24:b:'Integer', X29:out('Point')),
  11877.       f(canvas,
  11878.         X1:value:'Integer',
  11879.         X29:dimensions:'Point',
  11880.         X30:out('Grid')),
  11881.       f(paint, X30:'Grid', X28:obj:'Object', X31:out('Grid')),
  11882.       f(rot90, X31:'Grid', X32:out('Grid')),
  11883.       f(paint, X32:'Grid', X28:obj:'Object', X33:out('Grid')),
  11884.       f(rot90, X33:'Grid', X34:out('Grid')),
  11885.       f(paint, X34:'Grid', X28:obj:'Object', X35:out('Grid')),
  11886.       f(rot90, X35:'Grid', X36:out('Grid')),
  11887.       f(paint, X36:'Grid', X28:obj:'Object', OUT:out('Grid'))
  11888.     ].
  11889. solve(50846271, IN, OUT) :-
  11890.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  11891.       f(prapply, connect, X1, X1, X2),
  11892.       f(lbind, greater, 'SIX':fixed:'Any', X3:out('Callable')),
  11893.       f(compose,
  11894.         X3:outer:'Callable',
  11895.         size:inner:'Callable',
  11896.         X4:out('Callable')),
  11897.       f(fork,
  11898.         either:outer:'Callable',
  11899.         vline:a:'Callable',
  11900.         hline:b:'Callable',
  11901.         X5:out('Callable')),
  11902.       f(fork,
  11903.         both:outer:'Callable',
  11904.         X4:a:'Callable',
  11905.         X5:b:'Callable',
  11906.         X6:out('Callable')),
  11907.       f(mfilter, X2:'Container', X6, X7:out('FrozenSet')),
  11908.       f(fill,
  11909.         IN:'Grid',
  11910.         'TWO':value:'Integer',
  11911.         X7:'Patch',
  11912.         X8:out('Grid')),
  11913.       f(objects,
  11914.         X8:'Grid',
  11915.         univalued=true,
  11916.         diagonal=false,
  11917.         without_bg=false,
  11918.         X9:out('Objects')),
  11919.       f(colorfilter,
  11920.         X9:objs:'Objects',
  11921.         'TWO':value:'Integer',
  11922.         X10:out('Objects')),
  11923.       f(valmax,
  11924.         X10:'Container',
  11925.         width:compfunc:'Callable',
  11926.         X11:out('Integer')),
  11927.       f(halve, X11:n:'Numerical', X12:out('Numerical')),
  11928.       f(toivec, X12:i:'Integer', X13:out('Point')),
  11929.       f(tojvec, X12:j:'Integer', X14:out('Point')),
  11930.       f(rbind, add, (0, 2):fixed:'Any', X15:out('Callable')),
  11931.       f(rbind, add, (2, 0):fixed:'Any', X16:out('Callable')),
  11932.       f(rbind, subtract, (0, 2):fixed:'Any', X17:out('Callable')),
  11933.       f(rbind, subtract, (2, 0):fixed:'Any', X18:out('Callable')),
  11934.       f(rbind, colorcount, 'TWO':fixed:'Any', X19:out('Callable')),
  11935.       f(rbind, toobject, X8:fixed:'Any', X20:out('Callable')),
  11936.       f(compose,
  11937.         initset:outer:'Callable',
  11938.         X15:inner:'Callable',
  11939.         X21:out('Callable')),
  11940.       f(fork,
  11941.         insert:outer:'Callable',
  11942.         X16:a:'Callable',
  11943.         X21:b:'Callable',
  11944.         X22:out('Callable')),
  11945.       f(fork,
  11946.         insert:outer:'Callable',
  11947.         X17:a:'Callable',
  11948.         X22:b:'Callable',
  11949.         X23:out('Callable')),
  11950.       f(fork,
  11951.         insert:outer:'Callable',
  11952.         X18:a:'Callable',
  11953.         X23:b:'Callable',
  11954.         X24:out('Callable')),
  11955.       f(fork,
  11956.         combine:outer:'Callable',
  11957.         dneighbors:a:'Callable',
  11958.         X24:b:'Callable',
  11959.         X25:out('Callable')),
  11960.       f(chain,
  11961.         X19:h:'Callable',
  11962.         X20:g:'Callable',
  11963.         X25:f:'Callable',
  11964.         X26:out('Callable')),
  11965.       f(rbind, argmax, X26:fixed:'Any', X27:out('Callable')),
  11966.       f(compose,
  11967.         X27:outer:'Callable',
  11968.         toindices:inner:'Callable',
  11969.         X28:out('Callable')),
  11970.       f(apply, X28, X10:'Container', X29:out('Container')),
  11971.       f(rbind, add, X13:fixed:'Any', X30:out('Callable')),
  11972.       f(rbind, subtract, X13:fixed:'Any', X31:out('Callable')),
  11973.       f(rbind, add, X14:fixed:'Any', X32:out('Callable')),
  11974.       f(rbind, subtract, X14:fixed:'Any', X33:out('Callable')),
  11975.       f(fork,
  11976.         connect:outer:'Callable',
  11977.         X30:a:'Callable',
  11978.         X31:b:'Callable',
  11979.         X34:out('Callable')),
  11980.       f(fork,
  11981.         connect:outer:'Callable',
  11982.         X32:a:'Callable',
  11983.         X33:b:'Callable',
  11984.         X35:out('Callable')),
  11985.       f(fork,
  11986.         combine:outer:'Callable',
  11987.         X34:a:'Callable',
  11988.         X35:b:'Callable',
  11989.         X36:out('Callable')),
  11990.       f(mapply,
  11991.         X36,
  11992.         X29:container:'ContainerContainer',
  11993.         X37:out('FrozenSet')),
  11994.       f(fill,
  11995.         X8:'Grid',
  11996.         'EIGHT':value:'Integer',
  11997.         X37:'Patch',
  11998.         X38:out('Grid')),
  11999.       f(fill,
  12000.         X38:'Grid',
  12001.         'TWO':value:'Integer',
  12002.         X1:'Patch',
  12003.         OUT:out('Grid'))
  12004.     ].
  12005. solve(b527c5c6, IN, OUT) :-
  12006.     [ f(objects,
  12007.         IN:'Grid',
  12008.         univalued=false,
  12009.         diagonal=false,
  12010.         without_bg=true,
  12011.         X1:out('Objects')),
  12012.       f(matcher, first, 'TWO':target:'Any', X2:out('Callable')),
  12013.       f(rbind, sfilter, X2:fixed:'Any', X3:out('Callable')),
  12014.       f(compose,
  12015.         lowermost:outer:'Callable',
  12016.         X3:inner:'Callable',
  12017.         X4:out('Callable')),
  12018.       f(compose,
  12019.         rightmost:outer:'Callable',
  12020.         X3:inner:'Callable',
  12021.         X5:out('Callable')),
  12022.       f(compose,
  12023.         uppermost:outer:'Callable',
  12024.         X3:inner:'Callable',
  12025.         X6:out('Callable')),
  12026.       f(compose,
  12027.         leftmost:outer:'Callable',
  12028.         X3:inner:'Callable',
  12029.         X7:out('Callable')),
  12030.       f(fork,
  12031.         equality:outer:'Callable',
  12032.         X4:a:'Callable',
  12033.         lowermost:b:'Callable',
  12034.         X8:out('Callable')),
  12035.       f(fork,
  12036.         equality:outer:'Callable',
  12037.         X5:a:'Callable',
  12038.         rightmost:b:'Callable',
  12039.         X9:out('Callable')),
  12040.       f(fork,
  12041.         equality:outer:'Callable',
  12042.         X6:a:'Callable',
  12043.         uppermost:b:'Callable',
  12044.         X10:out('Callable')),
  12045.       f(fork,
  12046.         equality:outer:'Callable',
  12047.         X7:a:'Callable',
  12048.         leftmost:b:'Callable',
  12049.         X11:out('Callable')),
  12050.       f(compose,
  12051.         invert:outer:'Callable',
  12052.         X10:inner:'Callable',
  12053.         X12:out('Callable')),
  12054.       f(compose,
  12055.         invert:outer:'Callable',
  12056.         X11:inner:'Callable',
  12057.         X13:out('Callable')),
  12058.       f(fork,
  12059.         add:outer:'Callable',
  12060.         X12:a:'Callable',
  12061.         X8:b:'Callable',
  12062.         X14:out('Callable')),
  12063.       f(fork,
  12064.         add:outer:'Callable',
  12065.         X13:a:'Callable',
  12066.         X9:b:'Callable',
  12067.         X15:out('Callable')),
  12068.       f(fork,
  12069.         astuple:outer:'Callable',
  12070.         X14:a:'Callable',
  12071.         X15:b:'Callable',
  12072.         X16:out('Callable')),
  12073.       f(compose,
  12074.         center:outer:'Callable',
  12075.         X3:inner:'Callable',
  12076.         X17:out('Callable')),
  12077.       f(fork,
  12078.         shoot:outer:'Callable',
  12079.         X17:a:'Callable',
  12080.         X16:b:'Callable',
  12081.         X18:out('Callable')),
  12082.       f(mapply,
  12083.         X18,
  12084.         X1:container:'ContainerContainer',
  12085.         X19:out('FrozenSet')),
  12086.       f(fill,
  12087.         IN:'Grid',
  12088.         'TWO':value:'Integer',
  12089.         X19:'Patch',
  12090.         X20:out('Grid')),
  12091.       f(compose,
  12092.         vline:outer:'Callable',
  12093.         X18:inner:'Callable',
  12094.         X21:out('Callable')),
  12095.       f(sfilter,
  12096.         X1:'Container',
  12097.         X21:condition:'Callable',
  12098.         X22:out('Container')),
  12099.       f(difference,
  12100.         X1:a:'FrozenSet',
  12101.         X22:b:'FrozenSet',
  12102.         X23:out('FrozenSet')),
  12103.       f(chain,
  12104.         decrement:h:'Callable',
  12105.         minimum:g:'Callable',
  12106.         shape:f:'Callable',
  12107.         X24:out('Callable')),
  12108.       f(compose,
  12109.         increment:outer:'Callable',
  12110.         X24:inner:'Callable',
  12111.         X25:out('Callable')),
  12112.       f(compose,
  12113.         invert:outer:'Callable',
  12114.         X24:inner:'Callable',
  12115.         X26:out('Callable')),
  12116.       f(rbind, interval, 'ONE':fixed:'Any', X27:out('Callable')),
  12117.       f(fork,
  12118.         X27:outer:'Callable',
  12119.         X26:a:'Callable',
  12120.         X25:b:'Callable',
  12121.         X28:out('Callable')),
  12122.       f(lbind, apply, toivec:fixed:'Any', X29:out('Callable')),
  12123.       f(lbind, apply, tojvec:fixed:'Any', X30:out('Callable')),
  12124.       f(lbind, lbind, shift:fixed:'Any', X31:out('Callable')),
  12125.       f(compose,
  12126.         X31:outer:'Callable',
  12127.         X18:inner:'Callable',
  12128.         X32:out('Callable')),
  12129.       f(compose,
  12130.         X29:outer:'Callable',
  12131.         X28:inner:'Callable',
  12132.         X33:out('Callable')),
  12133.       f(compose,
  12134.         X30:outer:'Callable',
  12135.         X28:inner:'Callable',
  12136.         X34:out('Callable')),
  12137.       f(fork,
  12138.         mapply:outer:'Callable',
  12139.         X32:a:'Callable',
  12140.         X33:b:'Callable',
  12141.         X35:out('Callable')),
  12142.       f(fork,
  12143.         mapply:outer:'Callable',
  12144.         X32:a:'Callable',
  12145.         X34:b:'Callable',
  12146.         X36:out('Callable')),
  12147.       f(mapply,
  12148.         X35,
  12149.         X23:container:'ContainerContainer',
  12150.         X37:out('FrozenSet')),
  12151.       f(mapply,
  12152.         X36,
  12153.         X22:container:'ContainerContainer',
  12154.         X38:out('FrozenSet')),
  12155.       f(combine,
  12156.         X37:a:'Container',
  12157.         X38:b:'Container',
  12158.         X39:out('Container')),
  12159.       f(underfill,
  12160.         X20:'Grid',
  12161.         'THREE':value:'Integer',
  12162.         X39:'Patch',
  12163.         OUT:out('Grid'))
  12164.     ].
  12165. solve('150deff5', IN, OUT) :-
  12166.     [ f(canvas, 'FIVE':value:'Integer', (2, 2):dimensions:'Point', X1:out('Grid')),
  12167.       f(asobject, X1:'Grid', X2:out('Object')),
  12168.       f(occurrences, IN:'Grid', X2:obj:'Object', X3:out('Indices')),
  12169.       f(lbind, shift, X2:fixed:'Any', X4:out('Callable')),
  12170.       f(mapply,
  12171.         X4,
  12172.         X3:container:'ContainerContainer',
  12173.         X5:out('FrozenSet')),
  12174.       f(fill,
  12175.         IN:'Grid',
  12176.         'EIGHT':value:'Integer',
  12177.         X5:'Patch',
  12178.         X6:out('Grid')),
  12179.       f(canvas, 'FIVE':value:'Integer', (1, 1):dimensions:'Point', X7:out('Grid')),
  12180.       f(astuple, 'TWO':a:'Integer', 'ONE':b:'Integer', X8:out('Point')),
  12181.       f(canvas,
  12182.         'EIGHT':value:'Integer',
  12183.         X8:dimensions:'Point',
  12184.         X9:out('Grid')),
  12185.       f(vconcat, X9:a:'Grid', X7:b:'Grid', X10:out('Grid')),
  12186.       f(asobject, X10:'Grid', X11:out('Object')),
  12187.       f(occurrences, X6:'Grid', X11:obj:'Object', X12:out('Indices')),
  12188.       f(lbind, shift, X11:fixed:'Any', X13:out('Callable')),
  12189.       f(mapply,
  12190.         X13,
  12191.         X12:container:'ContainerContainer',
  12192.         X14:out('FrozenSet')),
  12193.       f(fill,
  12194.         X6:'Grid',
  12195.         'TWO':value:'Integer',
  12196.         X14:'Patch',
  12197.         X15:out('Grid')),
  12198.       f(astuple, 'ONE':a:'Integer', 'THREE':b:'Integer', X16:out('Point')),
  12199.       f(canvas,
  12200.         'FIVE':value:'Integer',
  12201.         X16:dimensions:'Point',
  12202.         X17:out('Grid')),
  12203.       f(asobject, X17:'Grid', X18:out('Object')),
  12204.       f(occurrences,
  12205.         X15:'Grid',
  12206.         X18:obj:'Object',
  12207.         X19:out('Indices')),
  12208.       f(lbind, shift, X18:fixed:'Any', X20:out('Callable')),
  12209.       f(mapply,
  12210.         X20,
  12211.         X19:container:'ContainerContainer',
  12212.         X21:out('FrozenSet')),
  12213.       f(fill,
  12214.         X15:'Grid',
  12215.         'TWO':value:'Integer',
  12216.         X21:'Patch',
  12217.         X22:out('Grid')),
  12218.       f(hmirror, X10:'Piece', X23:out('Piece')),
  12219.       f(asobject, X23:'Grid', X24:out('Object')),
  12220.       f(occurrences,
  12221.         X22:'Grid',
  12222.         X24:obj:'Object',
  12223.         X25:out('Indices')),
  12224.       f(lbind, shift, X24:fixed:'Any', X26:out('Callable')),
  12225.       f(mapply,
  12226.         X26,
  12227.         X25:container:'ContainerContainer',
  12228.         X27:out('FrozenSet')),
  12229.       f(fill,
  12230.         X22:'Grid',
  12231.         'TWO':value:'Integer',
  12232.         X27:'Patch',
  12233.         X28:out('Grid')),
  12234.       f(dmirror, X10:'Piece', X29:out('Piece')),
  12235.       f(asobject, X29:'Grid', X30:out('Object')),
  12236.       f(occurrences,
  12237.         X28:'Grid',
  12238.         X30:obj:'Object',
  12239.         X31:out('Indices')),
  12240.       f(lbind, shift, X30:fixed:'Any', X32:out('Callable')),
  12241.       f(mapply,
  12242.         X32,
  12243.         X31:container:'ContainerContainer',
  12244.         X33:out('FrozenSet')),
  12245.       f(fill,
  12246.         X28:'Grid',
  12247.         'TWO':value:'Integer',
  12248.         X33:'Patch',
  12249.         X34:out('Grid')),
  12250.       f(vmirror, X29:'Piece', X35:out('Piece')),
  12251.       f(asobject, X35:'Grid', X36:out('Object')),
  12252.       f(occurrences,
  12253.         X34:'Grid',
  12254.         X36:obj:'Object',
  12255.         X37:out('Indices')),
  12256.       f(lbind, shift, X36:fixed:'Any', X38:out('Callable')),
  12257.       f(mapply,
  12258.         X38,
  12259.         X37:container:'ContainerContainer',
  12260.         X39:out('FrozenSet')),
  12261.       f(fill,
  12262.         X34:'Grid',
  12263.         'TWO':value:'Integer',
  12264.         X39:'Patch',
  12265.         OUT:out('Grid'))
  12266.     ].
  12267. solve(b7249182, IN, OUT) :-
  12268.     [ f(objects,
  12269.         IN:'Grid',
  12270.         univalued=true,
  12271.         diagonal=false,
  12272.         without_bg=true,
  12273.         X1:out('Objects')),
  12274.       f(merge, X1:containers:'ContainerContainer', X2:out('Container')),
  12275.       f(portrait, X2:'Piece', returns=X3),
  12276.       f(branch,
  12277.         condition=X3,
  12278.         identity:a:'Any',
  12279.         dmirror:b:'Any',
  12280.         X4:out('Any')),
  12281.       f(X4, IN, X5),
  12282.       f(objects,
  12283.         X5:'Grid',
  12284.         univalued=true,
  12285.         diagonal=false,
  12286.         without_bg=true,
  12287.         X6:out('Objects')),
  12288.       f(order,
  12289.         X6:'Container',
  12290.         uppermost:compfunc:'Callable',
  12291.         X7:out('Tuple')),
  12292.       f(first, X7:'Container', X8:out('Any')),
  12293.       f(last, X7:'Container', X9:out('Any')),
  12294.       f(color, X8:obj:'Object', X10:out('Integer')),
  12295.       f(color, X9:obj:'Object', X11:out('Integer')),
  12296.       f(compose,
  12297.         first:outer:'Callable',
  12298.         toindices:inner:'Callable',
  12299.         X12:out('Callable')),
  12300.       f(X12, X8, X13),
  12301.       f(X12, X9, X14),
  12302.       f(connect, X13:a:'Point', X14:b:'Point', X15:out('Indices')),
  12303.       f(centerofmass, X15:'Patch', X16:out('Point')),
  12304.       f(connect, X13:a:'Point', X16:b:'Point', X17:out('Indices')),
  12305.       f(fill,
  12306.         X5:'Grid',
  12307.         X11:value:'Integer',
  12308.         X15:'Patch',
  12309.         X18:out('Grid')),
  12310.       f(fill,
  12311.         X18:'Grid',
  12312.         X10:value:'Integer',
  12313.         X17:'Patch',
  12314.         X19:out('Grid')),
  12315.       f(add, X16:a:'Numerical', (1, 0):b:'Numerical', X20:out('Numerical')),
  12316.       f(initset, X16:value:'Any', X21:out('FrozenSet')),
  12317.       f(insert,
  12318.         X20:value:'Any',
  12319.         X21:container:'FrozenSet',
  12320.         X22:out('FrozenSet')),
  12321.       f(toobject, X22:'Patch', X19:'Grid', X23:out('Object')),
  12322.       f(astuple, 'ZERO':a:'Integer', 'NEG_TWO':b:'Integer', X24:out('Point')),
  12323.       f(shift, X23:'Patch', (0, 2):directions:'Point', X25:out('Patch')),
  12324.       f(shift, X23:'Patch', X24:directions:'Point', X26:out('Patch')),
  12325.       f(combine,
  12326.         X25:a:'Container',
  12327.         X26:b:'Container',
  12328.         X27:out('Container')),
  12329.       f(ulcorner, X27:'Patch', X28:out('Point')),
  12330.       f(urcorner, X27:'Patch', X29:out('Point')),
  12331.       f(connect, X28:a:'Point', X29:b:'Point', X30:out('Indices')),
  12332.       f(shift, X30:'Patch', (-1, 0):directions:'Point', X31:out('Patch')),
  12333.       f(llcorner, X27:'Patch', X32:out('Point')),
  12334.       f(lrcorner, X27:'Patch', X33:out('Point')),
  12335.       f(connect, X32:a:'Point', X33:b:'Point', X34:out('Indices')),
  12336.       f(shift, X34:'Patch', (1, 0):directions:'Point', X35:out('Patch')),
  12337.       f(paint, X19:'Grid', X27:obj:'Object', X36:out('Grid')),
  12338.       f(fill,
  12339.         X36:'Grid',
  12340.         X10:value:'Integer',
  12341.         X31:'Patch',
  12342.         X37:out('Grid')),
  12343.       f(fill,
  12344.         X37:'Grid',
  12345.         X11:value:'Integer',
  12346.         X35:'Patch',
  12347.         X38:out('Grid')),
  12348.       f(cover, X38:'Grid', X22:'Patch', X39:out('Grid')),
  12349.       f(X4, X39, OUT)
  12350.     ].
  12351. solve('9d9215db', IN, OUT) :-
  12352.     [ f(rot90, IN:'Grid', X1:out('Grid')),
  12353.       f(rot180, IN:'Grid', X2:out('Grid')),
  12354.       f(rot270, IN:'Grid', X3:out('Grid')),
  12355.       f(initset, IN:value:'Any', X4:out('FrozenSet')),
  12356.       f(chain,
  12357.         numcolors:h:'Callable',
  12358.         lefthalf:g:'Callable',
  12359.         tophalf:f:'Callable',
  12360.         X5:out('Callable')),
  12361.       f(insert,
  12362.         X1:value:'Any',
  12363.         X4:container:'FrozenSet',
  12364.         X6:out('FrozenSet')),
  12365.       f(insert,
  12366.         X2:value:'Any',
  12367.         X6:container:'FrozenSet',
  12368.         X7:out('FrozenSet')),
  12369.       f(insert,
  12370.         X3:value:'Any',
  12371.         X7:container:'FrozenSet',
  12372.         X8:out('FrozenSet')),
  12373.       f(argmax,
  12374.         X8:'Container',
  12375.         X5:compfunc:'Callable',
  12376.         X9:out('Any')),
  12377.       f(vmirror, X9:'Piece', X10:out('Piece')),
  12378.       f(papply, pair, X9:a:'Tuple', X10:b:'Tuple', X11:out('Tuple')),
  12379.       f(lbind, apply, maximum:fixed:'Any', X12:out('Callable')),
  12380.       f(apply, X12, X11:'Container', X13:out('Container')),
  12381.       f(partition, X13:'Grid', X14:out('Objects')),
  12382.       f(sizefilter,
  12383.         X14:'Container',
  12384.         'FOUR':n:'Integer',
  12385.         X15:out('FrozenSet')),
  12386.       f(apply, llcorner, X15:'Container', X16:out('Container')),
  12387.       f(apply, lrcorner, X15:'Container', X17:out('Container')),
  12388.       f(combine,
  12389.         X16:a:'Container',
  12390.         X17:b:'Container',
  12391.         X18:out('Container')),
  12392.       f(cover, X13:'Grid', X18:'Patch', X19:out('Grid')),
  12393.       f(tojvec, 'NEG_TWO':j:'Integer', X20:out('Point')),
  12394.       f(rbind, add, (0, 2):fixed:'Any', X21:out('Callable')),
  12395.       f(rbind, add, X20:fixed:'Any', X22:out('Callable')),
  12396.       f(compose,
  12397.         X21:outer:'Callable',
  12398.         ulcorner:inner:'Callable',
  12399.         X23:out('Callable')),
  12400.       f(compose,
  12401.         X22:outer:'Callable',
  12402.         urcorner:inner:'Callable',
  12403.         X24:out('Callable')),
  12404.       f(fork,
  12405.         connect:outer:'Callable',
  12406.         X23:a:'Callable',
  12407.         X24:b:'Callable',
  12408.         X25:out('Callable')),
  12409.       f(compose,
  12410.         even:outer:'Callable',
  12411.         last:inner:'Callable',
  12412.         X26:out('Callable')),
  12413.       f(rbind, sfilter, X26:fixed:'Any', X27:out('Callable')),
  12414.       f(chain,
  12415.         normalize:h:'Callable',
  12416.         X27:g:'Callable',
  12417.         X25:f:'Callable',
  12418.         X28:out('Callable')),
  12419.       f(fork,
  12420.         shift:outer:'Callable',
  12421.         X28:a:'Callable',
  12422.         X23:b:'Callable',
  12423.         X29:out('Callable')),
  12424.       f(fork,
  12425.         recolor:outer:'Callable',
  12426.         color:a:'Callable',
  12427.         X29:b:'Callable',
  12428.         X30:out('Callable')),
  12429.       f(mapply,
  12430.         X30,
  12431.         X15:container:'ContainerContainer',
  12432.         X31:out('FrozenSet')),
  12433.       f(paint, X19:'Grid', X31:obj:'Object', X32:out('Grid')),
  12434.       f(rot90, X32:'Grid', X33:out('Grid')),
  12435.       f(rot180, X32:'Grid', X34:out('Grid')),
  12436.       f(rot270, X32:'Grid', X35:out('Grid')),
  12437.       f(papply, pair, X32:a:'Tuple', X33:b:'Tuple', X36:out('Tuple')),
  12438.       f(apply, X12, X36:'Container', X37:out('Container')),
  12439.       f(papply, pair, X37:a:'Tuple', X34:b:'Tuple', X38:out('Tuple')),
  12440.       f(apply, X12, X38:'Container', X39:out('Container')),
  12441.       f(papply, pair, X39:a:'Tuple', X35:b:'Tuple', X40:out('Tuple')),
  12442.       f(apply, X12, X40:'Container', OUT:out('Container'))
  12443.     ].
  12444. solve('6855a6e4', IN, OUT) :-
  12445.     [ f(fgpartition, IN:'Grid', X1:out('Objects')),
  12446.       f(rot90, IN:'Grid', X2:out('Grid')),
  12447.       f(colorfilter,
  12448.         X1:objs:'Objects',
  12449.         'TWO':value:'Integer',
  12450.         X3:out('Objects')),
  12451.       f(first, X3:'Container', X4:out('Any')),
  12452.       f(portrait, X4:'Piece', returns=X5),
  12453.       f(branch,
  12454.         condition=X5,
  12455.         IN:a:'Any',
  12456.         X2:b:'Any',
  12457.         X6:out('Any')),
  12458.       f(objects,
  12459.         X6:'Grid',
  12460.         univalued=true,
  12461.         diagonal=false,
  12462.         without_bg=true,
  12463.         X7:out('Objects')),
  12464.       f(colorfilter,
  12465.         X7:objs:'Objects',
  12466.         'FIVE':value:'Integer',
  12467.         X8:out('Objects')),
  12468.       f(apply, center, X8:'Container', X9:out('Container')),
  12469.       f(valmin,
  12470.         X9:'Container',
  12471.         first:compfunc:'Callable',
  12472.         X10:out('Integer')),
  12473.       f(compose,
  12474.         first:outer:'Callable',
  12475.         center:inner:'Callable',
  12476.         X11:out('Callable')),
  12477.       f(matcher, X11, X10:target:'Any', X12:out('Callable')),
  12478.       f(compose,
  12479.         flip:outer:'Callable',
  12480.         X12:inner:'Callable',
  12481.         X13:out('Callable')),
  12482.       f(extract,
  12483.         X8:'Container',
  12484.         X12:condition:'Callable',
  12485.         X14:out('Any')),
  12486.       f(extract,
  12487.         X8:'Container',
  12488.         X13:condition:'Callable',
  12489.         X15:out('Any')),
  12490.       f(ulcorner, X14:'Patch', X16:out('Point')),
  12491.       f(ulcorner, X15:'Patch', X17:out('Point')),
  12492.       f(subgrid, X14:'Patch', X6:'Grid', X18:out('Grid')),
  12493.       f(subgrid, X15:'Patch', X6:'Grid', X19:out('Grid')),
  12494.       f(hmirror, X18:'Piece', X20:out('Piece')),
  12495.       f(hmirror, X19:'Piece', X21:out('Piece')),
  12496.       f(ofcolor, X20:'Grid', 'FIVE':value:'Integer', X22:out('Indices')),
  12497.       f(recolor, 'FIVE':value:'Integer', X22:'Patch', X23:out('Object')),
  12498.       f(ofcolor, X21:'Grid', 'FIVE':value:'Integer', X24:out('Indices')),
  12499.       f(recolor, 'FIVE':value:'Integer', X24:'Patch', X25:out('Object')),
  12500.       f(height, X23:'Piece', X26:out('Integer')),
  12501.       f(height, X25:'Piece', X27:out('Integer')),
  12502.       f(add, 'THREE':a:'Numerical', X26:b:'Numerical', X28:out('Numerical')),
  12503.       f(add, 'THREE':a:'Numerical', X27:b:'Numerical', X29:out('Numerical')),
  12504.       f(toivec, X28:i:'Integer', X30:out('Point')),
  12505.       f(toivec, X29:i:'Integer', X31:out('Point')),
  12506.       f(add,
  12507.         X16:a:'Numerical',
  12508.         X30:b:'Numerical',
  12509.         X32:out('Numerical')),
  12510.       f(subtract,
  12511.         X17:a:'Numerical',
  12512.         X31:b:'Numerical',
  12513.         X33:out('Numerical')),
  12514.       f(shift, X23:'Patch', X32:directions:'Point', X34:out('Patch')),
  12515.       f(shift, X25:'Patch', X33:directions:'Point', X35:out('Patch')),
  12516.       f(merge, X8:containers:'ContainerContainer', X36:out('Container')),
  12517.       f(cover, X6:'Grid', X36:'Patch', X37:out('Grid')),
  12518.       f(paint, X37:'Grid', X34:obj:'Object', X38:out('Grid')),
  12519.       f(paint, X38:'Grid', X35:obj:'Object', X39:out('Grid')),
  12520.       f(rot270, X39:'Grid', X40:out('Grid')),
  12521.       f(branch,
  12522.         condition=X5,
  12523.         X39:a:'Any',
  12524.         X40:b:'Any',
  12525.         OUT:out('Any'))
  12526.     ].
  12527. solve('264363fd', IN, OUT) :-
  12528.     [ f(objects,
  12529.         IN:'Grid',
  12530.         univalued=false,
  12531.         diagonal=false,
  12532.         without_bg=true,
  12533.         X1:out('Objects')),
  12534.       f(argmin, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  12535.       f(normalize, X2:'Patch', X3:out('Patch')),
  12536.       f(height, X2:'Piece', X4:out('Integer')),
  12537.       f(width, X2:'Piece', X5:out('Integer')),
  12538.       f(equality, X4:a:'Any', 'FIVE':b:'Any', returns=X6),
  12539.       f(equality, X5:a:'Any', 'FIVE':b:'Any', returns=X7),
  12540.       f(astuple, X6:a:'Integer', X7:b:'Integer', X8:out('Point')),
  12541.       f(add, (1, 1):a:'Numerical', X8:b:'Numerical', X9:out('Numerical')),
  12542.       f(invert, X9:n:'Numerical', X10:out('Numerical')),
  12543.       f(center, X2:'Patch', X11:out('Point')),
  12544.       f(index, IN:'Grid', X11:loc:'Point', X12:out('Integer')),
  12545.       f(branch,
  12546.         condition=X6,
  12547.         (-1, 0):a:'Any',
  12548.         (0, 1):b:'Any',
  12549.         X13:out('Any')),
  12550.       f(add,
  12551.         X13:a:'Numerical',
  12552.         X11:b:'Numerical',
  12553.         X14:out('Numerical')),
  12554.       f(index, IN:'Grid', X14:loc:'Point', X15:out('Integer')),
  12555.       f(astuple, X12:a:'Integer', (0, 0):b:'Integer', X16:out('Point')),
  12556.       f(initset, X16:value:'Any', X17:out('FrozenSet')),
  12557.       f(cover, IN:'Grid', X2:'Patch', X18:out('Grid')),
  12558.       f(mostcolor, X18:'Element', X19:out('Integer')),
  12559.       f(ofcolor, X18:'Grid', X19:value:'Integer', X20:out('Indices')),
  12560.       f(occurrences,
  12561.         X18:'Grid',
  12562.         X17:obj:'Object',
  12563.         X21:out('Indices')),
  12564.       f(objects,
  12565.         X18:'Grid',
  12566.         univalued=false,
  12567.         diagonal=false,
  12568.         without_bg=true,
  12569.         X22:out('Objects')),
  12570.       f(rbind, occurrences, X17:fixed:'Any', X23:out('Callable')),
  12571.       f(rbind, subgrid, X18:fixed:'Any', X24:out('Callable')),
  12572.       f(compose,
  12573.         X23:outer:'Callable',
  12574.         X24:inner:'Callable',
  12575.         X25:out('Callable')),
  12576.       f(lbind, mapply, vfrontier:fixed:'Any', X26:out('Callable')),
  12577.       f(lbind, mapply, hfrontier:fixed:'Any', X27:out('Callable')),
  12578.       f(compose,
  12579.         X26:outer:'Callable',
  12580.         X25:inner:'Callable',
  12581.         X28:out('Callable')),
  12582.       f(compose,
  12583.         X27:outer:'Callable',
  12584.         X25:inner:'Callable',
  12585.         X29:out('Callable')),
  12586.       f(branch,
  12587.         condition=X6,
  12588.         X28:a:'Any',
  12589.         X29:b:'Any',
  12590.         X30:out('Any')),
  12591.       f(branch,
  12592.         condition=X7,
  12593.         X29:a:'Any',
  12594.         X28:b:'Any',
  12595.         X31:out('Any')),
  12596.       f(fork,
  12597.         combine:outer:'Callable',
  12598.         X30:a:'Callable',
  12599.         X31:b:'Callable',
  12600.         X32:out('Callable')),
  12601.       f(lbind, recolor, X15:fixed:'Any', X33:out('Callable')),
  12602.       f(compose,
  12603.         X33:outer:'Callable',
  12604.         X32:inner:'Callable',
  12605.         X34:out('Callable')),
  12606.       f(fork,
  12607.         paint:outer:'Callable',
  12608.         X24:a:'Callable',
  12609.         X34:b:'Callable',
  12610.         X35:out('Callable')),
  12611.       f(compose,
  12612.         asobject:outer:'Callable',
  12613.         X35:inner:'Callable',
  12614.         X36:out('Callable')),
  12615.       f(fork,
  12616.         shift:outer:'Callable',
  12617.         X36:a:'Callable',
  12618.         ulcorner:b:'Callable',
  12619.         X37:out('Callable')),
  12620.       f(mapply,
  12621.         X37,
  12622.         X22:container:'ContainerContainer',
  12623.         X38:out('FrozenSet')),
  12624.       f(paint, X18:'Grid', X38:obj:'Object', X39:out('Grid')),
  12625.       f(shift, X3:'Patch', X10:directions:'Point', X40:out('Patch')),
  12626.       f(lbind, shift, X40:fixed:'Any', X41:out('Callable')),
  12627.       f(mapply,
  12628.         X41,
  12629.         X21:container:'ContainerContainer',
  12630.         X42:out('FrozenSet')),
  12631.       f(paint, X39:'Grid', X42:obj:'Object', X43:out('Grid')),
  12632.       f(fill,
  12633.         X43:'Grid',
  12634.         X19:value:'Integer',
  12635.         X20:'Patch',
  12636.         OUT:out('Grid'))
  12637.     ].
  12638. solve('7df24a62', IN, OUT) :-
  12639.     [ f(height, IN:'Piece', X1:out('Integer')),
  12640.       f(width, IN:'Piece', X2:out('Integer')),
  12641.       f(ofcolor, IN:'Grid', 'ONE':value:'Integer', X3:out('Indices')),
  12642.       f(ofcolor, IN:'Grid', 'FOUR':value:'Integer', X4:out('Indices')),
  12643.       f(ulcorner, X3:'Patch', X5:out('Point')),
  12644.       f(subgrid, X3:'Patch', IN:'Grid', X6:out('Grid')),
  12645.       f(rot90, X6:'Grid', X7:out('Grid')),
  12646.       f(rot180, X6:'Grid', X8:out('Grid')),
  12647.       f(rot270, X6:'Grid', X9:out('Grid')),
  12648.       f(matcher, size, 'ZERO':target:'Any', X10:out('Callable')),
  12649.       f(rbind, ofcolor, 'ONE':fixed:'Any', X11:out('Callable')),
  12650.       f(compose,
  12651.         normalize:outer:'Callable',
  12652.         X11:inner:'Callable',
  12653.         X12:out('Callable')),
  12654.       f(rbind, ofcolor, 'FOUR':fixed:'Any', X13:out('Callable')),
  12655.       f(rbind, shift, X5:fixed:'Any', X14:out('Callable')),
  12656.       f(compose,
  12657.         X14:outer:'Callable',
  12658.         X13:inner:'Callable',
  12659.         X15:out('Callable')),
  12660.       f(lbind, subtract, X1:fixed:'Any', X16:out('Callable')),
  12661.       f(chain,
  12662.         increment:h:'Callable',
  12663.         X16:g:'Callable',
  12664.         height:f:'Callable',
  12665.         X17:out('Callable')),
  12666.       f(lbind, subtract, X2:fixed:'Any', X18:out('Callable')),
  12667.       f(chain,
  12668.         increment:h:'Callable',
  12669.         X18:g:'Callable',
  12670.         width:f:'Callable',
  12671.         X19:out('Callable')),
  12672.       f(rbind, interval, 'ONE':fixed:'Any', X20:out('Callable')),
  12673.       f(lbind, X20, 'ZERO':fixed:'Any', X21:out('Callable')),
  12674.       f(compose,
  12675.         X21:outer:'Callable',
  12676.         X17:inner:'Callable',
  12677.         X22:out('Callable')),
  12678.       f(compose,
  12679.         X21:outer:'Callable',
  12680.         X19:inner:'Callable',
  12681.         X23:out('Callable')),
  12682.       f(fork,
  12683.         product:outer:'Callable',
  12684.         X22:a:'Callable',
  12685.         X23:b:'Callable',
  12686.         X24:out('Callable')),
  12687.       f(rbind, shift, (-1, -1):fixed:'Any', X25:out('Callable')),
  12688.       f(lbind, lbind, shift:fixed:'Any', X26:out('Callable')),
  12689.       f(chain,
  12690.         X26:h:'Callable',
  12691.         X25:g:'Callable',
  12692.         X12:f:'Callable',
  12693.         X27:out('Callable')),
  12694.       f(astuple, X6:a:'Integer', X7:b:'Integer', X28:out('Point')),
  12695.       f(astuple, X8:a:'Integer', X9:b:'Integer', X29:out('Point')),
  12696.       f(combine,
  12697.         X28:a:'Container',
  12698.         X29:b:'Container',
  12699.         X30:out('Container')),
  12700.       f(apply, X15, X30:'Container', X31:out('Container')),
  12701.       f(lbind, difference, X4:fixed:'Any', X32:out('Callable')),
  12702.       f(apply, X32, X31:'Container', X33:out('Container')),
  12703.       f(apply, normalize, X31:'Container', X34:out('Container')),
  12704.       f(apply, X24, X34:'Container', X35:out('Container')),
  12705.       f(lbind, rbind, difference:fixed:'Any', X36:out('Callable')),
  12706.       f(apply, X26, X34:'Container', X37:out('Container')),
  12707.       f(apply, X36, X33:'Container', X38:out('Container')),
  12708.       f(papply,
  12709.         compose,
  12710.         X38:a:'Tuple',
  12711.         X37:b:'Tuple',
  12712.         X39:out('Tuple')),
  12713.       f(lbind, compose, X10:fixed:'Any', X40:out('Callable')),
  12714.       f(apply, X40, X39:'Container', X41:out('Container')),
  12715.       f(papply,
  12716.         sfilter,
  12717.         X35:a:'Tuple',
  12718.         X41:b:'Tuple',
  12719.         X42:out('Tuple')),
  12720.       f(apply, X27, X30:'Container', X43:out('Container')),
  12721.       f(mpapply,
  12722.         mapply,
  12723.         X43:a:'Tuple',
  12724.         X42:b:'Tuple',
  12725.         X44:out('Tuple')),
  12726.       f(fill,
  12727.         IN:'Grid',
  12728.         'ONE':value:'Integer',
  12729.         X44:'Patch',
  12730.         OUT:out('Grid'))
  12731.     ].
  12732. solve(f15e1fac, IN, OUT) :-
  12733.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  12734.       f(portrait, X1:'Piece', returns=X2),
  12735.       f(branch,
  12736.         condition=X2,
  12737.         identity:a:'Any',
  12738.         dmirror:b:'Any',
  12739.         X3:out('Any')),
  12740.       f(X3, IN, X4),
  12741.       f(leftmost, X1:'Patch', X5:out('Integer')),
  12742.       f(equality, X5:a:'Any', 'ZERO':b:'Any', returns=X6),
  12743.       f(branch,
  12744.         condition=X6,
  12745.         identity:a:'Any',
  12746.         vmirror:b:'Any',
  12747.         X7:out('Any')),
  12748.       f(X7, X4, X8),
  12749.       f(ofcolor, X8:'Grid', 'EIGHT':value:'Integer', X9:out('Indices')),
  12750.       f(uppermost, X9:'Patch', X10:out('Integer')),
  12751.       f(equality, X10:a:'Any', 'ZERO':b:'Any', returns=X11),
  12752.       f(branch,
  12753.         condition=X11,
  12754.         identity:a:'Any',
  12755.         hmirror:b:'Any',
  12756.         X12:out('Any')),
  12757.       f(X12, X8, X13),
  12758.       f(ofcolor, X13:'Grid', 'EIGHT':value:'Integer', X14:out('Indices')),
  12759.       f(ofcolor, X13:'Grid', 'TWO':value:'Integer', X15:out('Indices')),
  12760.       f(rbind, shoot, (1, 0):fixed:'Any', X16:out('Callable')),
  12761.       f(mapply,
  12762.         X16,
  12763.         X14:container:'ContainerContainer',
  12764.         X17:out('FrozenSet')),
  12765.       f(height, X13:'Piece', X18:out('Integer')),
  12766.       f(apply, first, X15:'Container', X19:out('Container')),
  12767.       f(insert,
  12768.         'ZERO':value:'Any',
  12769.         X19:container:'FrozenSet',
  12770.         X20:out('FrozenSet')),
  12771.       f(insert,
  12772.         X18:value:'Any',
  12773.         X19:container:'FrozenSet',
  12774.         X21:out('FrozenSet')),
  12775.       f(apply, decrement, X21:'Container', X22:out('Container')),
  12776.       f(order,
  12777.         X20:'Container',
  12778.         identity:compfunc:'Callable',
  12779.         X23:out('Tuple')),
  12780.       f(order,
  12781.         X22:'Container',
  12782.         identity:compfunc:'Callable',
  12783.         X24:out('Tuple')),
  12784.       f(size, X15:'Container', X25:out('Integer')),
  12785.       f(increment, X25:x:'Numerical', X26:out('Numerical')),
  12786.       f(interval,
  12787.         'ZERO':start:'Integer',
  12788.         X26:stop:'Integer',
  12789.         'ONE':step:'Integer',
  12790.         X27:out('Tuple')),
  12791.       f(apply, tojvec, X27:'Container', X28:out('Container')),
  12792.       f(pair, X23:a:'Tuple', X24:b:'Tuple', X29:out('TupleTuple')),
  12793.       f(lbind, sfilter, X17:fixed:'Any', X30:out('Callable')),
  12794.       f(compose,
  12795.         first:outer:'Callable',
  12796.         last:inner:'Callable',
  12797.         X31:out('Callable')),
  12798.       f(chain,
  12799.         decrement:h:'Callable',
  12800.         first:g:'Callable',
  12801.         first:f:'Callable',
  12802.         X32:out('Callable')),
  12803.       f(fork,
  12804.         greater:outer:'Callable',
  12805.         X31:a:'Callable',
  12806.         X32:b:'Callable',
  12807.         X33:out('Callable')),
  12808.       f(chain,
  12809.         increment:h:'Callable',
  12810.         last:g:'Callable',
  12811.         first:f:'Callable',
  12812.         X34:out('Callable')),
  12813.       f(fork,
  12814.         greater:outer:'Callable',
  12815.         X34:a:'Callable',
  12816.         X31:b:'Callable',
  12817.         X35:out('Callable')),
  12818.       f(fork,
  12819.         both:outer:'Callable',
  12820.         X33:a:'Callable',
  12821.         X35:b:'Callable',
  12822.         X36:out('Callable')),
  12823.       f(lbind, lbind, astuple:fixed:'Any', X37:out('Callable')),
  12824.       f(lbind, compose, X36:fixed:'Any', X38:out('Callable')),
  12825.       f(chain,
  12826.         X30:h:'Callable',
  12827.         X38:g:'Callable',
  12828.         X37:f:'Callable',
  12829.         X39:out('Callable')),
  12830.       f(apply, X39, X29:'Container', X40:out('Container')),
  12831.       f(papply, shift, X40:a:'Tuple', X28:b:'Tuple', X41:out('Tuple')),
  12832.       f(merge,
  12833.         X41:containers:'ContainerContainer',
  12834.         X42:out('Container')),
  12835.       f(fill,
  12836.         X13:'Grid',
  12837.         'EIGHT':value:'Integer',
  12838.         X42:'Patch',
  12839.         X43:out('Grid')),
  12840.       f(chain,
  12841.         X3:h:'Callable',
  12842.         X7:g:'Callable',
  12843.         X12:f:'Callable',
  12844.         X44:out('Callable')),
  12845.       f(X44, X43, OUT)
  12846.     ].
  12847. solve('234bbc79', IN, OUT) :-
  12848.     [ f(rbind, objects, true:fixed:'Any', X1:out('Callable')),
  12849.       f(rbind, X1, false:fixed:'Any', X2:out('Callable')),
  12850.       f(rbind, X2, false:fixed:'Any', X3:out('Callable')),
  12851.       f(rbind, argmin, leftmost:fixed:'Any', X4:out('Callable')),
  12852.       f(compose,
  12853.         X4:outer:'Callable',
  12854.         X3:inner:'Callable',
  12855.         X5:out('Callable')),
  12856.       f(fork,
  12857.         remove:outer:'Callable',
  12858.         X5:a:'Callable',
  12859.         X3:b:'Callable',
  12860.         X6:out('Callable')),
  12861.       f(compose,
  12862.         X4:outer:'Callable',
  12863.         X6:inner:'Callable',
  12864.         X7:out('Callable')),
  12865.       f(compose,
  12866.         last:outer:'Callable',
  12867.         last:inner:'Callable',
  12868.         X8:out('Callable')),
  12869.       f(matcher, first, 'FIVE':target:'Any', X9:out('Callable')),
  12870.       f(rbind, sfilter, X9:fixed:'Any', X10:out('Callable')),
  12871.       f(fork,
  12872.         difference:outer:'Callable',
  12873.         identity:a:'Callable',
  12874.         X10:b:'Callable',
  12875.         X11:out('Callable')),
  12876.       f(rbind, argmin, X8:fixed:'Any', X12:out('Callable')),
  12877.       f(compose,
  12878.         X12:outer:'Callable',
  12879.         X10:inner:'Callable',
  12880.         X13:out('Callable')),
  12881.       f(compose,
  12882.         last:outer:'Callable',
  12883.         X13:inner:'Callable',
  12884.         X14:out('Callable')),
  12885.       f(rbind, add, (0, 1):fixed:'Any', X15:out('Callable')),
  12886.       f(compose,
  12887.         X14:outer:'Callable',
  12888.         X7:inner:'Callable',
  12889.         X16:out('Callable')),
  12890.       f(compose,
  12891.         X14:outer:'Callable',
  12892.         X5:inner:'Callable',
  12893.         X17:out('Callable')),
  12894.       f(fork,
  12895.         subtract:outer:'Callable',
  12896.         X16:a:'Callable',
  12897.         X17:b:'Callable',
  12898.         X18:out('Callable')),
  12899.       f(compose,
  12900.         invert:outer:'Callable',
  12901.         X18:inner:'Callable',
  12902.         X19:out('Callable')),
  12903.       f(compose,
  12904.         X15:outer:'Callable',
  12905.         X19:inner:'Callable',
  12906.         X20:out('Callable')),
  12907.       f(compose,
  12908.         mostcolor:outer:'Callable',
  12909.         X11:inner:'Callable',
  12910.         X21:out('Callable')),
  12911.       f(fork,
  12912.         astuple:outer:'Callable',
  12913.         X21:a:'Callable',
  12914.         X14:b:'Callable',
  12915.         X22:out('Callable')),
  12916.       f(fork,
  12917.         remove:outer:'Callable',
  12918.         X13:a:'Callable',
  12919.         identity:b:'Callable',
  12920.         X23:out('Callable')),
  12921.       f(fork,
  12922.         insert:outer:'Callable',
  12923.         X22:a:'Callable',
  12924.         X23:b:'Callable',
  12925.         X24:out('Callable')),
  12926.       f(compose,
  12927.         X24:outer:'Callable',
  12928.         X7:inner:'Callable',
  12929.         X25:out('Callable')),
  12930.       f(fork,
  12931.         cover:outer:'Callable',
  12932.         identity:a:'Callable',
  12933.         X25:b:'Callable',
  12934.         X26:out('Callable')),
  12935.       f(fork,
  12936.         shift:outer:'Callable',
  12937.         X25:a:'Callable',
  12938.         X20:b:'Callable',
  12939.         X27:out('Callable')),
  12940.       f(fork,
  12941.         paint:outer:'Callable',
  12942.         X26:a:'Callable',
  12943.         X27:b:'Callable',
  12944.         X28:out('Callable')),
  12945.       f(rbind, argmax, X8:fixed:'Any', X29:out('Callable')),
  12946.       f(chain,
  12947.         first:h:'Callable',
  12948.         X29:g:'Callable',
  12949.         X11:f:'Callable',
  12950.         X30:out('Callable')),
  12951.       f(fork,
  12952.         recolor:outer:'Callable',
  12953.         X30:a:'Callable',
  12954.         X10:b:'Callable',
  12955.         X31:out('Callable')),
  12956.       f(fork,
  12957.         combine:outer:'Callable',
  12958.         X11:a:'Callable',
  12959.         X31:b:'Callable',
  12960.         X32:out('Callable')),
  12961.       f(compose,
  12962.         X32:outer:'Callable',
  12963.         X5:inner:'Callable',
  12964.         X33:out('Callable')),
  12965.       f(fork,
  12966.         paint:outer:'Callable',
  12967.         X28:a:'Callable',
  12968.         X33:b:'Callable',
  12969.         X34:out('Callable')),
  12970.       f(X34, IN, X35),
  12971.       f(X34, X35, X36),
  12972.       f(palette, X36:'Element', X37:out('IntegerSet')),
  12973.       f(contained, 'FIVE':value:'Any', X37:'Container', returns=X38),
  12974.       f(branch,
  12975.         condition=X38,
  12976.         X34:a:'Any',
  12977.         identity:b:'Any',
  12978.         X39:out('Any')),
  12979.       f(X39, X36, X40),
  12980.       f(X3, X40, X41),
  12981.       f(merge,
  12982.         X41:containers:'ContainerContainer',
  12983.         X42:out('Container')),
  12984.       f(width, X42:'Piece', X43:out('Integer')),
  12985.       f(astuple, 'THREE':a:'Integer', X43:b:'Integer', X44:out('Point')),
  12986.       f(crop,
  12987.         X40:'Grid',
  12988.         (0, 0):start:'Point',
  12989.         X44:dims:'Point',
  12990.         OUT:out('Grid'))
  12991.     ].
  12992. solve('22233c11', IN, OUT) :-
  12993.     [ f(objects,
  12994.         IN:'Grid',
  12995.         univalued=true,
  12996.         diagonal=false,
  12997.         without_bg=true,
  12998.         X1:out('Objects')),
  12999.       f(objects,
  13000.         IN:'Grid',
  13001.         univalued=true,
  13002.         diagonal=true,
  13003.         without_bg=true,
  13004.         X2:out('Objects')),
  13005.       f(first, X1:'Container', X3:out('Any')),
  13006.       f(recolor, 'EIGHT':value:'Integer', X3:'Patch', X4:out('Object')),
  13007.       f(normalize, X4:'Patch', X5:out('Patch')),
  13008.       f(totuple, X2:container:'FrozenSet', X6:out('Tuple')),
  13009.       f(apply, width, X6:'Container', X7:out('Container')),
  13010.       f(lbind, index, IN:fixed:'Any', X8:out('Callable')),
  13011.       f(rbind, equality, 'ZERO':fixed:'Any', X9:out('Callable')),
  13012.       f(chain,
  13013.         flip:h:'Callable',
  13014.         X9:g:'Callable',
  13015.         X8:f:'Callable',
  13016.         X10:out('Callable')),
  13017.       f(apply, urcorner, X6:'Container', X11:out('Container')),
  13018.       f(apply, X10, X11:'Container', X12:out('Container')),
  13019.       f(first, X7:'Container', X13:out('Any')),
  13020.       f(halve, X13:n:'Numerical', X14:out('Numerical')),
  13021.       f(pair, X6:a:'Tuple', X12:b:'Tuple', X15:out('TupleTuple')),
  13022.       f(sfilter,
  13023.         X15:'Container',
  13024.         last:condition:'Callable',
  13025.         X16:out('Container')),
  13026.       f(apply, first, X16:'Container', X17:out('Container')),
  13027.       f(apply, flip, X12:'Container', X18:out('Container')),
  13028.       f(pair, X6:a:'Tuple', X18:b:'Tuple', X19:out('TupleTuple')),
  13029.       f(sfilter,
  13030.         X19:'Container',
  13031.         last:condition:'Callable',
  13032.         X20:out('Container')),
  13033.       f(apply, first, X20:'Container', X21:out('Container')),
  13034.       f(apply, urcorner, X21:'Container', X22:out('Container')),
  13035.       f(invert, X14:n:'Numerical', X23:out('Numerical')),
  13036.       f(astuple, X23:a:'Integer', 'ONE':b:'Integer', X24:out('Point')),
  13037.       f(lbind, add, X24:fixed:'Any', X25:out('Callable')),
  13038.       f(apply, X25, X22:'Container', X26:out('Container')),
  13039.       f(lbind, shift, X5:fixed:'Any', X27:out('Callable')),
  13040.       f(mapply,
  13041.         X27,
  13042.         X26:container:'ContainerContainer',
  13043.         X28:out('FrozenSet')),
  13044.       f(apply, llcorner, X21:'Container', X29:out('Container')),
  13045.       f(astuple, 'ONE':a:'Integer', X23:b:'Integer', X30:out('Point')),
  13046.       f(lbind, add, X30:fixed:'Any', X31:out('Callable')),
  13047.       f(apply, X31, X29:'Container', X32:out('Container')),
  13048.       f(mapply,
  13049.         X27,
  13050.         X32:container:'ContainerContainer',
  13051.         X33:out('FrozenSet')),
  13052.       f(apply, ulcorner, X17:'Container', X34:out('Container')),
  13053.       f(astuple, X23:a:'Integer', X23:b:'Integer', X35:out('Point')),
  13054.       f(lbind, add, X35:fixed:'Any', X36:out('Callable')),
  13055.       f(apply, X36, X34:'Container', X37:out('Container')),
  13056.       f(mapply,
  13057.         X27,
  13058.         X37:container:'ContainerContainer',
  13059.         X38:out('FrozenSet')),
  13060.       f(apply, lrcorner, X17:'Container', X39:out('Container')),
  13061.       f(lbind, add, (1, 1):fixed:'Any', X40:out('Callable')),
  13062.       f(apply, X40, X39:'Container', X41:out('Container')),
  13063.       f(mapply,
  13064.         X27,
  13065.         X41:container:'ContainerContainer',
  13066.         X42:out('FrozenSet')),
  13067.       f(paint, IN:'Grid', X28:obj:'Object', X43:out('Grid')),
  13068.       f(paint, X43:'Grid', X33:obj:'Object', X44:out('Grid')),
  13069.       f(paint, X44:'Grid', X38:obj:'Object', X45:out('Grid')),
  13070.       f(paint, X45:'Grid', X42:obj:'Object', OUT:out('Grid'))
  13071.     ].
  13072. solve('2dd70a9a', IN, OUT) :-
  13073.     [ f(ofcolor, IN:'Grid', 'TWO':value:'Integer', X1:out('Indices')),
  13074.       f(ofcolor, IN:'Grid', 'THREE':value:'Integer', X2:out('Indices')),
  13075.       f(vline, X1:'Patch', returns=X3),
  13076.       f(vline, X2:'Patch', returns=X4),
  13077.       f(center, X1:'Patch', X5:out('Point')),
  13078.       f(branch,
  13079.         condition=X4,
  13080.         uppermost:a:'Any',
  13081.         rightmost:b:'Any',
  13082.         X6:out('Any')),
  13083.       f(X6, X1, X7),
  13084.       f(X6, X2, X8),
  13085.       f(greater, X7:a:'Integer', X8:b:'Integer', returns=X9),
  13086.       f(both, a=X4, b=X9, returns=X10),
  13087.       f(branch,
  13088.         condition=X10,
  13089.         lowermost:a:'Any',
  13090.         uppermost:b:'Any',
  13091.         X11:out('Any')),
  13092.       f(X11, X2, X12),
  13093.       f(branch,
  13094.         condition=X4,
  13095.         leftmost:a:'Any',
  13096.         rightmost:b:'Any',
  13097.         X13:out('Any')),
  13098.       f(X13, X2, X14),
  13099.       f(astuple, X12:a:'Integer', X14:b:'Integer', X15:out('Point')),
  13100.       f(other, X2:'Container', X15:value:'Any', X16:out('Any')),
  13101.       f(subtract,
  13102.         X15:a:'Numerical',
  13103.         X16:b:'Numerical',
  13104.         X17:out('Numerical')),
  13105.       f(shoot,
  13106.         X15:start:'Point',
  13107.         X17:direction:'Point',
  13108.         X18:out('Indices')),
  13109.       f(underfill,
  13110.         IN:'Grid',
  13111.         'ONE':value:'Integer',
  13112.         X18:'Patch',
  13113.         X19:out('Grid')),
  13114.       f(objects,
  13115.         X19:'Grid',
  13116.         univalued=true,
  13117.         diagonal=false,
  13118.         without_bg=false,
  13119.         X20:out('Objects')),
  13120.       f(colorfilter,
  13121.         X20:objs:'Objects',
  13122.         'ONE':value:'Integer',
  13123.         X21:out('Objects')),
  13124.       f(rbind, adjacent, X2:fixed:'Any', X22:out('Callable')),
  13125.       f(sfilter,
  13126.         X21:'Container',
  13127.         X22:condition:'Callable',
  13128.         X23:out('Container')),
  13129.       f(difference,
  13130.         X21:a:'FrozenSet',
  13131.         X23:b:'FrozenSet',
  13132.         X24:out('FrozenSet')),
  13133.       f(merge,
  13134.         X24:containers:'ContainerContainer',
  13135.         X25:out('Container')),
  13136.       f(cover, X19:'Grid', X25:'Patch', X26:out('Grid')),
  13137.       f(shoot,
  13138.         X5:start:'Point',
  13139.         (1, 0):direction:'Point',
  13140.         X27:out('Indices')),
  13141.       f(shoot,
  13142.         X5:start:'Point',
  13143.         (-1, 0):direction:'Point',
  13144.         X28:out('Indices')),
  13145.       f(shoot,
  13146.         X5:start:'Point',
  13147.         (0, -1):direction:'Point',
  13148.         X29:out('Indices')),
  13149.       f(shoot,
  13150.         X5:start:'Point',
  13151.         (0, 1):direction:'Point',
  13152.         X30:out('Indices')),
  13153.       f(combine,
  13154.         X27:a:'Container',
  13155.         X28:b:'Container',
  13156.         X31:out('Container')),
  13157.       f(combine,
  13158.         X29:a:'Container',
  13159.         X30:b:'Container',
  13160.         X32:out('Container')),
  13161.       f(branch,
  13162.         condition=X3,
  13163.         X31:a:'Any',
  13164.         X32:b:'Any',
  13165.         X33:out('Any')),
  13166.       f(ofcolor, X26:'Grid', 'ONE':value:'Integer', X34:out('Indices')),
  13167.       f(initset, X15:value:'Any', X35:out('FrozenSet')),
  13168.       f(rbind, manhattan, X35:fixed:'Any', X36:out('Callable')),
  13169.       f(compose,
  13170.         X36:outer:'Callable',
  13171.         initset:inner:'Callable',
  13172.         X37:out('Callable')),
  13173.       f(argmax,
  13174.         X34:'Container',
  13175.         X37:compfunc:'Callable',
  13176.         X38:out('Any')),
  13177.       f(initset, X38:value:'Any', X39:out('FrozenSet')),
  13178.       f(gravitate,
  13179.         X39:source:'Patch',
  13180.         X33:destination:'Patch',
  13181.         X40:out('Point')),
  13182.       f(crement, X40:x:'Numerical', X41:out('Numerical')),
  13183.       f(add,
  13184.         X38:a:'Numerical',
  13185.         X41:b:'Numerical',
  13186.         X42:out('Numerical')),
  13187.       f(connect, X38:a:'Point', X42:b:'Point', X43:out('Indices')),
  13188.       f(fill,
  13189.         X26:'Grid',
  13190.         'ONE':value:'Integer',
  13191.         X43:'Patch',
  13192.         X44:out('Grid')),
  13193.       f(connect, X42:a:'Point', X5:b:'Point', X45:out('Indices')),
  13194.       f(underfill,
  13195.         X44:'Grid',
  13196.         'ONE':value:'Integer',
  13197.         X45:'Patch',
  13198.         X46:out('Grid')),
  13199.       f(replace,
  13200.         X46:'Grid',
  13201.         'ONE':replacee:'Integer',
  13202.         'THREE':replacer:'Integer',
  13203.         OUT:out('Grid'))
  13204.     ].
  13205. solve(a64e4611, IN, OUT) :-
  13206.     [ f(asindices, IN:'Grid', X1:out('Indices')),
  13207.       f(fork,
  13208.         product:outer:'Callable',
  13209.         identity:a:'Callable',
  13210.         identity:b:'Callable',
  13211.         X2:out('Callable')),
  13212.       f(lbind, canvas, 'ZERO':fixed:'Any', X3:out('Callable')),
  13213.       f(compose,
  13214.         asobject:outer:'Callable',
  13215.         X3:inner:'Callable',
  13216.         X4:out('Callable')),
  13217.       f(fork,
  13218.         multiply:outer:'Callable',
  13219.         first:a:'Callable',
  13220.         last:b:'Callable',
  13221.         X5:out('Callable')),
  13222.       f(compose,
  13223.         positive:outer:'Callable',
  13224.         size:inner:'Callable',
  13225.         X6:out('Callable')),
  13226.       f(lbind, lbind, shift:fixed:'Any', X7:out('Callable')),
  13227.       f(rbind, fork, X5:fixed:'Any', X8:out('Callable')),
  13228.       f(lbind, X8, multiply:fixed:'Any', X9:out('Callable')),
  13229.       f(lbind, chain, X6:fixed:'Any', X10:out('Callable')),
  13230.       f(rbind, X10, X4:fixed:'Any', X11:out('Callable')),
  13231.       f(lbind, lbind, occurrences:fixed:'Any', X12:out('Callable')),
  13232.       f(chain,
  13233.         X9:h:'Callable',
  13234.         X11:g:'Callable',
  13235.         X12:f:'Callable',
  13236.         X13:out('Callable')),
  13237.       f(compose,
  13238.         X2:outer:'Callable',
  13239.         first:inner:'Callable',
  13240.         X14:out('Callable')),
  13241.       f(compose,
  13242.         X13:outer:'Callable',
  13243.         last:inner:'Callable',
  13244.         X15:out('Callable')),
  13245.       f(fork,
  13246.         argmax:outer:'Callable',
  13247.         X14:a:'Callable',
  13248.         X15:b:'Callable',
  13249.         X16:out('Callable')),
  13250.       f(chain,
  13251.         X7:h:'Callable',
  13252.         X4:g:'Callable',
  13253.         X16:f:'Callable',
  13254.         X17:out('Callable')),
  13255.       f(compose,
  13256.         X4:outer:'Callable',
  13257.         X16:inner:'Callable',
  13258.         X18:out('Callable')),
  13259.       f(fork,
  13260.         occurrences:outer:'Callable',
  13261.         last:a:'Callable',
  13262.         X18:b:'Callable',
  13263.         X19:out('Callable')),
  13264.       f(fork,
  13265.         mapply:outer:'Callable',
  13266.         X17:a:'Callable',
  13267.         X19:b:'Callable',
  13268.         X20:out('Callable')),
  13269.       f(multiply, 'TWO':a:'Numerical', 'SIX':b:'Numerical', X21:out('Numerical')),
  13270.       f(interval,
  13271.         'THREE':start:'Integer',
  13272.         X21:stop:'Integer',
  13273.         'ONE':step:'Integer',
  13274.         X22:out('Tuple')),
  13275.       f(astuple, X22:a:'Integer', IN:b:'Integer', X23:out('Point')),
  13276.       f(X20, X23, X24),
  13277.       f(fill,
  13278.         IN:'Grid',
  13279.         'THREE':value:'Integer',
  13280.         X24:'Patch',
  13281.         X25:out('Grid')),
  13282.       f(interval,
  13283.         'THREE':start:'Integer',
  13284.         'TEN':stop:'Integer',
  13285.         'ONE':step:'Integer',
  13286.         X26:out('Tuple')),
  13287.       f(astuple, X26:a:'Integer', X25:b:'Integer', X27:out('Point')),
  13288.       f(X20, X27, X28),
  13289.       f(fill,
  13290.         X25:'Grid',
  13291.         'THREE':value:'Integer',
  13292.         X28:'Patch',
  13293.         X29:out('Grid')),
  13294.       f(astuple, X26:a:'Integer', X29:b:'Integer', X30:out('Point')),
  13295.       f(X20, X30, X31),
  13296.       f(fill,
  13297.         X29:'Grid',
  13298.         'THREE':value:'Integer',
  13299.         X31:'Patch',
  13300.         X32:out('Grid')),
  13301.       f(rbind, toobject, X32:fixed:'Any', X33:out('Callable')),
  13302.       f(rbind, colorcount, 'THREE':fixed:'Any', X34:out('Callable')),
  13303.       f(chain,
  13304.         X34:h:'Callable',
  13305.         X33:g:'Callable',
  13306.         neighbors:f:'Callable',
  13307.         X35:out('Callable')),
  13308.       f(matcher, X35, 'EIGHT':target:'Any', X36:out('Callable')),
  13309.       f(sfilter,
  13310.         X1:'Container',
  13311.         X36:condition:'Callable',
  13312.         X37:out('Container')),
  13313.       f(fill,
  13314.         IN:'Grid',
  13315.         'THREE':value:'Integer',
  13316.         X37:'Patch',
  13317.         X38:out('Grid')),
  13318.       f(ofcolor, X38:'Grid', 'ZERO':value:'Integer', X39:out('Indices')),
  13319.       f(rbind, bordering, X38:fixed:'Any', X40:out('Callable')),
  13320.       f(compose,
  13321.         X40:outer:'Callable',
  13322.         initset:inner:'Callable',
  13323.         X41:out('Callable')),
  13324.       f(lbind, contained, 'THREE':fixed:'Any', X42:out('Callable')),
  13325.       f(rbind, toobject, X38:fixed:'Any', X43:out('Callable')),
  13326.       f(chain,
  13327.         X42:h:'Callable',
  13328.         palette:g:'Callable',
  13329.         X43:f:'Callable',
  13330.         X44:out('Callable')),
  13331.       f(compose,
  13332.         X44:outer:'Callable',
  13333.         dneighbors:inner:'Callable',
  13334.         X45:out('Callable')),
  13335.       f(fork,
  13336.         both:outer:'Callable',
  13337.         X45:a:'Callable',
  13338.         X41:b:'Callable',
  13339.         X46:out('Callable')),
  13340.       f(sfilter,
  13341.         X39:'Container',
  13342.         X46:condition:'Callable',
  13343.         X47:out('Container')),
  13344.       f(fill,
  13345.         X38:'Grid',
  13346.         'THREE':value:'Integer',
  13347.         X47:'Patch',
  13348.         OUT:out('Grid'))
  13349.     ].
  13350. solve('7837ac64', IN, OUT) :-
  13351.     [ f(compress, IN:'Grid', X1:out('Grid')),
  13352.       f(lbind, colorcount, X1:fixed:'Any', X2:out('Callable')),
  13353.       f(palette, X1:'Element', X3:out('IntegerSet')),
  13354.       f(order,
  13355.         X3:'Container',
  13356.         X2:compfunc:'Callable',
  13357.         X4:out('Tuple')),
  13358.       f(remove, 'ZERO':value:'Any', X4:'Container', X5:out('Container')),
  13359.       f(last, X5:'Container', X6:out('Any')),
  13360.       f(replace,
  13361.         X1:'Grid',
  13362.         X6:replacee:'Integer',
  13363.         'ZERO':replacer:'Integer',
  13364.         X7:out('Grid')),
  13365.       f(objects,
  13366.         X7:'Grid',
  13367.         univalued=true,
  13368.         diagonal=false,
  13369.         without_bg=true,
  13370.         X8:out('Objects')),
  13371.       f(merge, X8:containers:'ContainerContainer', X9:out('Container')),
  13372.       f(subgrid, X9:'Patch', X7:'Grid', X10:out('Grid')),
  13373.       f(index, X10:'Grid', (0, 0):loc:'Point', X11:out('Integer')),
  13374.       f(vmirror, X10:'Piece', X12:out('Piece')),
  13375.       f(index, X12:'Grid', (0, 0):loc:'Point', X13:out('Integer')),
  13376.       f(hmirror, X10:'Piece', X14:out('Piece')),
  13377.       f(index, X14:'Grid', (0, 0):loc:'Point', X15:out('Integer')),
  13378.       f(vmirror, X14:'Piece', X16:out('Piece')),
  13379.       f(index, X16:'Grid', (0, 0):loc:'Point', X17:out('Integer')),
  13380.       f(width, X10:'Piece', X18:out('Integer')),
  13381.       f(subtract,
  13382.         X18:a:'Numerical',
  13383.         'FOUR':b:'Numerical',
  13384.         X19:out('Numerical')),
  13385.       f(divide,
  13386.         X19:a:'Numerical',
  13387.         'THREE':b:'Numerical',
  13388.         X20:out('Numerical')),
  13389.       f(increment, X20:x:'Numerical', X21:out('Numerical')),
  13390.       f(tojvec, X21:j:'Integer', X22:out('Point')),
  13391.       f(toivec, X21:i:'Integer', X23:out('Point')),
  13392.       f(index, X10:'Grid', X22:loc:'Point', X24:out('Integer')),
  13393.       f(index, X12:'Grid', X22:loc:'Point', X25:out('Integer')),
  13394.       f(index, X14:'Grid', X22:loc:'Point', X26:out('Integer')),
  13395.       f(index, X16:'Grid', X22:loc:'Point', X27:out('Integer')),
  13396.       f(index, X10:'Grid', X23:loc:'Point', X28:out('Integer')),
  13397.       f(index, X14:'Grid', X23:loc:'Point', X29:out('Integer')),
  13398.       f(index, X12:'Grid', X23:loc:'Point', X30:out('Integer')),
  13399.       f(equality, X24:a:'Any', X25:b:'Any', returns=X31),
  13400.       f(equality, X26:a:'Any', X27:b:'Any', returns=X32),
  13401.       f(equality, X28:a:'Any', X29:b:'Any', returns=X33),
  13402.       f(equality, X29:a:'Any', X30:b:'Any', returns=X34),
  13403.       f(branch,
  13404.         condition=X31,
  13405.         X24:a:'Any',
  13406.         'ZERO':b:'Any',
  13407.         X35:out('Any')),
  13408.       f(branch,
  13409.         condition=X32,
  13410.         X26:a:'Any',
  13411.         'ZERO':b:'Any',
  13412.         X36:out('Any')),
  13413.       f(branch,
  13414.         condition=X33,
  13415.         X28:a:'Any',
  13416.         'ZERO':b:'Any',
  13417.         X37:out('Any')),
  13418.       f(branch,
  13419.         condition=X34,
  13420.         X29:a:'Any',
  13421.         'ZERO':b:'Any',
  13422.         X38:out('Any')),
  13423.       f(astuple, X11:a:'Integer', X35:b:'Integer', X39:out('Point')),
  13424.       f(repeat, X13:item:'Any', 'ONE':num:'Integer', X40:out('Tuple')),
  13425.       f(combine,
  13426.         X39:a:'Container',
  13427.         X40:b:'Container',
  13428.         X41:out('Container')),
  13429.       f(astuple, X37:a:'Integer', 'ZERO':b:'Integer', X42:out('Point')),
  13430.       f(repeat, X38:item:'Any', 'ONE':num:'Integer', X43:out('Tuple')),
  13431.       f(combine,
  13432.         X42:a:'Container',
  13433.         X43:b:'Container',
  13434.         X44:out('Container')),
  13435.       f(astuple, X15:a:'Integer', X36:b:'Integer', X45:out('Point')),
  13436.       f(repeat, X17:item:'Any', 'ONE':num:'Integer', X46:out('Tuple')),
  13437.       f(combine,
  13438.         X45:a:'Container',
  13439.         X46:b:'Container',
  13440.         X47:out('Container')),
  13441.       f(astuple, X41:a:'Integer', X44:b:'Integer', X48:out('Point')),
  13442.       f(repeat, X47:item:'Any', 'ONE':num:'Integer', X49:out('Tuple')),
  13443.       f(vconcat, X48:a:'Grid', X49:b:'Grid', OUT:out('Grid'))
  13444.     ].
  13445. solve(a8c38be5, IN, OUT) :-
  13446.     [ f(objects,
  13447.         IN:'Grid',
  13448.         univalued=true,
  13449.         diagonal=false,
  13450.         without_bg=true,
  13451.         X1:out('Objects')),
  13452.       f(colorfilter,
  13453.         X1:objs:'Objects',
  13454.         'FIVE':value:'Integer',
  13455.         X2:out('Objects')),
  13456.       f(argmax, X2:'Container', size:compfunc:'Callable', X3:out('Any')),
  13457.       f(subgrid, X3:'Patch', IN:'Grid', X4:out('Grid')),
  13458.       f(difference,
  13459.         X1:a:'FrozenSet',
  13460.         X2:b:'FrozenSet',
  13461.         X5:out('FrozenSet')),
  13462.       f(fork,
  13463.         equality:outer:'Callable',
  13464.         height:a:'Callable',
  13465.         width:b:'Callable',
  13466.         X6:out('Callable')),
  13467.       f(fork,
  13468.         greater:outer:'Callable',
  13469.         width:a:'Callable',
  13470.         height:b:'Callable',
  13471.         X7:out('Callable')),
  13472.       f(sfilter,
  13473.         X5:'Container',
  13474.         X6:condition:'Callable',
  13475.         X8:out('Container')),
  13476.       f(sfilter,
  13477.         X5:'Container',
  13478.         portrait:condition:'Callable',
  13479.         X9:out('Container')),
  13480.       f(sfilter,
  13481.         X5:'Container',
  13482.         X7:condition:'Callable',
  13483.         X10:out('Container')),
  13484.       f(rbind, subgrid, IN:fixed:'Any', X11:out('Callable')),
  13485.       f(chain,
  13486.         center:h:'Callable',
  13487.         delta:g:'Callable',
  13488.         normalize:f:'Callable',
  13489.         X12:out('Callable')),
  13490.       f(order,
  13491.         X8:'Container',
  13492.         X12:compfunc:'Callable',
  13493.         X13:out('Tuple')),
  13494.       f(apply, X11, X13:'Container', X14:out('Container')),
  13495.       f(order,
  13496.         X9:'Container',
  13497.         X12:compfunc:'Callable',
  13498.         X15:out('Tuple')),
  13499.       f(apply, X11, X15:'Container', X16:out('Container')),
  13500.       f(order,
  13501.         X10:'Container',
  13502.         X12:compfunc:'Callable',
  13503.         X17:out('Tuple')),
  13504.       f(apply, X11, X17:'Container', X18:out('Container')),
  13505.       f(first, X14:'Container', X19:out('Any')),
  13506.       f(remove,
  13507.         X19:value:'Any',
  13508.         X14:'Container',
  13509.         X20:out('Container')),
  13510.       f(first, X20:'Container', X21:out('Any')),
  13511.       f(remove,
  13512.         X21:value:'Any',
  13513.         X20:'Container',
  13514.         X22:out('Container')),
  13515.       f(first, X22:'Container', X23:out('Any')),
  13516.       f(last, X14:'Container', X24:out('Any')),
  13517.       f(last, X16:'Container', X25:out('Any')),
  13518.       f(first, X16:'Container', X26:out('Any')),
  13519.       f(last, X18:'Container', X27:out('Any')),
  13520.       f(first, X18:'Container', X28:out('Any')),
  13521.       f(astuple, 'ONE':a:'Integer', 'TWO':b:'Integer', X29:out('Point')),
  13522.       f(astuple, 'ONE':a:'Integer', 'THREE':b:'Integer', X30:out('Point')),
  13523.       f(astuple, 'NINE':a:'Integer', 'ONE':b:'Integer', X31:out('Point')),
  13524.       f(canvas,
  13525.         'FIVE':value:'Integer',
  13526.         X29:dimensions:'Point',
  13527.         X32:out('Grid')),
  13528.       f(canvas,
  13529.         'FIVE':value:'Integer',
  13530.         X30:dimensions:'Point',
  13531.         X33:out('Grid')),
  13532.       f(canvas,
  13533.         'FIVE':value:'Integer',
  13534.         X31:dimensions:'Point',
  13535.         X34:out('Grid')),
  13536.       f(vconcat, X24:a:'Grid', X32:b:'Grid', X35:out('Grid')),
  13537.       f(vconcat, X35:a:'Grid', X25:b:'Grid', X36:out('Grid')),
  13538.       f(vconcat, X36:a:'Grid', X32:b:'Grid', X37:out('Grid')),
  13539.       f(vconcat, X37:a:'Grid', X21:b:'Grid', X38:out('Grid')),
  13540.       f(vconcat, X27:a:'Grid', X33:b:'Grid', X39:out('Grid')),
  13541.       f(vconcat, X39:a:'Grid', X4:b:'Grid', X40:out('Grid')),
  13542.       f(vconcat, X40:a:'Grid', X33:b:'Grid', X41:out('Grid')),
  13543.       f(vconcat, X41:a:'Grid', X28:b:'Grid', X42:out('Grid')),
  13544.       f(vconcat, X23:a:'Grid', X32:b:'Grid', X43:out('Grid')),
  13545.       f(vconcat, X43:a:'Grid', X26:b:'Grid', X44:out('Grid')),
  13546.       f(vconcat, X44:a:'Grid', X32:b:'Grid', X45:out('Grid')),
  13547.       f(vconcat, X45:a:'Grid', X19:b:'Grid', X46:out('Grid')),
  13548.       f(hconcat, X38:a:'Grid', X34:b:'Grid', X47:out('Grid')),
  13549.       f(hconcat, X47:a:'Grid', X42:b:'Grid', X48:out('Grid')),
  13550.       f(hconcat, X48:a:'Grid', X34:b:'Grid', X49:out('Grid')),
  13551.       f(hconcat, X49:a:'Grid', X46:b:'Grid', OUT:out('Grid'))
  13552.     ].
  13553. solve(b775ac94, IN, OUT) :-
  13554.     [ f(objects,
  13555.         IN:'Grid',
  13556.         univalued=false,
  13557.         diagonal=true,
  13558.         without_bg=true,
  13559.         X1:out('Objects')),
  13560.       f(lbind, rbind, equality:fixed:'Any', X2:out('Callable')),
  13561.       f(rbind, compose, first:fixed:'Any', X3:out('Callable')),
  13562.       f(chain,
  13563.         X3:h:'Callable',
  13564.         X2:g:'Callable',
  13565.         mostcolor:f:'Callable',
  13566.         X4:out('Callable')),
  13567.       f(fork,
  13568.         sfilter:outer:'Callable',
  13569.         identity:a:'Callable',
  13570.         X4:b:'Callable',
  13571.         X5:out('Callable')),
  13572.       f(fork,
  13573.         difference:outer:'Callable',
  13574.         identity:a:'Callable',
  13575.         X5:b:'Callable',
  13576.         X6:out('Callable')),
  13577.       f(lbind, rbind, adjacent:fixed:'Any', X7:out('Callable')),
  13578.       f(rbind, compose, initset:fixed:'Any', X8:out('Callable')),
  13579.       f(chain,
  13580.         X8:h:'Callable',
  13581.         X7:g:'Callable',
  13582.         X6:f:'Callable',
  13583.         X9:out('Callable')),
  13584.       f(fork,
  13585.         extract:outer:'Callable',
  13586.         X5:a:'Callable',
  13587.         X9:b:'Callable',
  13588.         X10:out('Callable')),
  13589.       f(fork,
  13590.         insert:outer:'Callable',
  13591.         X10:a:'Callable',
  13592.         X6:b:'Callable',
  13593.         X11:out('Callable')),
  13594.       f(lbind, recolor, 'ZERO':fixed:'Any', X12:out('Callable')),
  13595.       f(chain,
  13596.         X12:h:'Callable',
  13597.         delta:g:'Callable',
  13598.         X11:f:'Callable',
  13599.         X13:out('Callable')),
  13600.       f(fork,
  13601.         combine:outer:'Callable',
  13602.         X11:a:'Callable',
  13603.         X13:b:'Callable',
  13604.         X14:out('Callable')),
  13605.       f(fork,
  13606.         position:outer:'Callable',
  13607.         X5:a:'Callable',
  13608.         X6:b:'Callable',
  13609.         X15:out('Callable')),
  13610.       f(chain,
  13611.         toivec:h:'Callable',
  13612.         first:g:'Callable',
  13613.         X15:f:'Callable',
  13614.         X16:out('Callable')),
  13615.       f(chain,
  13616.         tojvec:h:'Callable',
  13617.         last:g:'Callable',
  13618.         X15:f:'Callable',
  13619.         X17:out('Callable')),
  13620.       f(fork,
  13621.         multiply:outer:'Callable',
  13622.         shape:a:'Callable',
  13623.         X16:b:'Callable',
  13624.         X18:out('Callable')),
  13625.       f(fork,
  13626.         multiply:outer:'Callable',
  13627.         shape:a:'Callable',
  13628.         X17:b:'Callable',
  13629.         X19:out('Callable')),
  13630.       f(fork,
  13631.         multiply:outer:'Callable',
  13632.         shape:a:'Callable',
  13633.         X15:b:'Callable',
  13634.         X20:out('Callable')),
  13635.       f(fork,
  13636.         shift:outer:'Callable',
  13637.         hmirror:a:'Callable',
  13638.         X18:b:'Callable',
  13639.         X21:out('Callable')),
  13640.       f(fork,
  13641.         shift:outer:'Callable',
  13642.         vmirror:a:'Callable',
  13643.         X19:b:'Callable',
  13644.         X22:out('Callable')),
  13645.       f(compose,
  13646.         hmirror:outer:'Callable',
  13647.         vmirror:inner:'Callable',
  13648.         X23:out('Callable')),
  13649.       f(fork,
  13650.         shift:outer:'Callable',
  13651.         X23:a:'Callable',
  13652.         X20:b:'Callable',
  13653.         X24:out('Callable')),
  13654.       f(lbind, compose, X5:fixed:'Any', X25:out('Callable')),
  13655.       f(X25, X21, X26),
  13656.       f(X25, X22, X27),
  13657.       f(X25, X24, X28),
  13658.       f(compose,
  13659.         crement:outer:'Callable',
  13660.         invert:inner:'Callable',
  13661.         X29:out('Callable')),
  13662.       f(lbind, compose, X29:fixed:'Any', X30:out('Callable')),
  13663.       f(X30, X16, X31),
  13664.       f(X30, X17, X32),
  13665.       f(X30, X15, X33),
  13666.       f(fork,
  13667.         shift:outer:'Callable',
  13668.         X26:a:'Callable',
  13669.         X31:b:'Callable',
  13670.         X34:out('Callable')),
  13671.       f(fork,
  13672.         shift:outer:'Callable',
  13673.         X27:a:'Callable',
  13674.         X32:b:'Callable',
  13675.         X35:out('Callable')),
  13676.       f(fork,
  13677.         shift:outer:'Callable',
  13678.         X28:a:'Callable',
  13679.         X33:b:'Callable',
  13680.         X36:out('Callable')),
  13681.       f(lbind, index, IN:fixed:'Any', X37:out('Callable')),
  13682.       f(lbind, compose, toindices:fixed:'Any', X38:out('Callable')),
  13683.       f(X38, X14, X39),
  13684.       f(X38, X34, X40),
  13685.       f(X38, X35, X41),
  13686.       f(X38, X36, X42),
  13687.       f(fork,
  13688.         intersection:outer:'Callable',
  13689.         X39:a:'Callable',
  13690.         X40:b:'Callable',
  13691.         X43:out('Callable')),
  13692.       f(fork,
  13693.         intersection:outer:'Callable',
  13694.         X39:a:'Callable',
  13695.         X41:b:'Callable',
  13696.         X44:out('Callable')),
  13697.       f(fork,
  13698.         intersection:outer:'Callable',
  13699.         X39:a:'Callable',
  13700.         X42:b:'Callable',
  13701.         X45:out('Callable')),
  13702.       f(chain,
  13703.         X37:h:'Callable',
  13704.         first:g:'Callable',
  13705.         X43:f:'Callable',
  13706.         X46:out('Callable')),
  13707.       f(chain,
  13708.         X37:h:'Callable',
  13709.         first:g:'Callable',
  13710.         X44:f:'Callable',
  13711.         X47:out('Callable')),
  13712.       f(chain,
  13713.         X37:h:'Callable',
  13714.         first:g:'Callable',
  13715.         X45:f:'Callable',
  13716.         X48:out('Callable')),
  13717.       f(fork,
  13718.         recolor:outer:'Callable',
  13719.         X46:a:'Callable',
  13720.         X34:b:'Callable',
  13721.         X49:out('Callable')),
  13722.       f(fork,
  13723.         recolor:outer:'Callable',
  13724.         X47:a:'Callable',
  13725.         X35:b:'Callable',
  13726.         X50:out('Callable')),
  13727.       f(fork,
  13728.         recolor:outer:'Callable',
  13729.         X48:a:'Callable',
  13730.         X36:b:'Callable',
  13731.         X51:out('Callable')),
  13732.       f(mapply,
  13733.         X49,
  13734.         X1:container:'ContainerContainer',
  13735.         X52:out('FrozenSet')),
  13736.       f(mapply,
  13737.         X50,
  13738.         X1:container:'ContainerContainer',
  13739.         X53:out('FrozenSet')),
  13740.       f(mapply,
  13741.         X51,
  13742.         X1:container:'ContainerContainer',
  13743.         X54:out('FrozenSet')),
  13744.       f(paint, IN:'Grid', X52:obj:'Object', X55:out('Grid')),
  13745.       f(paint, X55:'Grid', X53:obj:'Object', X56:out('Grid')),
  13746.       f(paint, X56:'Grid', X54:obj:'Object', OUT:out('Grid'))
  13747.     ].
  13748. solve('97a05b5b', IN, OUT) :-
  13749.     [ f(objects,
  13750.         IN:'Grid',
  13751.         univalued=false,
  13752.         diagonal=true,
  13753.         without_bg=true,
  13754.         X1:out('Objects')),
  13755.       f(argmax, X1:'Container', size:compfunc:'Callable', X2:out('Any')),
  13756.       f(subgrid, X2:'Patch', IN:'Grid', X3:out('Grid')),
  13757.       f(rbind, greater, 'ONE':fixed:'Any', X4:out('Callable')),
  13758.       f(compose,
  13759.         X4:outer:'Callable',
  13760.         numcolors:inner:'Callable',
  13761.         X5:out('Callable')),
  13762.       f(sfilter,
  13763.         X1:'Container',
  13764.         X5:condition:'Callable',
  13765.         X6:out('Container')),
  13766.       f(lbind, rbind, subtract:fixed:'Any', X7:out('Callable')),
  13767.       f(switch, X3:'Grid', 'TWO':a:'Integer', 'ZERO':b:'Integer', X8:out('Grid')),
  13768.       f(lbind, occurrences, X8:fixed:'Any', X9:out('Callable')),
  13769.       f(lbind, lbind, shift:fixed:'Any', X10:out('Callable')),
  13770.       f(compose,
  13771.         X7:outer:'Callable',
  13772.         ulcorner:inner:'Callable',
  13773.         X11:out('Callable')),
  13774.       f(matcher, first, 'TWO':target:'Any', X12:out('Callable')),
  13775.       f(compose,
  13776.         flip:outer:'Callable',
  13777.         X12:inner:'Callable',
  13778.         X13:out('Callable')),
  13779.       f(rbind, sfilter, X12:fixed:'Any', X14:out('Callable')),
  13780.       f(rbind, sfilter, X13:fixed:'Any', X15:out('Callable')),
  13781.       f(lbind, recolor, 'ZERO':fixed:'Any', X16:out('Callable')),
  13782.       f(compose,
  13783.         X16:outer:'Callable',
  13784.         X15:inner:'Callable',
  13785.         X17:out('Callable')),
  13786.       f(fork,
  13787.         combine:outer:'Callable',
  13788.         X17:a:'Callable',
  13789.         X14:b:'Callable',
  13790.         X18:out('Callable')),
  13791.       f(chain,
  13792.         X11:h:'Callable',
  13793.         X18:g:'Callable',
  13794.         normalize:f:'Callable',
  13795.         X19:out('Callable')),
  13796.       f(objects,
  13797.         X8:'Grid',
  13798.         univalued=true,
  13799.         diagonal=true,
  13800.         without_bg=true,
  13801.         X20:out('Objects')),
  13802.       f(apply, toindices, X20:'Container', X21:out('Container')),
  13803.       f(chain,
  13804.         X9:h:'Callable',
  13805.         X18:g:'Callable',
  13806.         normalize:f:'Callable',
  13807.         X22:out('Callable')),
  13808.       f(rbind, colorcount, 'TWO':fixed:'Any', X23:out('Callable')),
  13809.       f(lbind, sfilter, X21:fixed:'Any', X24:out('Callable')),
  13810.       f(chain,
  13811.         size:h:'Callable',
  13812.         first:g:'Callable',
  13813.         X24:f:'Callable',
  13814.         X25:out('Callable')),
  13815.       f(compose,
  13816.         positive:outer:'Callable',
  13817.         size:inner:'Callable',
  13818.         X26:out('Callable')),
  13819.       f(lbind, lbind, contained:fixed:'Any', X27:out('Callable')),
  13820.       f(chain,
  13821.         X26:h:'Callable',
  13822.         X24:g:'Callable',
  13823.         X27:f:'Callable',
  13824.         X28:out('Callable')),
  13825.       f(compose,
  13826.         X25:outer:'Callable',
  13827.         X27:inner:'Callable',
  13828.         X29:out('Callable')),
  13829.       f(rbind, sfilter, X28:fixed:'Any', X30:out('Callable')),
  13830.       f(compose,
  13831.         X30:outer:'Callable',
  13832.         X22:inner:'Callable',
  13833.         X31:out('Callable')),
  13834.       f(lbind, rbind, equality:fixed:'Any', X32:out('Callable')),
  13835.       f(rbind, compose, X29:fixed:'Any', X33:out('Callable')),
  13836.       f(chain,
  13837.         X33:h:'Callable',
  13838.         X32:g:'Callable',
  13839.         X23:f:'Callable',
  13840.         X34:out('Callable')),
  13841.       f(fork,
  13842.         sfilter:outer:'Callable',
  13843.         X31:a:'Callable',
  13844.         X34:b:'Callable',
  13845.         X35:out('Callable')),
  13846.       f(fork,
  13847.         apply:outer:'Callable',
  13848.         X19:a:'Callable',
  13849.         X35:b:'Callable',
  13850.         X36:out('Callable')),
  13851.       f(compose,
  13852.         X10:outer:'Callable',
  13853.         normalize:inner:'Callable',
  13854.         X37:out('Callable')),
  13855.       f(fork,
  13856.         mapply:outer:'Callable',
  13857.         X37:a:'Callable',
  13858.         X36:b:'Callable',
  13859.         X38:out('Callable')),
  13860.       f(astuple, cmirror:a:'Integer', dmirror:b:'Integer', X39:out('Point')),
  13861.       f(astuple, hmirror:a:'Integer', vmirror:b:'Integer', X40:out('Point')),
  13862.       f(combine,
  13863.         X39:a:'Container',
  13864.         X40:b:'Container',
  13865.         X41:out('Container')),
  13866.       f(product,
  13867.         X41:a:'Container',
  13868.         X41:b:'Container',
  13869.         X42:out('FrozenSet')),
  13870.       f(fork,
  13871.         compose:outer:'Callable',
  13872.         first:a:'Callable',
  13873.         last:b:'Callable',
  13874.         X43:out('Callable')),
  13875.       f(apply, X43, X42:'Container', X44:out('Container')),
  13876.       f(lbind, rapply, X44:fixed:'Any', X45:out('Callable')),
  13877.       f(mapply,
  13878.         X45,
  13879.         X6:container:'ContainerContainer',
  13880.         X46:out('FrozenSet')),
  13881.       f(mapply,
  13882.         X38,
  13883.         X46:container:'ContainerContainer',
  13884.         X47:out('FrozenSet')),
  13885.       f(paint, X3:'Grid', X47:obj:'Object', X48:out('Grid')),
  13886.       f(palette, X47:'Element', X49:out('IntegerSet')),
  13887.       f(lbind, remove, 'TWO':fixed:'Any', X50:out('Callable')),
  13888.       f(X50, X49, X51),
  13889.       f(chain,
  13890.         first:h:'Callable',
  13891.         X50:g:'Callable',
  13892.         palette:f:'Callable',
  13893.         X52:out('Callable')),
  13894.       f(rbind, contained, X51:fixed:'Any', X53:out('Callable')),
  13895.       f(chain,
  13896.         flip:h:'Callable',
  13897.         X53:g:'Callable',
  13898.         X52:f:'Callable',
  13899.         X54:out('Callable')),
  13900.       f(sfilter,
  13901.         X6:'Container',
  13902.         X54:condition:'Callable',
  13903.         X55:out('Container')),
  13904.       f(fork,
  13905.         apply:outer:'Callable',
  13906.         X19:a:'Callable',
  13907.         X22:b:'Callable',
  13908.         X56:out('Callable')),
  13909.       f(fork,
  13910.         mapply:outer:'Callable',
  13911.         X37:a:'Callable',
  13912.         X56:b:'Callable',
  13913.         X57:out('Callable')),
  13914.       f(mapply,
  13915.         X45,
  13916.         X55:container:'ContainerContainer',
  13917.         X58:out('FrozenSet')),
  13918.       f(mapply,
  13919.         X57,
  13920.         X58:container:'ContainerContainer',
  13921.         X59:out('FrozenSet')),
  13922.       f(paint, X48:'Grid', X59:obj:'Object', OUT:out('Grid'))
  13923.     ].
  13924. solve('3e980e27', IN, OUT) :-
  13925.     [ f(objects,
  13926.         IN:'Grid',
  13927.         univalued=false,
  13928.         diagonal=true,
  13929.         without_bg=true,
  13930.         X1:out('Objects')),
  13931.       f(lbind, contained, 'TWO':fixed:'Any', X2:out('Callable')),
  13932.       f(compose,
  13933.         X2:outer:'Callable',
  13934.         palette:inner:'Callable',
  13935.         X3:out('Callable')),
  13936.       f(lbind, contained, 'THREE':fixed:'Any', X4:out('Callable')),
  13937.       f(compose,
  13938.         X4:outer:'Callable',
  13939.         palette:inner:'Callable',
  13940.         X5:out('Callable')),
  13941.       f(sfilter,
  13942.         X1:'Container',
  13943.         X3:condition:'Callable',
  13944.         X6:out('Container')),
  13945.       f(sfilter,
  13946.         X1:'Container',
  13947.         X5:condition:'Callable',
  13948.         X7:out('Container')),
  13949.       f(compose,
  13950.         positive:outer:'Callable',
  13951.         size:inner:'Callable',
  13952.         X8:out('Callable')),
  13953.       f(X8, X7, X9),
  13954.       f(X8, X6, X10),
  13955.       f(both, a=X9, b=X10, returns=X11),
  13956.       f(repeat, 'ZERO':item:'Any', 'ZERO':num:'Integer', X12:out('Tuple')),
  13957.       f(rbind, subgrid, IN:fixed:'Any', X13:out('Callable')),
  13958.       f(chain,
  13959.         asobject:h:'Callable',
  13960.         vmirror:g:'Callable',
  13961.         X13:f:'Callable',
  13962.         X14:out('Callable')),
  13963.       f(matcher, first, 'ZERO':target:'Any', X15:out('Callable')),
  13964.       f(compose,
  13965.         flip:outer:'Callable',
  13966.         X15:inner:'Callable',
  13967.         X16:out('Callable')),
  13968.       f(lbind, matcher, first:fixed:'Any', X17:out('Callable')),
  13969.       f(lbind, rbind, add:fixed:'Any', X18:out('Callable')),
  13970.       f(rbind, argmax, size:fixed:'Any', X19:out('Callable')),
  13971.       f(chain,
  13972.         X18:h:'Callable',
  13973.         invert:g:'Callable',
  13974.         ulcorner:f:'Callable',
  13975.         X20:out('Callable')),
  13976.       f(lbind, lbind, shift:fixed:'Any', X21:out('Callable')),
  13977.       f(lbind, occurrences, IN:fixed:'Any', X22:out('Callable')),
  13978.       f(rbind, astuple, (0, 0):fixed:'Any', X23:out('Callable')),
  13979.       f(chain,
  13980.         X22:h:'Callable',
  13981.         initset:g:'Callable',
  13982.         X23:f:'Callable',
  13983.         X24:out('Callable')),
  13984.       f(branch,
  13985.         condition=X9,
  13986.         X7:a:'Any',
  13987.         X6:b:'Any',
  13988.         X25:out('Any')),
  13989.       f(X19, X25, X26),
  13990.       f(branch,
  13991.         condition=X9,
  13992.         identity:a:'Any',
  13993.         X14:b:'Any',
  13994.         X27:out('Any')),
  13995.       f(branch, condition=X9, 'THREE':a:'Any', 'TWO':b:'Any', X28:out('Any')),
  13996.       f(X27, X26, X29),
  13997.       f(sfilter,
  13998.         X29:'Container',
  13999.         X16:condition:'Callable',
  14000.         X30:out('Container')),
  14001.       f(X24, X28, X31),
  14002.       f(X17, X28, X32),
  14003.       f(sfilter,
  14004.         X26:'Container',
  14005.         X32:condition:'Callable',
  14006.         X33:out('Container')),
  14007.       f(center, X33:'Patch', X34:out('Point')),
  14008.       f(remove,
  14009.         X34:value:'Any',
  14010.         X31:'Container',
  14011.         X35:out('Container')),
  14012.       f(normalize, X30:'Patch', X36:out('Patch')),
  14013.       f(sfilter,
  14014.         X36:'Container',
  14015.         X32:condition:'Callable',
  14016.         X37:out('Container')),
  14017.       f(X20, X37, X38),
  14018.       f(apply, X38, X35:'Container', X39:out('Container')),
  14019.       f(X21, X36, X40),
  14020.       f(mapply,
  14021.         X40,
  14022.         X39:container:'ContainerContainer',
  14023.         X41:out('FrozenSet')),
  14024.       f(paint, IN:'Grid', X41:obj:'Object', X42:out('Grid')),
  14025.       f(branch,
  14026.         condition=X10,
  14027.         X6:a:'Any',
  14028.         X7:b:'Any',
  14029.         X43:out('Any')),
  14030.       f(X19, X43, X44),
  14031.       f(branch,
  14032.         condition=X9,
  14033.         X14:a:'Any',
  14034.         identity:b:'Any',
  14035.         X45:out('Any')),
  14036.       f(branch, condition=X10, 'TWO':a:'Any', 'THREE':b:'Any', X46:out('Any')),
  14037.       f(X45, X44, X47),
  14038.       f(sfilter,
  14039.         X47:'Container',
  14040.         X16:condition:'Callable',
  14041.         X48:out('Container')),
  14042.       f(X24, X46, X49),
  14043.       f(X17, X46, X50),
  14044.       f(sfilter,
  14045.         X44:'Container',
  14046.         X50:condition:'Callable',
  14047.         X51:out('Container')),
  14048.       f(center, X51:'Patch', X52:out('Point')),
  14049.       f(remove,
  14050.         X52:value:'Any',
  14051.         X49:'Container',
  14052.         X53:out('Container')),
  14053.       f(normalize, X48:'Patch', X54:out('Patch')),
  14054.       f(sfilter,
  14055.         X54:'Container',
  14056.         X50:condition:'Callable',
  14057.         X55:out('Container')),
  14058.       f(X20, X55, X56),
  14059.       f(apply, X56, X53:'Container', X57:out('Container')),
  14060.       f(branch,
  14061.         condition=X11,
  14062.         X57:a:'Any',
  14063.         X12:b:'Any',
  14064.         X58:out('Any')),
  14065.       f(X21, X54, X59),
  14066.       f(mapply,
  14067.         X59,
  14068.         X58:container:'ContainerContainer',
  14069.         X60:out('FrozenSet')),
  14070.       f(paint, X42:'Grid', X60:obj:'Object', OUT:out('Grid'))
  14071.     ].
  14072. true.
  14073.  
  14074. 113 ?-
  14075.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement