\documentclass{article}
\usepackage{graphicx}
\usepackage[colorlinks=true,urlcolor=blue,linkcolor=blue,citecolor=blue]{hyperref}
\usepackage{fancyhdr}
\usepackage[margin=35mm]{geometry}

\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}

\lhead{\sf Automated Reasoning and Satisfiability}
\rhead{\sf Fall 2022}

\begin{document}

\bigskip

\begin{center}
{\Large Assignment 1}

\medskip

due Monday, September 19, 2022
\end{center}

\medskip

\thispagestyle{fancy}

The homework is due at 6pm on Monday, September 19, 2021. 
Please submit your homework via Gradescope. Note that you can submit pages, code, or both. 
Pages and code are different assignments within Gradescope.
The questions below are mostly encoding questions. No external tools are not allowed to help answering Question 1. 

We prefer answers that consist of a generator that produces
the requested DIMCAS file in a common programming language, such as Python or C(++). 
Encoding tools, such as PySAT, are allowed for Questions 2 and 3. 
Alternatively, you can submit the encoding answers as a \LaTeX document. However, Questions 1(d), 2 (b), 2(c), 3(b), and 3(c) can only
be solved using a generated DIMACS file. 

The maximum number of regular points for this assignment is 50:
the 30 points of Question 1 + either 20 points of Question 2 or 20 points of Question 3 (a) and (b). Additionally,
10 bonus points can be earned in Question 3 (c). 

\subsection*{Question 1 \normalsize (no encoding tools allowed)}

\paragraph*{(a) [10 points]} Given the Boolean variables $x_{1}, \dots, x_{5}$, construct two different encodings 
in conjunctive normal form that express that at most two of them can be true: $x_{1} + \dots + x_{5} \leq 2$.
The first encoding can only use the variables $x_{1}, \dots, x_{5}$, while the second encoding must also use auxiliary variables.

\paragraph*{(b) [10 points]} Let us refer to the above encodings as {\sc AtMostTwoA} (w/o auxiliary variables) 
and {\sc AtMostTwoB} (with auxiliary variables).
Encode the following to formulas into CNF: $y_1 \leftrightarrow $~{\sc AtMostTwoA}$(x_{1}, \dots, x_{5})$ and 
$y_2 \leftrightarrow $~{\sc AtMostTwoB}$(x_{1}, \dots, x_{5})$ using the Tseitin transformation.

\paragraph*{(c) [5 points]} Encode whether there exists an assignment to $x_{1}, \dots, x_{5}$ that falsifies $y_1$ and satisfies $y_2$
by combining $y_1 \leftrightarrow $~{\sc AtMostTwoA}$(x_{1}, \dots, x_{5})$ and 
$y_2 \leftrightarrow $~{\sc AtMostTwoB}$(x_{1}, \dots, x_{5})$.

\paragraph*{(d) [5 points]} Solve the resulting formula using a SAT solver and show the output of the solver. 
(Hint: the formula should be unsatisfiable, so no local search solver can be used.)

\subsection*{Question 2 \normalsize (answer this question or Question 3)}

\paragraph*{(a) [10 points]} Consider a $n \times m$ grid of squares and all possible
rectangles within the grid whose length and width are at least 2. Encode whether
there exists a coloring of the grid using three colors so that no such rectangle has
the same color for its four corners. (Hint: The encoding requires two types of constraints. 
First, each square needs to have at least one color. Second, if four squares form the 
corners of a rectangle, then they cannot have the same color.)


\begin{figure}[ht]
\begin{minipage}{.33\textwidth}
~
\end{minipage}
\begin{minipage}{.33\textwidth}
\large
\begin{verbatim}
0 0 1 1 2 2 0 1 2
2 0 0 1 1 2 2 0 1
1 2 0 0 1 1 2 2 0
0 1 2 0 0 1 1 2 2
2 0 1 2 0 0 1 1 2
2 2 0 1 2 0 0 1 1
1 2 2 0 1 2 0 0 1
1 1 2 2 0 1 2 0 0
0 1 1 2 2 0 1 2 0
\end{verbatim}
\end{minipage}
\end{figure}

\paragraph*{(b) [5 points]} Solve the encoding for a $10 \times 10$ grid using a SAT solver and decode the 
solution into a valid coloring. Show the output of the SAT solver and a valid 3-coloring similar
to the one above of the $9\times9$ grid.

\paragraph*{(c) [5 points]} Solve the encoding for a $9 \times 12$ grid using a SAT solver and decode the 
solution into a valid coloring. Show the output of the SAT solver and a valid 3-coloring similar
to the one above of the $9\times9$ grid.


\subsection*{Question 3 \normalsize (answer this question or Question 2)}

An \emph{almost square} is a $n\times (n+1)$ rectangle. One can cover the almost square $4\times5$ using
the smallest three almost squares: $1 \times 2$, $2 \times 3$, and $3 \times 4$. A solution is shown below. 

\begin{figure}[ht]
\begin{minipage}{.33\textwidth}
~
\end{minipage}
\begin{minipage}{.33\textwidth}
\large
\begin{verbatim}
1 1 3 3 3
2 2 3 3 3
2 2 3 3 3
2 2 3 3 3
\end{verbatim}
\end{minipage}
\end{figure}

\paragraph*{(a) [10 points]} Encode whether the smallest $k$ almost squares can cover an almost square.
A satisfying assignment of the encoding should represent a covering. In case the smallest $k$ almost squares
don't add up to an almost square, the encoding should simply print a formula with only the empty clause. 

\paragraph*{(b) [10 points]} Solve the encoding for the smallest $8$ almost squares, which can cover the almost square $15 \times 16$,
and decode the solution into a valid cover. Show the output of the SAT solver and valid cover similar
to the one above of the $4 \times 5$ grid.

\paragraph*{(c) [Bonus: 10 points]} Construct a compact encoding for the smallest $20$ almost squares, which can cover the almost square $55 \times 56$.
Auxiliary variables are useful to reduce the size of the encoded formula. Bonus points are awarded for reasonably small encodings: 
2 points for less than 3 million clauses; 4 points for less than 2 million clauses; 6 points for less than a million clauses; 
and 8 points for less than half a million clauses. All 10 points are awarded for any encoding for which you can show that
a SAT solver can find a satisfying assignment. Warning: this problem is challenging. 

\end{document}
