<?xml version="1.0" encoding="UTF-8"?>
<Worksheet>
<Version major="2018" minor="1"/>
<Label-Scheme value="2" prefix=""/>
<View-Properties presentation="true" autoexpanding_sections="true" UserProfileName="Maple Default Profile" NumericFormat-ApplyInteger="true" NumericFormat-ApplyRational="true" NumericFormat-ApplyExponent="false" editable="true">
</View-Properties>
<MapleNet-Properties prettyprint="3" warnlevel="3" preplot="" helpbrowser="standard" displayprecision="-1" echo="1" unitattributes="&quot;fontweight&quot; = &quot;bold&quot;" imaginaryunit="I" longdelim="true" elisiontermsthreshold="10000" elisiondigitsafter="100" elisiondigitsbefore="100" plotdevice="inline" errorbreak="1" plotoptions="" plotdriver="opengl" quiet="false" elisiontermsbefore="100" elisiontermsafter="100" screenwidth="79" indentamount="4" plotoutput="terminal" screenpixelheight="1024" rtablesize="10" useclientjvm="true" labelwidth="20" postplot="" typesetting="extended" ansi="false" ansicolor="[]" elisiondigitsthreshold="10000" showassumed="1" ansilprint="false" errorcursor="false" labelling="true" screenheight="25" prompt="&gt; " verboseproc="1" latexwidth="8.0" ShowLabels="true"/>
<Styles>
<Font name="Heading 1" background="[255,255,255]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="24" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Warning" background="[255,255,255]" bold="false" executable="false" family="Courier New" foreground="[0,0,255]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="2D Output" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,255]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Heading 4" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="true" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Line Printed Output" background="[255,255,255]" bold="false" executable="false" family="Courier New" foreground="[0,0,255]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Heading 2" background="[255,255,255]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="16" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Maple Output" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="2D Inert Output" background="[255,255,255]" bold="false" executable="true" family="Times New Roman" foreground="[144,144,144]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Heading 3" background="[255,255,255]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="true" opaque="false" readonly="false" size="14" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Diagnostic" background="[255,255,255]" bold="false" executable="false" family="Courier New" foreground="[40,120,40]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Ordered List 1" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Maple Input" background="[255,255,255]" bold="true" executable="true" family="Courier New" foreground="[120,0,14]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Text Output" background="[255,255,255]" bold="false" executable="false" family="Courier New" foreground="[0,0,255]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Ordered List 2" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Ordered List 3" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Ordered List 4" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Ordered List 5" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Annotation Title" background="[255,255,255]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="18" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Header and Footer" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="10" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="HyperlinkError" background="[255,255,255]" bold="false" executable="false" family="Courier New" foreground="[255,0,255]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="true" placeholder="false"/>
<Font name="Atomic Variable" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[175,0,175]" italic="true" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="HyperlinkWarning" background="[255,255,255]" bold="false" executable="false" family="Courier New" foreground="[0,0,255]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="true" placeholder="false"/>
<Font name="Dictionary Hyperlink" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[147,0,15]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="true" placeholder="false"/>
<Font name="2D Math" background="[255,255,255]" bold="false" executable="true" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="16" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Bullet Item" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Maple Plot" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Annotation Text" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="List Item" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Dash Item" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="2D Input" background="[255,255,255]" bold="false" executable="true" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Error" background="[255,255,255]" bold="false" executable="false" family="Courier New" foreground="[255,0,255]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Title" background="[255,255,255]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="18" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Text" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Normal" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Caption Reference" background="[255,255,255]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Code" background="[255,255,255]" bold="false" executable="false" family="Courier New" foreground="[255,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Maple Input Placeholder" background="[255,255,255]" bold="true" executable="true" family="Courier New" foreground="[200,0,200]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="true"/>
<Font name="Equation Label" background="[255,255,255]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Author" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Font name="Hyperlink" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,128,128]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="true" placeholder="false"/>
<Font name="Caption Text" background="[255,255,255]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false" placeholder="false"/>
<Layout name="Heading 1" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="8" spacebelow="4" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Warning" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Heading 4" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Line Printed Output" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="any" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Heading 2" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="8" spacebelow="2" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Maple Output" alignment="centred" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.3" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Heading 3" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Diagnostic" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="any" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Ordered List 1" alignment="left" bullet="numeric" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="-1" bulletsuffix="."/>
<Layout name="Text Output" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="newline" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Ordered List 2" alignment="left" bullet="alphabetic" firstindent="0" leftmargin="36" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="-1" bulletsuffix="."/>
<Layout name="Ordered List 3" alignment="left" bullet="roman" firstindent="0" leftmargin="72" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="-1" bulletsuffix="."/>
<Layout name="Ordered List 4" alignment="left" bullet="ALPHABETIC" firstindent="0" leftmargin="108" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="-1" bulletsuffix="."/>
<Layout name="Ordered List 5" alignment="left" bullet="ROMAN" firstindent="0" leftmargin="144" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="-1" bulletsuffix="."/>
<Layout name="Annotation Title" alignment="centred" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="12" spacebelow="12" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="HyperlinkError" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="HyperlinkWarning" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Bullet Item" alignment="left" bullet="dot" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Maple Plot" alignment="centred" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="List Item" alignment="left" bullet="indent" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Dash Item" alignment="left" bullet="dash" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Error" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Title" alignment="centred" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="12" spacebelow="12" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Normal" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Layout name="Author" alignment="centred" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="8" spacebelow="8" linebreak="space" pagebreak-before="false" initial="0" bulletsuffix=""/>
<Pencil-style name="Pencil 1" pen-color="[0,0,0]" pen-height="1.0" pen-width="1.0" pen-opacity="1.0"/>
<Pencil-style name="Pencil 2" pen-color="[0,0,255]" pen-height="1.0" pen-width="1.0" pen-opacity="1.0"/>
<Pencil-style name="Pencil 3" pen-color="[0,0,0]" pen-height="3.0" pen-width="3.0" pen-opacity="1.0"/>
<Pencil-style name="Pencil 4" pen-color="[0,0,255]" pen-height="3.0" pen-width="3.0" pen-opacity="1.0"/>
<Pencil-style name="Pencil 5" pen-color="[255,0,0]" pen-height="5.0" pen-width="5.0" pen-opacity="1.0"/>
<Highlighter-style name="Highlighter 5" pen-color="[255,255,0]" pen-height="48.0" pen-width="48.0" pen-opacity="0.8"/>
<Highlighter-style name="Highlighter 3" pen-color="[51,255,0]" pen-height="24.0" pen-width="24.0" pen-opacity="0.8"/>
<Highlighter-style name="Highlighter 4" pen-color="[0,255,255]" pen-height="32.0" pen-width="32.0" pen-opacity="0.8"/>
<Highlighter-style name="Highlighter 1" pen-color="[255,153,255]" pen-height="12.0" pen-width="8.0" pen-opacity="0.8"/>
<Highlighter-style name="Highlighter 2" pen-color="[255,204,0]" pen-height="14.0" pen-width="14.0" pen-opacity="0.8"/>
</Styles>
<Startup-Code startupcode=""/>
<Task-table>
    <Task-category name="&lt;default&gt;"/>
</Task-table>
<Task/><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L1" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Title" layout="Title"><Font size="36" style="Text" bold="true">Solving the World's Hardest Sudoku</Font><Font size="16" style="Text" bold="true">
Curtis Bright</Font><Font mathvariant="normal" mathbackground="[255,255,255]" size="16" mathsize="16" fontfamily="Times New Roman" style="Text" mathcolor="[0,0,0]">, Maplesoft</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L3541" drawlabel="true" applyint="true" applyrational="true" applyexponent="false"><Text-field opaque="false" subscript="false" underline="false" superscript="false" bold="false" foreground="[0,0,0]" italic="false" executable="false" selection-placeholder="false" size="12" readonly="false" background="[255,255,255]" placeholder="false" family="Times New Roman" spaceabove="0" linebreak="space" rightmargin="0" linespacing="0.0" initial="0" firstindent="0" leftmargin="0" bulletsuffix="" alignment="centred" bullet="none" spacebelow="0" pagebreak-before="false"><Image height="400" width="400" zoomable="false" labelreference="L3539" drawcaption="false" captionalignment="0" captionposition="1">TUZOV3RLVWI8b2I8Uj1NRExDZE5GWkpsOj5bPEo6eGpoQXRHQz9xUkxDVEpjRFhvWHV1eGxdZXJTdEBHQk5hZFdfcmZxRkdzbnI8S1xcTW92RXVyXFxKdUBVTGVyQElVclVQVXRWWnhRO0xQU3hVRnRNQk1yQnRTcVVTZEVqSFlxVWxQdGBxSWFNcXVwVD1YbXlSY2RuaFxcbmhddTxkbk48cE5QVEQ8VURFT1pFT19gTGo6Tl9leXZJeW1xTmNjZmxjcGl2QXlLYl9xWWNjZmxxVGo7VVNzQnh1WHF1WFl3ZVlHaUhvVVhLaXZDYlZXdlh5aW95aXZlWHVVWXVxeXhxZWVBd19JZkVZREJBWXNReHlrYnZZQkU7VTpRQlA7aG5bQ1I9ckx3WVpFQkU7VTpiOmdCZjtWO1NTPUFiP1tHc3lCUDtoOlpaO19AOko7OlU6eFFYPXB4dXl0TFk9SHhReVdHVEpQPHBeeVluPVZnbVRtcWxRcW89SXRMQVBaRUpFTmk+Vm9XWG9nZ3NRV11HVlpQWl4+Zk9hcWRIdk5nY0pWWj9RdGo+RlFqeEFydDx0bl1Qd1lXdWFVPUFqP1xcT3M7PFY/XFxzQ1RPVFBvSWFvW0VKRTxVbF9iWmdtVW9oSWZ2RFdyOmhaZj5mb2FbUFdoT2hhWFZfR1Y6dnFxP3B4UGZPdnFLVmM9QWo/WkJuZD9pdGNoYGZAZGxgYEY+ZTpRWlB3aVpHaUQ/W2Y+ZjtaPG48O1ZvZUNQZ2VoQXI8a0Rqb0dhZUNFWWk+P3I8a0RqXFxLUnVZSGFRYFxceGdlSzpRSlBgeUloS2ZYVD1kb3JoV1JNTUBcXD9nUGpgUEY8VTpRbHk9VjtUO0VKakA6REpFVXI6aFpsPT5SZzpGZ1I6OkY6RElVcjpyQTpFV1I7UEVteWl0SmZYcXZlVFhkWXBUbV9RUXRFWWJhd1F4VVBpV3hQdVd5eVZ1UllpdXlhcVF4T3lJdW15TUZsdGFtcWR0V1NZd2VZV2hYbml0bEVReD5MUFhteWhxeXl4dmVQeGx5TVl0TW1lTXdJd2NJb3ZEakZ4bGl2ckp4aU1PYk1PYk1bZT9lVG5aZmpZPFU6UTpCajpqO2hKZjpFOk49Ojo7QFBEOlpPcHRqeHV5cGdkZ2BZZ2dAeFplQGVpTndhQXBSd1xcOlFaUEJHU0lJZ1RMS1VrPVZPY3JBWXN3SWdtPVVmR2I/W0daRW9pRXFEYE5lbEtmcHZKUXdgZFZWaEpmRGlmWGdoP2VfaXRpeHV1eGNwVm9zX3BSR1xcWmd0QHdkcXlfWWZya0ZmO1hqZj5mQ01RXXVqWGpRZVhWcEtZbHdHVHdNXFxvPXhUb0lyTmVTa1B4XVFKUj1yPGZbZUdvPUFcXGU/bEtudHg/YE9uWk0+cDpoOl5zQlZqQXlkW0FmT1dzZ2l2bj9wa1B4WGdjSUZqP14/TUVwaXN0WVlWcXNAP1hqb3NmO2lpRXQ8a0RqVFM9cXFTVFU/VWxPaU9SbW1MTEpFPFVUbHRdYW9qREtmaHdmPHBybHVQaHZjRE5qQGpfTmlUd2hJeGU9UWdoTmVzT2NCam5cXE9cXEVRZVxcV0ZobDpsVD1sblRBc0U8VTpROnFjW01XSGNmXFx1Rj9HQ1VRRUY/aDpnQmZseElRVk9Bc2RoUWdcXEtWXXJESHVjcVVnUFZ3eVZQaEBqT1RvPXhwQ1RWOlFXdVV4c0xXcWxMamBGbHVqWG5nYUtrWG5lQFNqcHNmbVdqeEtFPFU6c3lbQ25PVnk/RGVjdnVBaFRXQmc/c3FjWDpnRnlBckxBaFtodENFSkVtSTxCbXk7Z0JmO1Y7PGBSOkRXUnJMd0FAOm86TWBuXjtEc3k8cDpoWjpdO0JQX1FQOnlTPVN3bXNVR3FWbXdocXdoVnVSWW1HUWd2Q1tWdl95V2l5eXVzUWV2X3lJdltJXlFJdFl4bVlYc01CU2xxdnlrW3R5O0FWV2l2ZVB4Yml2Z1Rzb114bEF0U3lPeWBvVWFZb1hxeUlxSHBxdXh5c3VPWW15bXh2WWFsSmFsSmE8UE1QcGo7akliOmdKOkNSQmpfQDpKOzpVOjpKalpMPTp2XFxEbmRteXhQWGx5b19YUlY7VT9FaFhddW5rWXBNWWw9VmdtVG1hZF5JQkU7VTpRRUBbZ0l3ZHVZVHFtWWtvR0RHYzpndFRPcmpdaDpnSGM9aGBZZ0dHR1t1Z1plRGdbVWdVd3hpdl07dGZXYz5Td2ZtQj1VREJbZ2NpZ1tlRTxbRHh5eEc7VVs/Vk9VVDtpSUlleGNJVnNLc3RvWGpPV01FclRtdWRbcjxjcjxrdE5BckQ9dkQ7VTs/Vk9hV1RRWG9NVlJpRHI/ZW9FYlplRWxxdE5HZ2xdR2ZzYjpRZVA7VUNdVTtTR1hbZ0BRY09leHM9dmY/eERvZUxrUmBDRFJVVDxTd2p5VmdbWF9BQlJlSUc/aGBTQ1Bdd1ltU1plU0JbZz5Jdk87aHRLVT1RZ2lXckFnSWVbaVA7aGRnRmY/dGJLQmVNSFplRklzZzpnRG1hZGpHaTtTR2tVWD1pVDpnVFVtYklzY1xcO2hgT0JQdURYRUJlV3J3PVVNYUJlb2lBSUZgPWZJW2dDP2JPSWNRPXJEZ3VjcXU6VWdWX0VoeXl3Y2dvW2dUb1RrR0g+a3RuO3JkcXJlO1ZvVXhoQ1ZvP0V5ZXlVUUVIRVdPY2lAT0NmR2c6Z2hJVVNUd1Q6UXdiSUdbZVdRVXJuaEx3SFROPFVNYEplZHlzQU5qUG46V21EbndBVmRveHNUTmtHT3ZXT3I+YXk7VmdUPmZvX2BbXlpQd3BJR1s9eXFtSHZ0cXVfXnBrX1xcUndmOlFjd1laQV5vQmhgZlh0XmdqeUh5dkduWmdpcWlqWz5yPG5kWVdgPD9mP29fdHhgcW9gPnZzPnZvXFxpZTw/ZjtWZ2RoW3VgeGFgaktpdlV2Yl95XVI/Uj5qX0RqVFN4c2paRUJqP1puXjt2STo8cjxsPFF0ajtec106TGpWO0pUWnlJcjpRZERHb1ZnWmZmbk5peDxoZkRPZkRPZkRvX3lZbkR5YWpASmBpUHBqO0pzQ1JCal9QakBaeFVjPUVqPzpRSlpFOlp5U1RrOk46PEJVOmJARzp5SWs9aERvdkljZlFRV2tvR0Q7bmQ9cHRseV9AWVpFSmV4WWpwdEVYTVpFSkVSV11SPVFVQTtVOlFldjtVbWl0QGFkSnBSTkFwXFxwUFtcXE93TXBAaFZHVG88XU9mXVg/XFxPWmVLO2x0W01Scmd2PT5lOlFjWlFbUj9yZGldZlBzZVh5VGFzak5cXGk+ZldPYVJHY1ZHWkU+ZXd3YGZoaTtWZ0VwXFxqcG4/bnRgZ2BJWGV1UFpQYltNRVBReT4/SGRdZT9bZ0VvQmVDWHJlQmY7Vm9ZdWpPdTxrVG9rZWR3WXJVaFJVQmVNR1plPmdCZl9JR1NnWF9FaHVyUmVCam9mOmtUUWtNUDxwbEBqT2VLbFBycFBWO1R3XFxFcmRhcmU8VjtCWmVLZnBXdlA6VUJnR1Zva3RRWWVZU0JlTUJaZXdRWXVNYWk8a0RqYHVqcHI8VHlZVW1IbW8+WUplUXE7UVN5bVFCXFxPWmVLS0FwXFxhdXhwSmlRTEhdSmZwa2BcXGo6UUpQQUpHVFdTWVFUVHBTaU1SdUxIbFRcXEFKRTxVOj9jPXFreVBcXGU+aGNRW1J3XFxIbmRRV2A8P2Y7VmM9VUdjaE1pSXdfdlk7PTtueTtFOl5Wa2RAalk+aj9CUj1yTGZaZkZZWmw9UUpaRUduWUpFOz9ib2NFam9XbWlUc114U2FXUFd3Yml2W1doWW1ZU3VYc1FXcXV5bWVFd3VYeVl4WG1pdnlWSXlZajtVaUl5ZF9pX3VjSXdjc29rY1dEcllpdXl5c3ZlVFhteWVZd2VtZ113R1FXc2xhQmxrVXhfeUlHRnlxZj5vZj5vZj5OZT1RdGo+Rjo6bjxjOzo6TEg6TD1ESkVVQkRpZmY7WjplPzxyTGN0Q0JlQ3dRVXZdQ3JUYWdgeUhhU0dyYUU8VXhZXURlaXJHSXlUXWdFT1J4SWI/VFY+VHc6aXRaQFZPcWtEXFxPWkU6P0Nya2I9U2dvPWJvS0Jqb3dZbUleeUVSPXJUQ0ZSdVJdYWU7QXJkX2lER0ledUNzeWdKU1VmZ3ZZO1U6bFJqcHFGVXNAVEplQVheSXlkVWxZXFxvXFxwc089c149VHhJaj9WYjtocEFXZnhQZUdmcWJxZXNnYGloc0ZWXmtRY0l5aVdYX3N5WlBiS0tiT0VQbTx5TU1ycGlKZkBNblBMbXlVdl1xVnlNUHFvRDxWO1RbQHlaUGdtZUh2cWhgbnBhW15rXFxWX2t2eUNYcmVGeUFKd1RqT2F2ZD1YalBPaVBXcmRyaW1vQkVzeU15alFTeElqP2ZxPGh4T3huVlZdQXdzRl9cXD12clJHX3N5b3VnXnlBUmdIdDtoSEV2bmtDak9WSVVGdHN5P1VYdmVGeXJSQXJ0U2l2XURfaXI/U2JPaXJ2PVR4SWI/dHRHbFRFcU5mQHV3SFVrQVZneXRVWVRgWWpseTtvZ3ZdYm9NVztneV5RU3Z1aVplZnlzRU53WVpFQmU9c1FVWGxjZ1tlZV1VaHF5WENTaVc9ckx3cTxWZ0FWb293d2Jfc2B3eF4/cFxcb2VBSWx5P2Y7Yko7VWE7dERnWWc/SFBbZ153eEFjdlk7VTpRcz9rVExFeUBJPEQ6Oz4/SnhXQ1pQQlpFQkU7VVRrOk5UOlNrOmJAOlpQcEpRSnN5cXY9cFhZaFNhZ3BBeGpBTFpDQmlzYXlhc1Fndl95cXdocV9RYXRRaHNgX0k/Xl1pVk54WV5bUGlneFBfSXBlWFFwVndiaXZbV2R2UWhoUXhPcXd4eXZ0S3locXlhaWl2RXlJcWV5VVQ8VVQ8VTxVV1JNRUBbPzo6Tj06Yl5GWkVidlk6WlRaO1ZjPV1zZV86PGBFQmpfSGZRUzpRdXlReGxdc0lzRz1TdzxVeFlleWxheFlRaXlFeTpOcT4+cEh2YU52W2ZIczpodD5Rb0BwZEs/WkU+ZV1uWmVQdEQ+ZU1HWmVAYUdpZF5BYUVCam9iO1NXbU9lWWNyTztVTT9CZU94ZEVoWGlZbEl4bHVFdztzPGtEajxKUFVWXmVKZkh3OmhUTlV2ZWhPSHVVeFxcVWZIaj9cXG9rUWpvdFVnTU92QGpvRHRhYGo/SVZCaFY+aEpmSHA8aHBvUG9zTHU8bHRORHJkTE9ocHBdWU9lP2pvTnY/d2haZ2NVXm90UXl1X3VIcVpaR1pFPkVEbHlReVJRd2JlVEU8VTpRWlpna29nW2VGZlA/W2Y+ZjtqW1h4WWRxaHFLZjxWO1RbQHZaZW5oYVdaakBKZnhPeHlNWHlqUF1dXl9aRzo8ZklveWV4Xj1YeVN5ZUt3aVV3ZnloeVc+RWJ2SXl5U3hoQ1Y+WWI8PVY7U2s6aHRpbXlJcHBtXFx0QHVUcGhgUD5wOmhgeGB5UXZleUBcXGVeeXVoZjpoWmZIdjtRY2c+ZkN5QTpaPG5sQFxcbG1ASmxDalRbOmhOQnlBaltrdm88O1Y7PHBuOjp3QUBqb0RMamBsTE1PUUVKRUVPb2VxWkVtTEBtTEBtTEBzeW1vdlk6am46REpFOj1yPDxmUHBKTlg8QDxmUDpgQDpaOzpnPkRpZkhscV5neVlka0lseWBcXEleX1pnYmB5aVlgcU5geT95dnlIaW5Bd01ib1tHUmVUVUFaQFZzeXFmb3Zhb2luQUZ2U15rRHlpRUl0XXBDa3Q6P1Zva3lCQUJFO1U9Y3Z5WXNacUZ4Y2JLQ3lpdXZkVW1lPmZHQFxcZnhvV1daUGpeeXFEcFU/WFJuQVJ5XFxReWlwXnl0ak1vSD1OSl1PWj9aZlhseUd2OmhaZkhebHlpOlZuSz5xREhsamBdQHh2eUFcXHhZbj1mcHdvW2ZIeDpocHdZZkxGdWE+ZjtWX2h2eUN4W3M/am9mY2pwWz12ZVpzVEtIeVl5W19UU2hrX0VrSmlwXXBPUEFwZEBzWVBtYFBKZV1rSUVLO3JaR3l5U2hacUU9b1RBeVNDU3JJQUJSPXI8SGs8aFBGWVQ8cXBtQWtVVHY7VEtSPXJUcEpSZWxKZHBbdFNpeVNDdHluTXFnUEpSPXI8bHRObHRqcGtAXFxQPWlRX1xcUXNoalxcbFVGPVY7VFtgQFpQd2BJRnd2Zl4+SjpRd2t0eW9pUW9EUUA9VTpRSlByREdlTGdFRlFFbGVDRXFTcT1WO1NrXFxBc0JtWUx1dldNUlpFSkVOeUh5eWN5dm5XYmdZcmR3aUY/d1VFWmxcXHdZckJ3XmxuaWtJeXluXWJnYmhncEFudDpBZl9wXFxqQGpfOjxyPGY7XlY6PmY7Vjs7aG5bW0U7Wjw6cDo6Wlo7X0B2ajtWd2h2ZU94Ylloc2BHcUhwZVhOYXVpdlFoaFV4b3B3eHl2dEt5aHF5YWlpdkV5aXBheUFWam9JbWlQc1VveHRReVRYd2JZc19RcHZGakZ4bHlYcXl5d3NRb3ZgeUF5ckFhZUF3aXRPaWR2Y1pWVmpxZE5uZE5uZD5wal9IVjpTeD5wOkxqWjxKVDpWO0o6W0VXUkZZWlpzPFpuOjpibm9iV2tZXW9JZ3lyPFl2OlFHeGtVaHlXSG10XFxlVU47clRvQ1JVeVJrQ3hZVG9BcnRfRWpvSGVYdFRdUj5xTkxcXG9vUXZAPFU6UW94UVc8VFs8SHFUcXR2Z3BTQmVnWDpnQmZHdzpndFJTdj1TQ1J1dXRlVD1JZ0RzU1o/VUs7Vk9jaENDVmNZZG9bZ2NJYm9peElvRmo/Ym9pc1lpaF0/Y25nWVh5QlJ1YkNDdndZc0E7aGBvQlB5ZE9ZVFpFQmVddFplVFhldVFxVkBHZHJFQmVRVDtRdUhndl1TVEFbZ0NtZ1tlVFtDZ3hTRVplQ2VnWTtTV0VvRGpvRjprdFtjVjpRQlBNc2xXWWJzVEs9Vm9vSVtbY1RzVjtTd0xXeElbR1plcmhbRj5XVk9TQlBlVztTZ1RzU095SXZHVWZHYj9CZWF5ZHdWXm1XdE91Y3FVd0NJVnFja09DWkU6UVdsZVhkZUtiTVh0VEplUE1eZWpnZXI8bExqVndESHJEeXlOQFxcUj9Sbl89Xm9waGNSZ3NJSGo/Xj8+Z3B5bGN3bnVXZjtoeWloY2F2ZFxcSWo/Xj9obHlpVTxRdlZxcUBmXj5uPDtWb2dndXdWdHFoQG9kd1dma1NlV0liP1tvdFBYanBTR1xccFxccXBbZXJpTHFZdFlfbFRaUXRPPHA6aFpNT1plWHRAaGZ2eV1FXl9zeVpQXFxST3hJXl9aR1pFQmpfQHR5OlFkOlE6c3E/PnI8SlQ+RVJUOkJaRUJFVTpiQFJseWVAa3RhbWlUZ3NgdVdpdVdzb2N4X01QPj54WHF5eXd0VU94bHlBeGpBbGVBd0l5c0lpdkNcXEZuSklqdFhzUWV2S1lzVW1sZUF3X0lubXhVeEVVcUh5ZHVYeVlYV2RZcXV5bXFVeGB5YXVzeUhPW0hfTVtlY0BqWT5qP0JSOmZuWzs6ZjpKRzo6PlJSYzo6V1NBU2dzWVhrSWR5W1lFW0daZWZheUljeXZRR2JvZXlaZUV5UVN2TVJWPWI/W2c+YXlRcXlsTUJFO1V5YXNPcWhgWWdHO2g6Z0heO1VHR2J4O2g6YFM8TU9YUG9JUVJdVEpmPFZfXFx2eUhxaERKZjxWb3hSXkhRVFBRRlRxPFRQPVxcX0Rwc3lJXFxRP3I8bnR5eF9qb3d5dltWaFxcPFZbUkdsc3lvTHZwbEB3SF5vUklcXFA+cDpoYD4+ZW95YUpwbUxOWmVeZ0dWb3h0QWdiQDtVOlFjQnlZbV1JSVtHWmViZl9FXl9nXTtCRTtVO0l5eWtVeD1CUDtoSHF0U2djR2had1Zqb2lsYT5mO0I9VWd2WVRxd3lxZ0hmO1ZvSUNQSUdWP2I/W2diaVJKVXVUO2JPWUZSdXVmd1I+XVJKO1VNX1lEPUVzV2c7Oz1keFJBcFRhVGpBTEZQd21AdnFVWDpoWjpRWlB3bUdWYU1IbWppQDtVOlF4Z2VDOlF3cUdWYUdzRHNZbUlFUj1yPE5dXFxUbXVWPV1kTz1yPE5aUHBKUWVSO1VseTs8YEVaUEJaRT9sSTpFOk49OmpfSEZTU3hUQ1FKc18/aFo6UVRieVlzOlNTY2NmbGVUOjtVeXNZeGFYeV9kTEVpZF9GYjtCZmNmTk9FW0VCRUVHP1tHX2RKZmRuTjxwTl48WmNIb095eTt2ZFhwbElXaXJwXlhEOjtCOk1US1dES1dnSjtlWjE6XCJce1x9<Drawing-Root>LSUrQU5OT1RBVElPTkc2Jy0lKUJPVU5EU19YRzYjJCIjNSEiIi0lKUJPVU5EU19ZRzYjJCIiIUYqLSUtQk9VTkRTX1dJRFRIRzYjJCIlK1NGKi0lLkJPVU5EU19IRUlHSFRHRjItJSlDSElMRFJFTkc2Ig==</Drawing-Root></Image></Text-field>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L19" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" size="16" layout="Normal" alignment="centred"></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L23" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">Sudoku is a popular puzzle that appears in many puzzle books and newspapers.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L10" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">Given a 9 by 9 grid whose squares are either blank or contain a number between 1 and 9, the objective is to fill in the blank squares in such a way so that each row and column contains exactly one digit between 1 and 9.  Additionally, each of the nine 3 by 3 subgrids which compose the grid (called blocks) must also contain exactly one digit between 1 and 9.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L12" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">The mathematician Arto Inkala published the &quot;</Font><Hyperlink linktarget="https://www.telegraph.co.uk/news/science/science-news/9359579/Worlds-hardest-sudoku-can-you-crack-it.html" hyperlink="true"><Font size="16" style="Hyperlink">world's hardest Sudoku</Font></Hyperlink><Font size="16">&quot; (shown above).  The puzzle has been estimated to have a difficulty rating of 11 stars, whereas the most challenging Sudoku puzzles that are usually published are given a difficulty of 5 stars.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L26" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">Using Maple's built-in efficient SAT solver we can quickly solve this puzzle without any knowledge of Sudoku solving techniques.  A SAT solver takes as input a formula in Boolean logic and returns an assignment to the variables that makes the formula true (if one exists). See the </Font><Hyperlink linktarget="Help:Logic[Satisfy]" hyperlink="true"><Font size="16" style="Hyperlink">Satisfy</Font></Hyperlink><Font size="16"> command for more information.</Font></Text-field>
</Input>
</Group></Presentation-Block>
<Section collapsed="true" isCollapsible="true" drawButton="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title><Text-field style="Heading 1" layout="Heading 1">Setting up the problem</Text-field></Title><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L8" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">We'll use the Boolean variables </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2JlEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYnLUYjNiotRiw2JlEiaUYnRi9GMkY1LUkjbW9HRiQ2LlEiLEYnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JlEiakYnRi9GMkY1RkAtRiw2JlEia0YnRi9GMkY1LyUlc2l6ZUdRIzEyRidGMkZERjJGRC8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJ0ZqbkYyRkQ=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2JlEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYnLUYjNiotRiw2JlEiaUYnRi9GMkY1LUkjbW9HRiQ2LlEiLEYnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JlEiakYnRi9GMkY1RkAtRiw2JlEia0YnRi9GMkY1LyUlc2l6ZUdRIzEyRidGMkZERjJGRC8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJ0ZqbkYyRkQ=</Equation><Font size="16"> for </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYuLUkjbW5HRiQ2JVEiMUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYnLUkjbW9HRiQ2LlEmJmxlcTtGJ0YvRjIvJSZmZW5jZUdGMS8lKnNlcGFyYXRvckdGMS8lKXN0cmV0Y2h5R0YxLyUqc3ltbWV0cmljR0YxLyUobGFyZ2VvcEdGMS8lLm1vdmFibGVsaW1pdHNHRjEvJSdhY2NlbnRHRjEvJSdsc3BhY2VHUSwwLjI3Nzc3NzhlbUYnLyUncnNwYWNlR0ZJLUkjbWlHRiQ2JlEiaUYnLyUnaXRhbGljR1EldHJ1ZUYnRi8vRjNRJ2l0YWxpY0YnLUY2Ni5RIixGJ0YvRjJGOS9GPEZSRj1GP0ZBRkNGRS9GSFEmMC4wZW1GJy9GS1EsMC4zMzMzMzMzZW1GJy1GTTYmUSJqRidGUEYvRlNGVS1GTTYmUSJrRidGUEYvRlNGNS1GLDYlUSI5RidGL0YyLyUlc2l6ZUdRIzEyRidGL0Yy">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYuLUkjbW5HRiQ2JVEiMUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYnLUkjbW9HRiQ2LlEmJmxlcTtGJ0YvRjIvJSZmZW5jZUdGMS8lKnNlcGFyYXRvckdGMS8lKXN0cmV0Y2h5R0YxLyUqc3ltbWV0cmljR0YxLyUobGFyZ2VvcEdGMS8lLm1vdmFibGVsaW1pdHNHRjEvJSdhY2NlbnRHRjEvJSdsc3BhY2VHUSwwLjI3Nzc3NzhlbUYnLyUncnNwYWNlR0ZJLUkjbWlHRiQ2JlEiaUYnLyUnaXRhbGljR1EldHJ1ZUYnRi8vRjNRJ2l0YWxpY0YnLUY2Ni5RIixGJ0YvRjJGOS9GPEZSRj1GP0ZBRkNGRS9GSFEmMC4wZW1GJy9GS1EsMC4zMzMzMzMzZW1GJy1GTTYmUSJqRidGUEYvRlNGVS1GTTYmUSJrRidGUEYvRlNGNS1GLDYlUSI5RidGL0YyLyUlc2l6ZUdRIzEyRidGL0Yy</Equation><Font size="16"> to denote that the square </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkobWZlbmNlZEdGJDYlLUYjNigtSSNtaUdGJDYmUSJpRicvJSdpdGFsaWNHUSV0cnVlRicvJStleGVjdXRhYmxlR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSIsRidGNy9GO1Enbm9ybWFsRicvJSZmZW5jZUdGOS8lKnNlcGFyYXRvckdGNi8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GMTYmUSJqRidGNEY3RjovJSVzaXplR1EjMTJGJ0Y3RkFGN0ZBRlpGN0ZB">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkobWZlbmNlZEdGJDYlLUYjNigtSSNtaUdGJDYmUSJpRicvJSdpdGFsaWNHUSV0cnVlRicvJStleGVjdXRhYmxlR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSIsRidGNy9GO1Enbm9ybWFsRicvJSZmZW5jZUdGOS8lKnNlcGFyYXRvckdGNi8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GMTYmUSJqRidGNEY3RjovJSVzaXplR1EjMTJGJ0Y3RkFGN0ZBRlpGN0ZB</Equation><Font size="16"> contains the digit </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=</Equation><Font size="16">.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L27" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">We'll also use a few simple functions to compute the set of variables which appear in the same row, column, or block as the square </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkobWZlbmNlZEdGJDYlLUYjNigtSSNtaUdGJDYmUSJpRicvJSdpdGFsaWNHUSV0cnVlRicvJStleGVjdXRhYmxlR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSIsRidGNy9GO1Enbm9ybWFsRicvJSZmZW5jZUdGOS8lKnNlcGFyYXRvckdGNi8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GMTYmUSJqRidGNEY3RjovJSVzaXplR1EjMTJGJ0Y3RkFGN0ZBRlpGN0ZB">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkobWZlbmNlZEdGJDYlLUYjNigtSSNtaUdGJDYmUSJpRicvJSdpdGFsaWNHUSV0cnVlRicvJStleGVjdXRhYmxlR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSIsRidGNy9GO1Enbm9ybWFsRicvJSZmZW5jZUdGOS8lKnNlcGFyYXRvckdGNi8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GMTYmUSJqRidGNEY3RjovJSVzaXplR1EjMTJGJ0Y3RkFGN0ZBRlpGN0ZB</Equation><Font size="16"> and concern the digit </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=</Equation><Font size="16">:</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block><CodeEditor-ExecGroup view="presentation" hide-input="false" inline-output="false" labelreference="L29" drawlabel="true" applyint="true" applyrational="true" display="code"><EC-CodeEditor id="CodeEditRegion0" expanded="true" visible="true" pixel-width="500" pixel-height="200" code-language="text/maple" autofit="true" wrapping="true" show-border="true" code-line-numbers="true">rowVars := proc(i, j, k)
	return {seq(S[x, j, k], x=1..9)} minus {S[i, j, k]};
end proc:

colVars := proc(i, j, k)
	return {seq(S[i, y, k], y=1..9)} minus {S[i, j, k]};
end proc:

blockVars := proc(i, j, k)
	local block_x, block_y;
	block_x := 3*floor((i-1)/3)+1;
	block_y := 3*floor((j-1)/3)+1;	
	return {seq(seq(S[x, y, k], y=block_y..block_y+2), x=block_x..block_x+2)} minus {S[i, j, k]};
end proc:

allVars := proc(i, j, k)
	return rowVars(i, j, k) union colVars(i, j, k) union blockVars(i, j, k);
end proc:</EC-CodeEditor></CodeEditor-ExecGroup></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L31" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal"><Equation executable="true" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRicvJSVzaXplR1EjMTJGJy8lK2V4ZWN1dGFibGVHUSZmYWxzZUYnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJw==">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2I1EhRic=</Equation><Equation executable="true" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRicvJSVzaXplR1EjMTJGJy8lK2V4ZWN1dGFibGVHUSZmYWxzZUYnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJw==">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2I1EhRic=</Equation></Text-field>
</Input>
</Group></Presentation-Block>
</Section>
<Section collapsed="true" isCollapsible="true" drawButton="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title><Text-field style="Heading 1" layout="Heading 1">Generating the constraints</Text-field></Title><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L32" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">To encode the rules of Sudoku in Boolean logic we want to encode both <Font italic="true">positive</Font> and <Font italic="true">negative</Font> constraints.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L36" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">Positive constraints say that each square must contain some digit.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L37" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">Negative constraints say that each square cannot contain more than one digit and that squares in the same row, column, or block do not contain the same digit twice.</Font></Text-field>
</Input>
</Group></Presentation-Block>
<Section collapsed="true" isCollapsible="true" drawButton="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title><Text-field style="Heading 2" layout="Heading 2">Positive constraints</Text-field></Title><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L50" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">For each square </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkobWZlbmNlZEdGJDYlLUYjNigtSSNtaUdGJDYmUSJpRicvJSdpdGFsaWNHUSV0cnVlRicvJStleGVjdXRhYmxlR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSIsRidGNy9GO1Enbm9ybWFsRicvJSZmZW5jZUdGOS8lKnNlcGFyYXRvckdGNi8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GMTYmUSJqRidGNEY3RjovJSVzaXplR1EjMTJGJ0Y3RkFGN0ZBRlpGN0ZB">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkobWZlbmNlZEdGJDYlLUYjNigtSSNtaUdGJDYmUSJpRicvJSdpdGFsaWNHUSV0cnVlRicvJStleGVjdXRhYmxlR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSIsRidGNy9GO1Enbm9ybWFsRicvJSZmZW5jZUdGOS8lKnNlcGFyYXRvckdGNi8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GMTYmUSJqRidGNEY3RjovJSVzaXplR1EjMTJGJ0Y3RkFGN0ZBRlpGN0ZB</Equation><Font size="16"> at least one digit </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=</Equation><Font size="16"> appears in the square.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L42" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">These clauses have the form </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYxLUkjbWlHRiQ2JlEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYnLUYjNiotRiw2JlEiaUYnRi9GMkY1LUkjbW9HRiQ2LlEiLEYnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JlEiakYnRi9GMkY1RkAtSSNtbkdGJDYlUSIxRidGMkZELyUlc2l6ZUdRIzEyRidGMkZERjJGRC8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GQTYuUSUmb3I7RidGMkZERkYvRklGNC9GS0YxRkxGTkZQRlIvRlVRLDAuMjIyMjIyMmVtRicvRlhGam9GKy1GOTYnLUYjNipGPUZARlpGQC1GaG42JVEiMkYnRjJGREZbb0YyRkRGMkZERl5vRmFvRmRvLUZBNi5RJyZzZG90O0YnRjJGREZGRmdvRkpGTEZORlBGUkZUL0ZYRlZGY3BGY3BGZG9GKy1GOTYnLUYjNipGPUZARlpGQC1GaG42JVEiOUYnRjJGREZbb0YyRkRGMkZERl5vRmFvRltvRjJGRA==">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYxLUkjbWlHRiQ2JlEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYnLUYjNiotRiw2JlEiaUYnRi9GMkY1LUkjbW9HRiQ2LlEiLEYnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JlEiakYnRi9GMkY1RkAtSSNtbkdGJDYlUSIxRidGMkZELyUlc2l6ZUdRIzEyRidGMkZERjJGRC8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GQTYuUSUmb3I7RidGMkZERkYvRklGNC9GS0YxRkxGTkZQRlIvRlVRLDAuMjIyMjIyMmVtRicvRlhGam9GKy1GOTYnLUYjNipGPUZARlpGQC1GaG42JVEiMkYnRjJGREZbb0YyRkRGMkZERl5vRmFvRmRvLUZBNi5RJyZzZG90O0YnRjJGREZGRmdvRkpGTEZORlBGUkZUL0ZYRlZGY3BGY3BGZG9GKy1GOTYnLUYjNipGPUZARlpGQC1GaG42JVEiOUYnRjJGREZbb0YyRkRGMkZERl5vRmFvRltvRjJGRA==</Equation><Font size="16"> for each </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYsLUkjbW5HRiQ2JVEiMUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYnLUkjbW9HRiQ2LlEmJmxlcTtGJ0YvRjIvJSZmZW5jZUdGMS8lKnNlcGFyYXRvckdGMS8lKXN0cmV0Y2h5R0YxLyUqc3ltbWV0cmljR0YxLyUobGFyZ2VvcEdGMS8lLm1vdmFibGVsaW1pdHNHRjEvJSdhY2NlbnRHRjEvJSdsc3BhY2VHUSwwLjI3Nzc3NzhlbUYnLyUncnNwYWNlR0ZJLUkjbWlHRiQ2JlEiaUYnLyUnaXRhbGljR1EldHJ1ZUYnRi8vRjNRJ2l0YWxpY0YnLUY2Ni5RIixGJ0YvRjJGOS9GPEZSRj1GP0ZBRkNGRS9GSFEmMC4wZW1GJy9GS1EsMC4zMzMzMzMzZW1GJy1GTTYmUSJqRidGUEYvRlNGNS1GLDYlUSI5RidGL0YyLyUlc2l6ZUdRIzEyRidGL0Yy">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYsLUkjbW5HRiQ2JVEiMUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYnLUkjbW9HRiQ2LlEmJmxlcTtGJ0YvRjIvJSZmZW5jZUdGMS8lKnNlcGFyYXRvckdGMS8lKXN0cmV0Y2h5R0YxLyUqc3ltbWV0cmljR0YxLyUobGFyZ2VvcEdGMS8lLm1vdmFibGVsaW1pdHNHRjEvJSdhY2NlbnRHRjEvJSdsc3BhY2VHUSwwLjI3Nzc3NzhlbUYnLyUncnNwYWNlR0ZJLUkjbWlHRiQ2JlEiaUYnLyUnaXRhbGljR1EldHJ1ZUYnRi8vRjNRJ2l0YWxpY0YnLUY2Ni5RIixGJ0YvRjJGOS9GPEZSRj1GP0ZBRkNGRS9GSFEmMC4wZW1GJy9GS1EsMC4zMzMzMzMzZW1GJy1GTTYmUSJqRidGUEYvRlNGNS1GLDYlUSI5RidGL0YyLyUlc2l6ZUdRIzEyRidGL0Yy</Equation><Font size="16">.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block><CodeEditor-ExecGroup view="presentation" hide-input="false" inline-output="false" labelreference="L47" drawlabel="true" applyint="true" applyrational="true" display="code"><EC-CodeEditor id="CodeEditRegion1" expanded="true" visible="true" pixel-width="500" pixel-height="200" code-language="text/maple" autofit="true" wrapping="true" show-border="true" code-line-numbers="true">atLeastOneDigit := seq(seq(&amp;or(seq(S[i,j,k], k=1..9)), j=1..9), i=1..9):</EC-CodeEditor></CodeEditor-ExecGroup></Presentation-Block>
</Section>
<Section collapsed="true" isCollapsible="true" drawButton="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title><Text-field style="Heading 2" layout="Heading 2">Negative constraints</Text-field></Title><Presentation-Block>
<Group view="presentation" hide-output="false" inline-output="false" labelreference="L3554" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">For each square </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkobWZlbmNlZEdGJDYlLUYjNigtSSNtaUdGJDYmUSJpRicvJSdpdGFsaWNHUSV0cnVlRicvJStleGVjdXRhYmxlR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSIsRidGNy9GO1Enbm9ybWFsRicvJSZmZW5jZUdGOS8lKnNlcGFyYXRvckdGNi8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GMTYmUSJqRidGNEY3RjovJSVzaXplR1EjMTJGJ0Y3RkFGN0ZBRlpGN0ZB">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkobWZlbmNlZEdGJDYlLUYjNigtSSNtaUdGJDYmUSJpRicvJSdpdGFsaWNHUSV0cnVlRicvJStleGVjdXRhYmxlR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSIsRidGNy9GO1Enbm9ybWFsRicvJSZmZW5jZUdGOS8lKnNlcGFyYXRvckdGNi8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GMTYmUSJqRidGNEY3RjovJSVzaXplR1EjMTJGJ0Y3RkFGN0ZBRlpGN0ZB</Equation><Font size="16"> if the digit </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=</Equation><Font size="16"> appears in that square then no other digit appears in that square.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L3555" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">These clauses have the form </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYsLUkjbWlHRiQ2JlEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYnLUYjNiotRiw2JlEiaUYnRi9GMkY1LUkjbW9HRiQ2LlEiLEYnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JlEiakYnRi9GMkY1RkAtRiw2JlEia0YnRi9GMkY1LyUlc2l6ZUdRIzEyRidGMkZERjJGRC8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GQTYuUSomSW1wbGllcztGJ0YyRkRGRi9GSUY0L0ZLRjFGTEZORlBGUi9GVVEsMC4yNzc3Nzc4ZW1GJy9GWEZpby1GQTYuUSJ+RidGMkZERkZGZm9GSkZMRk5GUEZSRlQvRlhGVi1GQTYuUSYmbm90O0YnRjJGREZGRmZvRkpGTEZORlBGUkZURmpvRistRjk2Jy1GIzYqRj1GQEZaRkAtRiw2JlEibEYnRi9GMkY1RmpuRjJGREYyRkRGXW9GYG9Gam5GMkZE">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYsLUkjbWlHRiQ2JlEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYnLUYjNiotRiw2JlEiaUYnRi9GMkY1LUkjbW9HRiQ2LlEiLEYnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JlEiakYnRi9GMkY1RkAtRiw2JlEia0YnRi9GMkY1LyUlc2l6ZUdRIzEyRidGMkZERjJGRC8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GQTYuUSomSW1wbGllcztGJ0YyRkRGRi9GSUY0L0ZLRjFGTEZORlBGUi9GVVEsMC4yNzc3Nzc4ZW1GJy9GWEZpby1GQTYuUSJ+RidGMkZERkZGZm9GSkZMRk5GUEZSRlQvRlhGVi1GQTYuUSYmbm90O0YnRjJGREZGRmZvRkpGTEZORlBGUkZURmpvRistRjk2Jy1GIzYqRj1GQEZaRkAtRiw2JlEibEYnRi9GMkY1RmpuRjJGREYyRkRGXW9GYG9Gam5GMkZE</Equation><Font size="16"> (alternatively, </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYtLUkjbW9HRiQ2LlEmJm5vdDtGJy8lK2V4ZWN1dGFibGVHUSZmYWxzZUYnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy8lJmZlbmNlR0YxLyUqc2VwYXJhdG9yR0YxLyUpc3RyZXRjaHlHRjEvJSpzeW1tZXRyaWNHRjEvJShsYXJnZW9wR0YxLyUubW92YWJsZWxpbWl0c0dGMS8lJ2FjY2VudEdGMS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHUSwwLjI3Nzc3NzhlbUYnLUkjbWlHRiQ2JlEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnRi8vRjNRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYnLUYjNiotRko2JlEiaUYnRk1GL0ZQLUYsNi5RIixGJ0YvRjJGNS9GOEZPRjlGO0Y9Rj9GQUZDL0ZHUSwwLjMzMzMzMzNlbUYnLUZKNiZRImpGJ0ZNRi9GUEZaLUZKNiZRImtGJ0ZNRi9GUC8lJXNpemVHUSMxMkYnRi9GMkYvRjIvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRictRiw2LlElJm9yO0YnRi9GMkY1RjcvRjpGT0Y7Rj1GP0ZBL0ZEUSwwLjIyMjIyMjJlbUYnL0ZHRl5wLUYsNi5RIn5GJ0YvRjJGNUY3RjlGO0Y9Rj9GQUZDL0ZHRkVGK0ZJLUZTNictRiM2KkZXRlpGam5GWi1GSjYmUSJsRidGTUYvRlBGYG9GL0YyRi9GMkZjb0Zmb0Zgb0YvRjI=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYtLUkjbW9HRiQ2LlEmJm5vdDtGJy8lK2V4ZWN1dGFibGVHUSZmYWxzZUYnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy8lJmZlbmNlR0YxLyUqc2VwYXJhdG9yR0YxLyUpc3RyZXRjaHlHRjEvJSpzeW1tZXRyaWNHRjEvJShsYXJnZW9wR0YxLyUubW92YWJsZWxpbWl0c0dGMS8lJ2FjY2VudEdGMS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHUSwwLjI3Nzc3NzhlbUYnLUkjbWlHRiQ2JlEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnRi8vRjNRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYnLUYjNiotRko2JlEiaUYnRk1GL0ZQLUYsNi5RIixGJ0YvRjJGNS9GOEZPRjlGO0Y9Rj9GQUZDL0ZHUSwwLjMzMzMzMzNlbUYnLUZKNiZRImpGJ0ZNRi9GUEZaLUZKNiZRImtGJ0ZNRi9GUC8lJXNpemVHUSMxMkYnRi9GMkYvRjIvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRictRiw2LlElJm9yO0YnRi9GMkY1RjcvRjpGT0Y7Rj1GP0ZBL0ZEUSwwLjIyMjIyMjJlbUYnL0ZHRl5wLUYsNi5RIn5GJ0YvRjJGNUY3RjlGO0Y9Rj9GQUZDL0ZHRkVGK0ZJLUZTNictRiM2KkZXRlpGam5GWi1GSjYmUSJsRidGTUYvRlBGYG9GL0YyRi9GMkZjb0Zmb0Zgb0YvRjI=</Equation><Font size="16">) where </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEibEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEibEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=</Equation><Font size="16"> is a digit with </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LlElJm5lO0YnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjQvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy8lJ3JzcGFjZUdGTi1GLDYmUSJsRidGL0YyRjUvJSVzaXplR1EjMTJGJ0YyRjw=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LlElJm5lO0YnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjQvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EsMC4yNzc3Nzc4ZW1GJy8lJ3JzcGFjZUdGTi1GLDYmUSJsRidGL0YyRjUvJSVzaXplR1EjMTJGJ0YyRjw=</Equation><Font size="16">.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block><CodeEditor-ExecGroup view="presentation" inline-output="false" labelreference="L3557" drawlabel="true" applyint="true" applyrational="true" display="code"><EC-CodeEditor id="CodeEditRegion7" expanded="true" visible="true" pixel-width="500" pixel-height="200" code-language="text/maple" autofit="true" wrapping="true" show-border="true" code-line-numbers="true">atMostOneDigit := seq(seq(seq(seq(S[i, j, k] &amp;implies &amp;not(S[i, j, l]), l=k+1..9), k=1..9), j=1..9), i=1..9):</EC-CodeEditor></CodeEditor-ExecGroup></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L52" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">For each square </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkobWZlbmNlZEdGJDYlLUYjNigtSSNtaUdGJDYmUSJpRicvJSdpdGFsaWNHUSV0cnVlRicvJStleGVjdXRhYmxlR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSIsRidGNy9GO1Enbm9ybWFsRicvJSZmZW5jZUdGOS8lKnNlcGFyYXRvckdGNi8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GMTYmUSJqRidGNEY3RjovJSVzaXplR1EjMTJGJ0Y3RkFGN0ZBRlpGN0ZB">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkobWZlbmNlZEdGJDYlLUYjNigtSSNtaUdGJDYmUSJpRicvJSdpdGFsaWNHUSV0cnVlRicvJStleGVjdXRhYmxlR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSIsRidGNy9GO1Enbm9ybWFsRicvJSZmZW5jZUdGOS8lKnNlcGFyYXRvckdGNi8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GMTYmUSJqRidGNEY3RjovJSVzaXplR1EjMTJGJ0Y3RkFGN0ZBRlpGN0ZB</Equation><Font size="16"> if the digit </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=</Equation><Font size="16"> appears in that square then the digit </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=</Equation><Font size="16"> does not appear in any other square in the same row, column, or block.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L55" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">These clauses have the form </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYrLUkjbWlHRiQ2JlEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYnLUYjNiotRiw2JlEiaUYnRi9GMkY1LUkjbW9HRiQ2LlEiLEYnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JlEiakYnRi9GMkY1RkAtRiw2JlEia0YnRi9GMkY1LyUlc2l6ZUdRIzEyRidGMkZERjJGRC8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GQTYuUSomSW1wbGllcztGJ0YyRkRGRi9GSUY0L0ZLRjFGTEZORlBGUi9GVVEsMC4yNzc3Nzc4ZW1GJy9GWEZpby1GQTYuUSJ+RidGMkZERkZGZm9GSkZMRk5GUEZSRlQvRlhGVi1GQTYuUSYmbm90O0YnRjJGREZGRmZvRkpGTEZORlBGUkZURmpvLUYsNiZRIkFGJ0YvRjJGNUZqbkYyRkQ=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYrLUkjbWlHRiQ2JlEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYnLUYjNiotRiw2JlEiaUYnRi9GMkY1LUkjbW9HRiQ2LlEiLEYnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JlEiakYnRi9GMkY1RkAtRiw2JlEia0YnRi9GMkY1LyUlc2l6ZUdRIzEyRidGMkZERjJGRC8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GQTYuUSomSW1wbGllcztGJ0YyRkRGRi9GSUY0L0ZLRjFGTEZORlBGUi9GVVEsMC4yNzc3Nzc4ZW1GJy9GWEZpby1GQTYuUSJ+RidGMkZERkZGZm9GSkZMRk5GUEZSRlQvRlhGVi1GQTYuUSYmbm90O0YnRjJGREZGRmZvRkpGTEZORlBGUkZURmpvLUYsNiZRIkFGJ0YvRjJGNUZqbkYyRkQ=</Equation><Font size="16"> where </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=</Equation><Font size="16"> is in the set </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2JlEoYWxsVmFyc0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYlLUYjNiotRiw2JlEiaUYnRi9GMkY1LUkjbW9HRiQ2LlEiLEYnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JlEiakYnRi9GMkY1RkAtRiw2JlEia0YnRi9GMkY1LyUlc2l6ZUdRIzEyRidGMkZERjJGREZqbkYyRkQ=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2JlEoYWxsVmFyc0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYlLUYjNiotRiw2JlEiaUYnRi9GMkY1LUkjbW9HRiQ2LlEiLEYnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JlEiakYnRi9GMkY1RkAtRiw2JlEia0YnRi9GMkY1LyUlc2l6ZUdRIzEyRidGMkZERjJGREZqbkYyRkQ=</Equation><Font size="16">.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block><CodeEditor-ExecGroup view="presentation" hide-input="false" inline-output="false" labelreference="L60" drawlabel="true" applyint="true" applyrational="true" display="code"><EC-CodeEditor id="CodeEditRegion2" expanded="true" visible="true" pixel-width="500" pixel-height="200" code-language="text/maple" autofit="true" wrapping="true" show-border="true" code-line-numbers="true">distinctnessConstraints := seq(seq(seq(seq(S[i, j, k] &amp;implies &amp;not(A), A in allVars(i, j, k)), k=1..9), j=1..9), i=1..9):</EC-CodeEditor></CodeEditor-ExecGroup></Presentation-Block>
</Section>
</Section>
<Section collapsed="true" isCollapsible="true" drawButton="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title><Text-field style="Heading 1" layout="Heading 1">Finding a solution</Text-field></Title><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L1318" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">We also need to specify the 21 numbers which are given to us as a part of the puzzle; if </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkobWZlbmNlZEdGJDYlLUYjNigtSSNtaUdGJDYmUSJpRicvJSdpdGFsaWNHUSV0cnVlRicvJStleGVjdXRhYmxlR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSIsRidGNy9GO1Enbm9ybWFsRicvJSZmZW5jZUdGOS8lKnNlcGFyYXRvckdGNi8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GMTYmUSJqRidGNEY3RjovJSVzaXplR1EjMTJGJ0Y3RkFGN0ZBRlpGN0ZB">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkobWZlbmNlZEdGJDYlLUYjNigtSSNtaUdGJDYmUSJpRicvJSdpdGFsaWNHUSV0cnVlRicvJStleGVjdXRhYmxlR1EmZmFsc2VGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYuUSIsRidGNy9GO1Enbm9ybWFsRicvJSZmZW5jZUdGOS8lKnNlcGFyYXRvckdGNi8lKXN0cmV0Y2h5R0Y5LyUqc3ltbWV0cmljR0Y5LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjkvJSdhY2NlbnRHRjkvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GMTYmUSJqRidGNEY3RjovJSVzaXplR1EjMTJGJ0Y3RkFGN0ZBRlpGN0ZB</Equation><Font size="16"> contains </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JlEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLyUlc2l6ZUdRIzEyRidGMi9GNlEnbm9ybWFsRic=</Equation><Font size="16"> then we need to include the unit clause </Font><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2JlEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYnLUYjNiotRiw2JlEiaUYnRi9GMkY1LUkjbW9HRiQ2LlEiLEYnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JlEiakYnRi9GMkY1RkAtRiw2JlEia0YnRi9GMkY1LyUlc2l6ZUdRIzEyRidGMkZERjJGRC8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJ0ZqbkYyRkQ=">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbWlHRiQ2JlEiU0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUrZXhlY3V0YWJsZUdRJmZhbHNlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYnLUYjNiotRiw2JlEiaUYnRi9GMkY1LUkjbW9HRiQ2LlEiLEYnRjIvRjZRJ25vcm1hbEYnLyUmZmVuY2VHRjQvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGNC8lKnN5bW1ldHJpY0dGNC8lKGxhcmdlb3BHRjQvJS5tb3ZhYmxlbGltaXRzR0Y0LyUnYWNjZW50R0Y0LyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JlEiakYnRi9GMkY1RkAtRiw2JlEia0YnRi9GMkY1LyUlc2l6ZUdRIzEyRidGMkZERjJGRC8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJ0ZqbkYyRkQ=</Equation><Font size="16"> in our SAT instance.  The clauses resulting from the world's hardest Sudoku are as follows:</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block><CodeEditor-ExecGroup view="presentation" hide-input="false" inline-output="false" labelreference="L66" drawlabel="true" applyint="true" applyrational="true" display="code"><EC-CodeEditor id="CodeEditRegion3" expanded="true" visible="true" pixel-width="500" pixel-height="200" code-language="text/maple" autofit="true" wrapping="true" show-border="true" code-line-numbers="true">givenNumbers := {S[1,9,8], S[2,1,9], S[2,6,5], S[2,7,7], S[3,2,8], S[3,3,1], S[3,8,3], S[4,2,5], S[4,4,1], S[4,8,6], S[5,5,4], S[5,7,9], S[6,5,5], S[6,6,7], S[7,1,4], S[7,5,7], S[7,7,2], S[8,2,1], S[8,3,6], S[8,4,3], S[9,3,8]}:</EC-CodeEditor></CodeEditor-ExecGroup></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L85" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal"></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L1290" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">We use the </Font><Hyperlink linktarget="Help:Logic[Satisfy]" hyperlink="true"><Font size="16" style="Hyperlink">Satisfy</Font></Hyperlink><Font size="16"> command from the </Font><Hyperlink linktarget="Help:Logic" hyperlink="true"><Font size="16" style="Hyperlink">Logic</Font></Hyperlink><Font size="16"> package which finds a satisfying assignment of a logical formula if one exists.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L1291" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">We use the </Font><Hyperlink linktarget="Help:CodeTools[Usage]" hyperlink="true"><Font size="16" style="Hyperlink">Usage</Font></Hyperlink><Font size="16"> command from the </Font><Hyperlink linktarget="Help:CodeTools" hyperlink="true"><Font size="16" style="Hyperlink">CodeTools</Font></Hyperlink><Font size="16"> package to measure how quickly the solution is found.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block><CodeEditor-ExecGroup view="presentation" hide-input="false" inline-output="false" labelreference="L1297" drawlabel="true" applyint="true" applyrational="true" display="code"><EC-CodeEditor id="CodeEditRegion4" expanded="true" visible="true" pixel-width="500" pixel-height="200" code-language="text/maple" autofit="true" wrapping="true" show-border="true" code-line-numbers="true">allConstraints := atLeastOneDigit, atMostOneDigit, distinctnessConstraints, givenNumbers[]:
satisfyingAssignment := CodeTools:-Usage(Logic:-Satisfy(&amp;and(allConstraints))):</EC-CodeEditor></CodeEditor-ExecGroup></Presentation-Block>
</Section>
<Section collapsed="true" isCollapsible="true" drawButton="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title><Text-field style="Heading 1" layout="Heading 1">Visualization of the solution</Text-field></Title><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L1307" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">The following functions use commands from the </Font><Hyperlink linktarget="Help:plots" hyperlink="true"><Font size="16" style="Hyperlink">plots</Font></Hyperlink><Font size="16"> and </Font><Hyperlink linktarget="Help:plottools" hyperlink="true"><Font size="16" style="Hyperlink">plottools</Font></Hyperlink><Font size="16"> packages to draw a Sudoku grid and fill in numbers on the grid.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block><CodeEditor-ExecGroup view="presentation" inline-output="false" labelreference="L3732" drawlabel="true" applyint="true" applyrational="true" display="code"><EC-CodeEditor id="CodeEditRegion8" expanded="true" visible="true" pixel-width="500" pixel-height="200" code-language="text/maple" autofit="true" wrapping="true" show-border="true" code-line-numbers="true">with(plots):
with(plottools):

drawSudokuGrid := proc()
	local squares, blocks;
	squares := seq(seq(rectangle([i,j+1], [i+1,j], style=line, thickness=0), j=1..9), i=1..9);
	blocks := seq(seq(rectangle([3*(i-1)+1,3*j+1], [3*i+1,3*(j-1)+1], thickness=2, color=`if`(type(i+j, even), &quot;White&quot;, &quot;LightGray&quot;)), j=1..3), i=1..3);
	return squares, blocks;
end proc:

# Draw the digit k in the square at (i, j) (in bold if given is true)
drawDigit := proc(i, j, k, given)
	textplot([i+0.5, j+0.5, k], font=[Arial, `if`(given, bold, roman), 18]);
end proc:</EC-CodeEditor></CodeEditor-ExecGroup></Presentation-Block><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L1316" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal" bullet="dot"><Font size="16">The following code draws the Sudoku grid with the digits from the solution found by the SAT solver.</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block><CodeEditor-ExecGroup view="presentation" hide-input="false" inline-output="false" labelreference="L1336" drawlabel="true" applyint="true" applyrational="true" display="code"><EC-CodeEditor id="CodeEditRegion6" expanded="true" visible="true" pixel-width="500" pixel-height="200" code-language="text/maple" autofit="true" wrapping="true" show-border="true" code-line-numbers="true">digits := Array(1..9*9):
i := 1:
for eq in satisfyingAssignment do
	if rhs(eq) then
		digits[i] := drawDigit(op(lhs(eq)), lhs(eq) in givenNumbers);
		i := i + 1;
	end if;
end do:

display(drawSudokuGrid(), entries(digits, nolist), scaling=constrained, axes=none);</EC-CodeEditor>
<Output><Text-field style="Maple Plot" layout="Maple Plot"></Text-field>
</Output></CodeEditor-ExecGroup></Presentation-Block>
</Section><Presentation-Block>
<Group view="presentation" inline-output="false" labelreference="L3730" drawlabel="true" applyint="true" applyrational="true" applyexponent="false">
<Input><Text-field style="Text" layout="Normal"><Equation executable="true" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRicvJSVzaXplR1EjMTJGJy8lK2V4ZWN1dGFibGVHUSZmYWxzZUYnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJw==">JSFH</Equation></Text-field>
</Input>
</Group></Presentation-Block>
</Worksheet>