First we see how to express the rules of Sudoku in Haskell. Given a total function
s :: Int -> Int -> Int -> Bool
that represents the way a sudoku puzzle is filled in by saying that s i j k == True iff the number k is written in square i, j, where i,j,k are numbers in [1..9].