;http://norvig.com/sudoku.html took 189 secs
;--00 thru 22
(declare-const b00 Int)
(declare-const b01 Int)
(declare-const b02 Int)
(declare-const b10 Int)
(declare-const b11 Int)
(declare-const b12 Int)
(declare-const b20 Int)
(declare-const b21 Int)
(declare-const b22 Int)
;--03 thru 25
(declare-const b03 Int)
(declare-const b04 Int)
(declare-const b05 Int)
(declare-const b13 Int)
(declare-const b14 Int)
(declare-const b15 Int)
(declare-const b23 Int)
(declare-const b24 Int)
(declare-const b25 Int)
;--06 thru 28
(declare-const b06 Int)
(declare-const b07 Int)
(declare-const b08 Int)
(declare-const b16 Int)
(declare-const b17 Int)
(declare-const b18 Int)
(declare-const b26 Int)
(declare-const b27 Int)
(declare-const b28 Int)
;--30 thru 52
(declare-const b30 Int)
(declare-const b31 Int)
(declare-const b32 Int)
(declare-const b40 Int)
(declare-const b41 Int)
(declare-const b42 Int)
(declare-const b50 Int)
(declare-const b51 Int)
(declare-const b52 Int)
;--33 thru 55
(declare-const b33 Int)
(declare-const b34 Int)
(declare-const b35 Int)
(declare-const b43 Int)
(declare-const b44 Int)
(declare-const b45 Int)
(declare-const b53 Int)
(declare-const b54 Int)
(declare-const b55 Int)
;--36 thru 58
(declare-const b36 Int)
(declare-const b37 Int)
(declare-const b38 Int)
(declare-const b46 Int)
(declare-const b47 Int)
(declare-const b48 Int)
(declare-const b56 Int)
(declare-const b57 Int)
(declare-const b58 Int)
;--60 thru 82
(declare-const b60 Int)
(declare-const b61 Int)
(declare-const b62 Int)
(declare-const b70 Int)
(declare-const b71 Int)
(declare-const b72 Int)
(declare-const b80 Int)
(declare-const b81 Int)
(declare-const b82 Int)
;--63 thru 85
(declare-const b63 Int)
(declare-const b64 Int)
(declare-const b65 Int)
(declare-const b73 Int)
(declare-const b74 Int)
(declare-const b75 Int)
(declare-const b83 Int)
(declare-const b84 Int)
(declare-const b85 Int)
;--66 thru 88
(declare-const b66 Int)
(declare-const b67 Int)
(declare-const b68 Int)
(declare-const b76 Int)
(declare-const b77 Int)
(declare-const b78 Int)
(declare-const b86 Int)
(declare-const b87 Int)
(declare-const b88 Int)
;-- assert ranges
;--00 thru 22
(assert (>= b00 1))
(assert (>= b01 1))
(assert (>= b02 1))
(assert (>= b10 1))
(assert (>= b11 1))
(assert (>= b12 1))
(assert (>= b20 1))
(assert (>= b21 1))
(assert (>= b22 1))
;--03 thru 25
(assert (>= b03 1))
(assert (>= b04 1))
(assert (>= b05 1))
(assert (>= b13 1))
(assert (>= b14 1))
(assert (>= b15 1))
(assert (>= b23 1))
(assert (>= b24 1))
(assert (>= b25 1))
;--06 thru 28
(assert (>= b06 1))
(assert (>= b07 1))
(assert (>= b08 1))
(assert (>= b16 1))
(assert (>= b17 1))
(assert (>= b18 1))
(assert (>= b26 1))
(assert (>= b27 1))
(assert (>= b28 1))
;--30 thru 52
(assert (>= b30 1))
(assert (>= b31 1))
(assert (>= b32 1))
(assert (>= b40 1))
(assert (>= b41 1))
(assert (>= b42 1))
(assert (>= b50 1))
(assert (>= b51 1))
(assert (>= b52 1))
;--33 thru 55
(assert (>= b33 1))
(assert (>= b34 1))
(assert (>= b35 1))
(assert (>= b43 1))
(assert (>= b44 1))
(assert (>= b45 1))
(assert (>= b53 1))
(assert (>= b54 1))
(assert (>= b55 1))
;--36 thru 58
(assert (>= b36 1))
(assert (>= b37 1))
(assert (>= b38 1))
(assert (>= b46 1))
(assert (>= b47 1))
(assert (>= b48 1))
(assert (>= b56 1))
(assert (>= b57 1))
(assert (>= b58 1))
;--60 thru 82
(assert (>= b60 1))
(assert (>= b61 1))
(assert (>= b62 1))
(assert (>= b70 1))
(assert (>= b71 1))
(assert (>= b72 1))
(assert (>= b80 1))
(assert (>= b81 1))
(assert (>= b82 1))
;--63 thru 85
(assert (>= b63 1))
(assert (>= b64 1))
(assert (>= b65 1))
(assert (>= b73 1))
(assert (>= b74 1))
(assert (>= b75 1))
(assert (>= b83 1))
(assert (>= b84 1))
(assert (>= b85 1))
;--66 thru 88
(assert (>= b66 1))
(assert (>= b67 1))
(assert (>= b68 1))
(assert (>= b76 1))
(assert (>= b77 1))
(assert (>= b78 1))
(assert (>= b86 1))
(assert (>= b87 1))
(assert (>= b88 1))
;-- assert ranges <= 8
;--00 thru 22
(assert (<= b00 9))
(assert (<= b01 9))
(assert (<= b02 9))
(assert (<= b10 9))
(assert (<= b11 9))
(assert (<= b12 9))
(assert (<= b20 9))
(assert (<= b21 9))
(assert (<= b22 9))
;--03 thru 25
(assert (<= b03 9))
(assert (<= b04 9))
(assert (<= b05 9))
(assert (<= b13 9))
(assert (<= b14 9))
(assert (<= b15 9))
(assert (<= b23 9))
(assert (<= b24 9))
(assert (<= b25 9))
;--06 thru 28
(assert (<= b06 9))
(assert (<= b07 9))
(assert (<= b08 9))
(assert (<= b16 9))
(assert (<= b17 9))
(assert (<= b18 9))
(assert (<= b26 9))
(assert (<= b27 9))
(assert (<= b28 9))
;--30 thru 52
(assert (<= b30 9))
(assert (<= b31 9))
(assert (<= b32 9))
(assert (<= b40 9))
(assert (<= b41 9))
(assert (<= b42 9))
(assert (<= b50 9))
(assert (<= b51 9))
(assert (<= b52 9))
;--33 thru 55
(assert (<= b33 9))
(assert (<= b34 9))
(assert (<= b35 9))
(assert (<= b43 9))
(assert (<= b44 9))
(assert (<= b45 9))
(assert (<= b53 9))
(assert (<= b54 9))
(assert (<= b55 9))
;--36 thru 58
(assert (<= b36 9))
(assert (<= b37 9))
(assert (<= b38 9))
(assert (<= b46 9))
(assert (<= b47 9))
(assert (<= b48 9))
(assert (<= b56 9))
(assert (<= b57 9))
(assert (<= b58 9))
;--60 thru 82
(assert (<= b60 9))
(assert (<= b61 9))
(assert (<= b62 9))
(assert (<= b70 9))
(assert (<= b71 9))
(assert (<= b72 9))
(assert (<= b80 9))
(assert (<= b81 9))
(assert (<= b82 9))
;--63 thru 85
(assert (<= b63 9))
(assert (<= b64 9))
(assert (<= b65 9))
(assert (<= b73 9))
(assert (<= b74 9))
(assert (<= b75 9))
(assert (<= b83 9))
(assert (<= b84 9))
(assert (<= b85 9))
;--66 thru 88
(assert (<= b66 9))
(assert (<= b67 9))
(assert (<= b68 9))
(assert (<= b76 9))
(assert (<= b77 9))
(assert (<= b78 9))
(assert (<= b86 9))
(assert (<= b87 9))
(assert (<= b88 9))
;;; -- no dup in row/col
;-ROW0
(assert (not (= b00 b01)))
(assert (not (= b00 b02)))
(assert (not (= b00 b03)))
(assert (not (= b00 b04)))
(assert (not (= b00 b05)))
(assert (not (= b00 b06)))
(assert (not (= b00 b07)))
(assert (not (= b00 b08)))
;
(assert (not (= b01 b02)))
(assert (not (= b01 b03)))
(assert (not (= b01 b04)))
(assert (not (= b01 b05)))
(assert (not (= b01 b06)))
(assert (not (= b01 b07)))
(assert (not (= b01 b08)))
;
(assert (not (= b02 b03)))
(assert (not (= b02 b04)))
(assert (not (= b02 b05)))
(assert (not (= b02 b06)))
(assert (not (= b02 b07)))
(assert (not (= b02 b08)))
;
(assert (not (= b03 b04)))
(assert (not (= b03 b05)))
(assert (not (= b03 b06)))
(assert (not (= b03 b07)))
(assert (not (= b03 b08)))
;
(assert (not (= b04 b05)))
(assert (not (= b04 b06)))
(assert (not (= b04 b07)))
(assert (not (= b04 b08)))
;
(assert (not (= b05 b06)))
(assert (not (= b05 b07)))
(assert (not (= b05 b08)))
;
(assert (not (= b06 b07)))
(assert (not (= b06 b08)))
;
(assert (not (= b07 b08)))
;-ROW1
(assert (not (= b10 b11)))
(assert (not (= b10 b12)))
(assert (not (= b10 b13)))
(assert (not (= b10 b14)))
(assert (not (= b10 b15)))
(assert (not (= b10 b16)))
(assert (not (= b10 b17)))
(assert (not (= b10 b18)))
;
(assert (not (= b11 b12)))
(assert (not (= b11 b13)))
(assert (not (= b11 b14)))
(assert (not (= b11 b15)))
(assert (not (= b11 b16)))
(assert (not (= b11 b17)))
(assert (not (= b11 b18)))
;
(assert (not (= b12 b13)))
(assert (not (= b12 b14)))
(assert (not (= b12 b15)))
(assert (not (= b12 b16)))
(assert (not (= b12 b17)))
(assert (not (= b12 b18)))
;
(assert (not (= b13 b14)))
(assert (not (= b13 b15)))
(assert (not (= b13 b16)))
(assert (not (= b13 b17)))
(assert (not (= b13 b18)))
;
(assert (not (= b14 b15)))
(assert (not (= b14 b16)))
(assert (not (= b14 b17)))
(assert (not (= b14 b18)))
;
(assert (not (= b15 b16)))
(assert (not (= b15 b17)))
(assert (not (= b15 b18)))
;
(assert (not (= b16 b17)))
(assert (not (= b16 b18)))
;
(assert (not (= b17 b18)))
;-ROW2
(assert (not (= b20 b21)))
(assert (not (= b20 b22)))
(assert (not (= b20 b23)))
(assert (not (= b20 b24)))
(assert (not (= b20 b25)))
(assert (not (= b20 b26)))
(assert (not (= b20 b27)))
(assert (not (= b20 b28)))
;
(assert (not (= b21 b22)))
(assert (not (= b21 b23)))
(assert (not (= b21 b24)))
(assert (not (= b21 b25)))
(assert (not (= b21 b26)))
(assert (not (= b21 b27)))
(assert (not (= b21 b28)))
;
(assert (not (= b22 b23)))
(assert (not (= b22 b24)))
(assert (not (= b22 b25)))
(assert (not (= b22 b26)))
(assert (not (= b22 b27)))
(assert (not (= b22 b28)))
;
(assert (not (= b23 b24)))
(assert (not (= b23 b25)))
(assert (not (= b23 b26)))
(assert (not (= b23 b27)))
(assert (not (= b23 b28)))
;
(assert (not (= b24 b25)))
(assert (not (= b24 b26)))
(assert (not (= b24 b27)))
(assert (not (= b24 b28)))
;
(assert (not (= b25 b26)))
(assert (not (= b25 b27)))
(assert (not (= b25 b28)))
;
(assert (not (= b26 b27)))
(assert (not (= b26 b28)))
;
(assert (not (= b27 b28)))
;-ROW3
(assert (not (= b30 b31)))
(assert (not (= b30 b32)))
(assert (not (= b30 b33)))
(assert (not (= b30 b34)))
(assert (not (= b30 b35)))
(assert (not (= b30 b36)))
(assert (not (= b30 b37)))
(assert (not (= b30 b38)))
;
(assert (not (= b31 b32)))
(assert (not (= b31 b33)))
(assert (not (= b31 b34)))
(assert (not (= b31 b35)))
(assert (not (= b31 b36)))
(assert (not (= b31 b37)))
(assert (not (= b31 b38)))
;
(assert (not (= b32 b33)))
(assert (not (= b32 b34)))
(assert (not (= b32 b35)))
(assert (not (= b32 b36)))
(assert (not (= b32 b37)))
(assert (not (= b32 b38)))
;
(assert (not (= b33 b34)))
(assert (not (= b33 b35)))
(assert (not (= b33 b36)))
(assert (not (= b33 b37)))
(assert (not (= b33 b38)))
;
(assert (not (= b34 b35)))
(assert (not (= b34 b36)))
(assert (not (= b34 b37)))
(assert (not (= b34 b38)))
;
(assert (not (= b35 b36)))
(assert (not (= b35 b37)))
(assert (not (= b35 b38)))
;
(assert (not (= b36 b37)))
(assert (not (= b36 b38)))
;
(assert (not (= b37 b38)))
;-ROW4
(assert (not (= b40 b41)))
(assert (not (= b40 b42)))
(assert (not (= b40 b43)))
(assert (not (= b40 b44)))
(assert (not (= b40 b45)))
(assert (not (= b40 b46)))
(assert (not (= b40 b47)))
(assert (not (= b40 b48)))
;
(assert (not (= b41 b42)))
(assert (not (= b41 b43)))
(assert (not (= b41 b44)))
(assert (not (= b41 b45)))
(assert (not (= b41 b46)))
(assert (not (= b41 b47)))
(assert (not (= b41 b48)))
;
(assert (not (= b42 b43)))
(assert (not (= b42 b44)))
(assert (not (= b42 b45)))
(assert (not (= b42 b46)))
(assert (not (= b42 b47)))
(assert (not (= b42 b48)))
;
(assert (not (= b43 b44)))
(assert (not (= b43 b45)))
(assert (not (= b43 b46)))
(assert (not (= b43 b47)))
(assert (not (= b43 b48)))
;
(assert (not (= b44 b45)))
(assert (not (= b44 b46)))
(assert (not (= b44 b47)))
(assert (not (= b44 b48)))
;
(assert (not (= b45 b46)))
(assert (not (= b45 b47)))
(assert (not (= b45 b48)))
;
(assert (not (= b46 b47)))
(assert (not (= b46 b48)))
;
(assert (not (= b47 b48)))
;-ROW5
(assert (not (= b50 b51)))
(assert (not (= b50 b52)))
(assert (not (= b50 b53)))
(assert (not (= b50 b54)))
(assert (not (= b50 b55)))
(assert (not (= b50 b56)))
(assert (not (= b50 b57)))
(assert (not (= b50 b58)))
;
(assert (not (= b51 b52)))
(assert (not (= b51 b53)))
(assert (not (= b51 b54)))
(assert (not (= b51 b55)))
(assert (not (= b51 b56)))
(assert (not (= b51 b57)))
(assert (not (= b51 b58)))
;
(assert (not (= b52 b53)))
(assert (not (= b52 b54)))
(assert (not (= b52 b55)))
(assert (not (= b52 b56)))
(assert (not (= b52 b57)))
(assert (not (= b52 b58)))
;
(assert (not (= b53 b54)))
(assert (not (= b53 b55)))
(assert (not (= b53 b56)))
(assert (not (= b53 b57)))
(assert (not (= b53 b58)))
;
(assert (not (= b54 b55)))
(assert (not (= b54 b56)))
(assert (not (= b54 b57)))
(assert (not (= b54 b58)))
;
(assert (not (= b55 b56)))
(assert (not (= b55 b57)))
(assert (not (= b55 b58)))
;
(assert (not (= b56 b57)))
(assert (not (= b56 b58)))
;
(assert (not (= b57 b58)))
;-ROW6
(assert (not (= b60 b61)))
(assert (not (= b60 b62)))
(assert (not (= b60 b63)))
(assert (not (= b60 b64)))
(assert (not (= b60 b65)))
(assert (not (= b60 b66)))
(assert (not (= b60 b67)))
(assert (not (= b60 b68)))
;
(assert (not (= b61 b62)))
(assert (not (= b61 b63)))
(assert (not (= b61 b64)))
(assert (not (= b61 b65)))
(assert (not (= b61 b66)))
(assert (not (= b61 b67)))
(assert (not (= b61 b68)))
;
(assert (not (= b62 b63)))
(assert (not (= b62 b64)))
(assert (not (= b62 b65)))
(assert (not (= b62 b66)))
(assert (not (= b62 b67)))
(assert (not (= b62 b68)))
;
(assert (not (= b63 b64)))
(assert (not (= b63 b65)))
(assert (not (= b63 b66)))
(assert (not (= b63 b67)))
(assert (not (= b63 b68)))
;
(assert (not (= b64 b65)))
(assert (not (= b64 b66)))
(assert (not (= b64 b67)))
(assert (not (= b64 b68)))
;
(assert (not (= b65 b66)))
(assert (not (= b65 b67)))
(assert (not (= b65 b68)))
;
(assert (not (= b66 b67)))
(assert (not (= b66 b68)))
;
(assert (not (= b67 b68)))
;-ROW7
(assert (not (= b70 b71)))
(assert (not (= b70 b72)))
(assert (not (= b70 b73)))
(assert (not (= b70 b74)))
(assert (not (= b70 b75)))
(assert (not (= b70 b76)))
(assert (not (= b70 b77)))
(assert (not (= b70 b78)))
;
(assert (not (= b71 b72)))
(assert (not (= b71 b73)))
(assert (not (= b71 b74)))
(assert (not (= b71 b75)))
(assert (not (= b71 b76)))
(assert (not (= b71 b77)))
(assert (not (= b71 b78)))
;
(assert (not (= b72 b73)))
(assert (not (= b72 b74)))
(assert (not (= b72 b75)))
(assert (not (= b72 b76)))
(assert (not (= b72 b77)))
(assert (not (= b72 b78)))
;
(assert (not (= b73 b74)))
(assert (not (= b73 b75)))
(assert (not (= b73 b76)))
(assert (not (= b73 b77)))
(assert (not (= b73 b78)))
;
(assert (not (= b74 b75)))
(assert (not (= b74 b76)))
(assert (not (= b74 b77)))
(assert (not (= b74 b78)))
;
(assert (not (= b75 b76)))
(assert (not (= b75 b77)))
(assert (not (= b75 b78)))
;
(assert (not (= b76 b77)))
(assert (not (= b76 b78)))
;
(assert (not (= b77 b78)))
;-ROW8
(assert (not (= b80 b81)))
(assert (not (= b80 b82)))
(assert (not (= b80 b83)))
(assert (not (= b80 b84)))
(assert (not (= b80 b85)))
(assert (not (= b80 b86)))
(assert (not (= b80 b87)))
(assert (not (= b80 b88)))
;
(assert (not (= b81 b82)))
(assert (not (= b81 b83)))
(assert (not (= b81 b84)))
(assert (not (= b81 b85)))
(assert (not (= b81 b86)))
(assert (not (= b81 b87)))
(assert (not (= b81 b88)))
;
(assert (not (= b82 b83)))
(assert (not (= b82 b84)))
(assert (not (= b82 b85)))
(assert (not (= b82 b86)))
(assert (not (= b82 b87)))
(assert (not (= b82 b88)))
;
(assert (not (= b83 b84)))
(assert (not (= b83 b85)))
(assert (not (= b83 b86)))
(assert (not (= b83 b87)))
(assert (not (= b83 b88)))
;
(assert (not (= b84 b85)))
(assert (not (= b84 b86)))
(assert (not (= b84 b87)))
(assert (not (= b84 b88)))
;
(assert (not (= b85 b86)))
(assert (not (= b85 b87)))
(assert (not (= b85 b88)))
;
(assert (not (= b86 b87)))
(assert (not (= b86 b88)))
;
(assert (not (= b87 b88)))
;---now for cols---
;-COL0
(assert (not (= b00 b10)))
(assert (not (= b00 b20)))
(assert (not (= b00 b30)))
(assert (not (= b00 b40)))
(assert (not (= b00 b50)))
(assert (not (= b00 b60)))
(assert (not (= b00 b70)))
(assert (not (= b00 b80)))
;
(assert (not (= b10 b20)))
(assert (not (= b10 b30)))
(assert (not (= b10 b40)))
(assert (not (= b10 b50)))
(assert (not (= b10 b60)))
(assert (not (= b10 b70)))
(assert (not (= b10 b80)))
;
(assert (not (= b20 b30)))
(assert (not (= b20 b40)))
(assert (not (= b20 b50)))
(assert (not (= b20 b60)))
(assert (not (= b20 b70)))
(assert (not (= b20 b80)))
;
(assert (not (= b30 b40)))
(assert (not (= b30 b50)))
(assert (not (= b30 b60)))
(assert (not (= b30 b70)))
(assert (not (= b30 b80)))
;
(assert (not (= b40 b50)))
(assert (not (= b40 b60)))
(assert (not (= b40 b70)))
(assert (not (= b40 b80)))
;
(assert (not (= b50 b60)))
(assert (not (= b50 b70)))
(assert (not (= b50 b80)))
;
(assert (not (= b60 b70)))
(assert (not (= b60 b80)))
;
(assert (not (= b70 b80)))
;-COL1
(assert (not (= b01 b11)))
(assert (not (= b01 b21)))
(assert (not (= b01 b31)))
(assert (not (= b01 b41)))
(assert (not (= b01 b51)))
(assert (not (= b01 b61)))
(assert (not (= b01 b71)))
(assert (not (= b01 b81)))
;
(assert (not (= b11 b21)))
(assert (not (= b11 b31)))
(assert (not (= b11 b41)))
(assert (not (= b11 b51)))
(assert (not (= b11 b61)))
(assert (not (= b11 b71)))
(assert (not (= b11 b81)))
;
(assert (not (= b21 b31)))
(assert (not (= b21 b41)))
(assert (not (= b21 b51)))
(assert (not (= b21 b61)))
(assert (not (= b21 b71)))
(assert (not (= b21 b81)))
;
(assert (not (= b31 b41)))
(assert (not (= b31 b51)))
(assert (not (= b31 b61)))
(assert (not (= b31 b71)))
(assert (not (= b31 b81)))
;
(assert (not (= b41 b51)))
(assert (not (= b41 b61)))
(assert (not (= b41 b71)))
(assert (not (= b41 b81)))
;
(assert (not (= b51 b61)))
(assert (not (= b51 b71)))
(assert (not (= b51 b81)))
;
(assert (not (= b61 b71)))
(assert (not (= b61 b81)))
;
(assert (not (= b71 b81)))
;-COL2
(assert (not (= b02 b12)))
(assert (not (= b02 b22)))
(assert (not (= b02 b32)))
(assert (not (= b02 b42)))
(assert (not (= b02 b52)))
(assert (not (= b02 b62)))
(assert (not (= b02 b72)))
(assert (not (= b02 b82)))
;
(assert (not (= b12 b22)))
(assert (not (= b12 b32)))
(assert (not (= b12 b42)))
(assert (not (= b12 b52)))
(assert (not (= b12 b62)))
(assert (not (= b12 b72)))
(assert (not (= b12 b82)))
;
(assert (not (= b22 b32)))
(assert (not (= b22 b42)))
(assert (not (= b22 b52)))
(assert (not (= b22 b62)))
(assert (not (= b22 b72)))
(assert (not (= b22 b82)))
;
(assert (not (= b32 b42)))
(assert (not (= b32 b52)))
(assert (not (= b32 b62)))
(assert (not (= b32 b72)))
(assert (not (= b32 b82)))
;
(assert (not (= b42 b52)))
(assert (not (= b42 b62)))
(assert (not (= b42 b72)))
(assert (not (= b42 b82)))
;
(assert (not (= b52 b62)))
(assert (not (= b52 b72)))
(assert (not (= b52 b82)))
;
(assert (not (= b62 b72)))
(assert (not (= b62 b82)))
;
(assert (not (= b72 b82)))
;-COL3
(assert (not (= b03 b13)))
(assert (not (= b03 b23)))
(assert (not (= b03 b33)))
(assert (not (= b03 b43)))
(assert (not (= b03 b53)))
(assert (not (= b03 b63)))
(assert (not (= b03 b73)))
(assert (not (= b03 b83)))
;
(assert (not (= b13 b23)))
(assert (not (= b13 b33)))
(assert (not (= b13 b43)))
(assert (not (= b13 b53)))
(assert (not (= b13 b63)))
(assert (not (= b13 b73)))
(assert (not (= b13 b83)))
;
(assert (not (= b23 b33)))
(assert (not (= b23 b43)))
(assert (not (= b23 b53)))
(assert (not (= b23 b63)))
(assert (not (= b23 b73)))
(assert (not (= b23 b83)))
;
(assert (not (= b33 b43)))
(assert (not (= b33 b53)))
(assert (not (= b33 b63)))
(assert (not (= b33 b73)))
(assert (not (= b33 b83)))
;
(assert (not (= b43 b53)))
(assert (not (= b43 b63)))
(assert (not (= b43 b73)))
(assert (not (= b43 b83)))
;
(assert (not (= b53 b63)))
(assert (not (= b53 b73)))
(assert (not (= b53 b83)))
;
(assert (not (= b63 b73)))
(assert (not (= b63 b83)))
;
(assert (not (= b73 b83)))
;-COL4
(assert (not (= b04 b14)))
(assert (not (= b04 b24)))
(assert (not (= b04 b34)))
(assert (not (= b04 b44)))
(assert (not (= b04 b54)))
(assert (not (= b04 b64)))
(assert (not (= b04 b74)))
(assert (not (= b04 b84)))
;
(assert (not (= b14 b24)))
(assert (not (= b14 b34)))
(assert (not (= b14 b44)))
(assert (not (= b14 b54)))
(assert (not (= b14 b64)))
(assert (not (= b14 b74)))
(assert (not (= b14 b84)))
;
(assert (not (= b24 b34)))
(assert (not (= b24 b44)))
(assert (not (= b24 b54)))
(assert (not (= b24 b64)))
(assert (not (= b24 b74)))
(assert (not (= b24 b84)))
;
(assert (not (= b34 b44)))
(assert (not (= b34 b54)))
(assert (not (= b34 b64)))
(assert (not (= b34 b74)))
(assert (not (= b34 b84)))
;
(assert (not (= b44 b54)))
(assert (not (= b44 b64)))
(assert (not (= b44 b74)))
(assert (not (= b44 b84)))
;
(assert (not (= b54 b64)))
(assert (not (= b54 b74)))
(assert (not (= b54 b84)))
;
(assert (not (= b64 b74)))
(assert (not (= b64 b84)))
;
(assert (not (= b74 b84)))
;-COL5
(assert (not (= b05 b15)))
(assert (not (= b05 b25)))
(assert (not (= b05 b35)))
(assert (not (= b05 b45)))
(assert (not (= b05 b55)))
(assert (not (= b05 b65)))
(assert (not (= b05 b75)))
(assert (not (= b05 b85)))
;
(assert (not (= b15 b25)))
(assert (not (= b15 b35)))
(assert (not (= b15 b45)))
(assert (not (= b15 b55)))
(assert (not (= b15 b65)))
(assert (not (= b15 b75)))
(assert (not (= b15 b85)))
;
(assert (not (= b25 b35)))
(assert (not (= b25 b45)))
(assert (not (= b25 b55)))
(assert (not (= b25 b65)))
(assert (not (= b25 b75)))
(assert (not (= b25 b85)))
;
(assert (not (= b35 b45)))
(assert (not (= b35 b55)))
(assert (not (= b35 b65)))
(assert (not (= b35 b75)))
(assert (not (= b35 b85)))
;
(assert (not (= b45 b55)))
(assert (not (= b45 b65)))
(assert (not (= b45 b75)))
(assert (not (= b45 b85)))
;
(assert (not (= b55 b65)))
(assert (not (= b55 b75)))
(assert (not (= b55 b85)))
;
(assert (not (= b65 b75)))
(assert (not (= b65 b85)))
;
(assert (not (= b75 b85)))
;-COL6
(assert (not (= b06 b16)))
(assert (not (= b06 b26)))
(assert (not (= b06 b36)))
(assert (not (= b06 b46)))
(assert (not (= b06 b56)))
(assert (not (= b06 b66)))
(assert (not (= b06 b76)))
(assert (not (= b06 b86)))
;
(assert (not (= b16 b26)))
(assert (not (= b16 b36)))
(assert (not (= b16 b46)))
(assert (not (= b16 b56)))
(assert (not (= b16 b66)))
(assert (not (= b16 b76)))
(assert (not (= b16 b86)))
;
(assert (not (= b26 b36)))
(assert (not (= b26 b46)))
(assert (not (= b26 b56)))
(assert (not (= b26 b66)))
(assert (not (= b26 b76)))
(assert (not (= b26 b86)))
;
(assert (not (= b36 b46)))
(assert (not (= b36 b56)))
(assert (not (= b36 b66)))
(assert (not (= b36 b76)))
(assert (not (= b36 b86)))
;
(assert (not (= b46 b56)))
(assert (not (= b46 b66)))
(assert (not (= b46 b76)))
(assert (not (= b46 b86)))
;
(assert (not (= b56 b66)))
(assert (not (= b56 b76)))
(assert (not (= b56 b86)))
;
(assert (not (= b66 b76)))
(assert (not (= b66 b86)))
;
(assert (not (= b76 b86)))
;-COL7
(assert (not (= b07 b17)))
(assert (not (= b07 b27)))
(assert (not (= b07 b37)))
(assert (not (= b07 b47)))
(assert (not (= b07 b57)))
(assert (not (= b07 b67)))
(assert (not (= b07 b77)))
(assert (not (= b07 b87)))
;
(assert (not (= b17 b27)))
(assert (not (= b17 b37)))
(assert (not (= b17 b47)))
(assert (not (= b17 b57)))
(assert (not (= b17 b67)))
(assert (not (= b17 b77)))
(assert (not (= b17 b87)))
;
(assert (not (= b27 b37)))
(assert (not (= b27 b47)))
(assert (not (= b27 b57)))
(assert (not (= b27 b67)))
(assert (not (= b27 b77)))
(assert (not (= b27 b87)))
;
(assert (not (= b37 b47)))
(assert (not (= b37 b57)))
(assert (not (= b37 b67)))
(assert (not (= b37 b77)))
(assert (not (= b37 b87)))
;
(assert (not (= b47 b57)))
(assert (not (= b47 b67)))
(assert (not (= b47 b77)))
(assert (not (= b47 b87)))
;
(assert (not (= b57 b67)))
(assert (not (= b57 b77)))
(assert (not (= b57 b87)))
;
(assert (not (= b67 b77)))
(assert (not (= b67 b87)))
;
(assert (not (= b77 b87)))
;-COL8
(assert (not (= b08 b18)))
(assert (not (= b08 b28)))
(assert (not (= b08 b38)))
(assert (not (= b08 b48)))
(assert (not (= b08 b58)))
(assert (not (= b08 b68)))
(assert (not (= b08 b78)))
(assert (not (= b08 b88)))
;
(assert (not (= b18 b28)))
(assert (not (= b18 b38)))
(assert (not (= b18 b48)))
(assert (not (= b18 b58)))
(assert (not (= b18 b68)))
(assert (not (= b18 b78)))
(assert (not (= b18 b88)))
;
(assert (not (= b28 b38)))
(assert (not (= b28 b48)))
(assert (not (= b28 b58)))
(assert (not (= b28 b68)))
(assert (not (= b28 b78)))
(assert (not (= b28 b88)))
;
(assert (not (= b38 b48)))
(assert (not (= b38 b58)))
(assert (not (= b38 b68)))
(assert (not (= b38 b78)))
(assert (not (= b38 b88)))
;
(assert (not (= b48 b58)))
(assert (not (= b48 b68)))
(assert (not (= b48 b78)))
(assert (not (= b48 b88)))
;
(assert (not (= b58 b68)))
(assert (not (= b58 b78)))
(assert (not (= b58 b88)))
;
(assert (not (= b68 b78)))
(assert (not (= b68 b88)))
;
(assert (not (= b78 b88)))
;;; -- Uniqueness within cages also needed
;-cage0
(assert (not (= b00 b10)))
(assert (not (= b00 b20)))
(assert (not (= b00 b01)))
(assert (not (= b00 b11)))
(assert (not (= b00 b21)))
(assert (not (= b00 b02)))
(assert (not (= b00 b12)))
(assert (not (= b00 b22)))
;
(assert (not (= b10 b20)))
(assert (not (= b10 b01)))
(assert (not (= b10 b11)))
(assert (not (= b10 b21)))
(assert (not (= b10 b02)))
(assert (not (= b10 b12)))
(assert (not (= b10 b22)))
;
(assert (not (= b20 b01)))
(assert (not (= b20 b11)))
(assert (not (= b20 b21)))
(assert (not (= b20 b02)))
(assert (not (= b20 b12)))
(assert (not (= b20 b22)))
;
(assert (not (= b01 b11)))
(assert (not (= b01 b21)))
(assert (not (= b01 b02)))
(assert (not (= b01 b12)))
(assert (not (= b01 b22)))
;
(assert (not (= b11 b21)))
(assert (not (= b11 b02)))
(assert (not (= b11 b12)))
(assert (not (= b11 b22)))
;
(assert (not (= b21 b02)))
(assert (not (= b21 b12)))
(assert (not (= b21 b22)))
;
(assert (not (= b02 b12)))
(assert (not (= b02 b22)))
;
(assert (not (= b12 b22)))
;-cage1
(assert (not (= b03 b13)))
(assert (not (= b03 b23)))
(assert (not (= b03 b04)))
(assert (not (= b03 b14)))
(assert (not (= b03 b24)))
(assert (not (= b03 b05)))
(assert (not (= b03 b15)))
(assert (not (= b03 b25)))
;
(assert (not (= b13 b23)))
(assert (not (= b13 b04)))
(assert (not (= b13 b14)))
(assert (not (= b13 b24)))
(assert (not (= b13 b05)))
(assert (not (= b13 b15)))
(assert (not (= b13 b25)))
;
(assert (not (= b23 b04)))
(assert (not (= b23 b14)))
(assert (not (= b23 b24)))
(assert (not (= b23 b05)))
(assert (not (= b23 b15)))
(assert (not (= b23 b25)))
;
(assert (not (= b04 b14)))
(assert (not (= b04 b24)))
(assert (not (= b04 b05)))
(assert (not (= b04 b15)))
(assert (not (= b04 b25)))
;
(assert (not (= b14 b24)))
(assert (not (= b14 b05)))
(assert (not (= b14 b15)))
(assert (not (= b14 b25)))
;
(assert (not (= b24 b05)))
(assert (not (= b24 b15)))
(assert (not (= b24 b25)))
;
(assert (not (= b05 b15)))
(assert (not (= b05 b25)))
;
(assert (not (= b15 b25)))
;-cage2
(assert (not (= b06 b16)))
(assert (not (= b06 b26)))
(assert (not (= b06 b07)))
(assert (not (= b06 b17)))
(assert (not (= b06 b27)))
(assert (not (= b06 b08)))
(assert (not (= b06 b18)))
(assert (not (= b06 b28)))
;
(assert (not (= b16 b26)))
(assert (not (= b16 b07)))
(assert (not (= b16 b17)))
(assert (not (= b16 b27)))
(assert (not (= b16 b08)))
(assert (not (= b16 b18)))
(assert (not (= b16 b28)))
;
(assert (not (= b26 b07)))
(assert (not (= b26 b17)))
(assert (not (= b26 b27)))
(assert (not (= b26 b08)))
(assert (not (= b26 b18)))
(assert (not (= b26 b28)))
;
(assert (not (= b07 b17)))
(assert (not (= b07 b27)))
(assert (not (= b07 b08)))
(assert (not (= b07 b18)))
(assert (not (= b07 b28)))
;
(assert (not (= b17 b27)))
(assert (not (= b17 b08)))
(assert (not (= b17 b18)))
(assert (not (= b17 b28)))
;
(assert (not (= b27 b08)))
(assert (not (= b27 b18)))
(assert (not (= b27 b28)))
;
(assert (not (= b08 b18)))
(assert (not (= b08 b28)))
;
(assert (not (= b18 b28)))
;-cage3
(assert (not (= b30 b40)))
(assert (not (= b30 b50)))
(assert (not (= b30 b31)))
(assert (not (= b30 b41)))
(assert (not (= b30 b51)))
(assert (not (= b30 b32)))
(assert (not (= b30 b42)))
(assert (not (= b30 b52)))
;
(assert (not (= b40 b50)))
(assert (not (= b40 b31)))
(assert (not (= b40 b41)))
(assert (not (= b40 b51)))
(assert (not (= b40 b32)))
(assert (not (= b40 b42)))
(assert (not (= b40 b52)))
;
(assert (not (= b50 b31)))
(assert (not (= b50 b41)))
(assert (not (= b50 b51)))
(assert (not (= b50 b32)))
(assert (not (= b50 b42)))
(assert (not (= b50 b52)))
;
(assert (not (= b31 b41)))
(assert (not (= b31 b51)))
(assert (not (= b31 b32)))
(assert (not (= b31 b42)))
(assert (not (= b31 b52)))
;
(assert (not (= b41 b51)))
(assert (not (= b41 b32)))
(assert (not (= b41 b42)))
(assert (not (= b41 b52)))
;
(assert (not (= b51 b32)))
(assert (not (= b51 b42)))
(assert (not (= b51 b52)))
;
(assert (not (= b32 b42)))
(assert (not (= b32 b52)))
;
(assert (not (= b42 b52)))
;-cage4
(assert (not (= b33 b43)))
(assert (not (= b33 b53)))
(assert (not (= b33 b34)))
(assert (not (= b33 b44)))
(assert (not (= b33 b54)))
(assert (not (= b33 b35)))
(assert (not (= b33 b45)))
(assert (not (= b33 b55)))
;
(assert (not (= b43 b53)))
(assert (not (= b43 b34)))
(assert (not (= b43 b44)))
(assert (not (= b43 b54)))
(assert (not (= b43 b35)))
(assert (not (= b43 b45)))
(assert (not (= b43 b55)))
;
(assert (not (= b53 b34)))
(assert (not (= b53 b44)))
(assert (not (= b53 b54)))
(assert (not (= b53 b35)))
(assert (not (= b53 b45)))
(assert (not (= b53 b55)))
;
(assert (not (= b34 b44)))
(assert (not (= b34 b54)))
(assert (not (= b34 b35)))
(assert (not (= b34 b45)))
(assert (not (= b34 b55)))
;
(assert (not (= b44 b54)))
(assert (not (= b44 b35)))
(assert (not (= b44 b45)))
(assert (not (= b44 b55)))
;
(assert (not (= b54 b35)))
(assert (not (= b54 b45)))
(assert (not (= b54 b55)))
;
(assert (not (= b35 b45)))
(assert (not (= b35 b55)))
;
(assert (not (= b45 b55)))
;-cage5
(assert (not (= b36 b46)))
(assert (not (= b36 b56)))
(assert (not (= b36 b37)))
(assert (not (= b36 b47)))
(assert (not (= b36 b57)))
(assert (not (= b36 b38)))
(assert (not (= b36 b48)))
(assert (not (= b36 b58)))
;
(assert (not (= b46 b56)))
(assert (not (= b46 b37)))
(assert (not (= b46 b47)))
(assert (not (= b46 b57)))
(assert (not (= b46 b38)))
(assert (not (= b46 b48)))
(assert (not (= b46 b58)))
;
(assert (not (= b56 b37)))
(assert (not (= b56 b47)))
(assert (not (= b56 b57)))
(assert (not (= b56 b38)))
(assert (not (= b56 b48)))
(assert (not (= b56 b58)))
;
(assert (not (= b37 b47)))
(assert (not (= b37 b57)))
(assert (not (= b37 b38)))
(assert (not (= b37 b48)))
(assert (not (= b37 b58)))
;
(assert (not (= b47 b57)))
(assert (not (= b47 b38)))
(assert (not (= b47 b48)))
(assert (not (= b47 b58)))
;
(assert (not (= b57 b38)))
(assert (not (= b57 b48)))
(assert (not (= b57 b58)))
;
(assert (not (= b38 b48)))
(assert (not (= b38 b58)))
;
(assert (not (= b48 b58)))
;-cage6
(assert (not (= b60 b70)))
(assert (not (= b60 b80)))
(assert (not (= b60 b61)))
(assert (not (= b60 b71)))
(assert (not (= b60 b81)))
(assert (not (= b60 b62)))
(assert (not (= b60 b72)))
(assert (not (= b60 b82)))
;
(assert (not (= b70 b80)))
(assert (not (= b70 b61)))
(assert (not (= b70 b71)))
(assert (not (= b70 b81)))
(assert (not (= b70 b62)))
(assert (not (= b70 b72)))
(assert (not (= b70 b82)))
;
(assert (not (= b80 b61)))
(assert (not (= b80 b71)))
(assert (not (= b80 b81)))
(assert (not (= b80 b62)))
(assert (not (= b80 b72)))
(assert (not (= b80 b82)))
;
(assert (not (= b61 b71)))
(assert (not (= b61 b81)))
(assert (not (= b61 b62)))
(assert (not (= b61 b72)))
(assert (not (= b61 b82)))
;
(assert (not (= b71 b81)))
(assert (not (= b71 b62)))
(assert (not (= b71 b72)))
(assert (not (= b71 b82)))
;
(assert (not (= b81 b62)))
(assert (not (= b81 b72)))
(assert (not (= b81 b82)))
;
(assert (not (= b62 b72)))
(assert (not (= b62 b82)))
;
(assert (not (= b72 b82)))
;-cage7
(assert (not (= b63 b73)))
(assert (not (= b63 b83)))
(assert (not (= b63 b64)))
(assert (not (= b63 b74)))
(assert (not (= b63 b84)))
(assert (not (= b63 b65)))
(assert (not (= b63 b75)))
(assert (not (= b63 b85)))
;
(assert (not (= b73 b83)))
(assert (not (= b73 b64)))
(assert (not (= b73 b74)))
(assert (not (= b73 b84)))
(assert (not (= b73 b65)))
(assert (not (= b73 b75)))
(assert (not (= b73 b85)))
;
(assert (not (= b83 b64)))
(assert (not (= b83 b74)))
(assert (not (= b83 b84)))
(assert (not (= b83 b65)))
(assert (not (= b83 b75)))
(assert (not (= b83 b85)))
;
(assert (not (= b64 b74)))
(assert (not (= b64 b84)))
(assert (not (= b64 b65)))
(assert (not (= b64 b75)))
(assert (not (= b64 b85)))
;
(assert (not (= b74 b84)))
(assert (not (= b74 b65)))
(assert (not (= b74 b75)))
(assert (not (= b74 b85)))
;
(assert (not (= b84 b65)))
(assert (not (= b84 b75)))
(assert (not (= b84 b85)))
;
(assert (not (= b65 b75)))
(assert (not (= b65 b85)))
;
(assert (not (= b75 b85)))
;-cage8
(assert (not (= b66 b76)))
(assert (not (= b66 b86)))
(assert (not (= b66 b67)))
(assert (not (= b66 b77)))
(assert (not (= b66 b87)))
(assert (not (= b66 b68)))
(assert (not (= b66 b78)))
(assert (not (= b66 b88)))
;
(assert (not (= b76 b86)))
(assert (not (= b76 b67)))
(assert (not (= b76 b77)))
(assert (not (= b76 b87)))
(assert (not (= b76 b68)))
(assert (not (= b76 b78)))
(assert (not (= b76 b88)))
;
(assert (not (= b86 b67)))
(assert (not (= b86 b77)))
(assert (not (= b86 b87)))
(assert (not (= b86 b68)))
(assert (not (= b86 b78)))
(assert (not (= b86 b88)))
;
(assert (not (= b67 b77)))
(assert (not (= b67 b87)))
(assert (not (= b67 b68)))
(assert (not (= b67 b78)))
(assert (not (= b67 b88)))
;
(assert (not (= b77 b87)))
(assert (not (= b77 b68)))
(assert (not (= b77 b78)))
(assert (not (= b77 b88)))
;
(assert (not (= b87 b68)))
(assert (not (= b87 b78)))
(assert (not (= b87 b88)))
;
(assert (not (= b68 b78)))
(assert (not (= b68 b88)))
;
(assert (not (= b78 b88)))
;;; -- now the given board --
;; . . . |. . 6 |. . .
;; . 5 9 |. . . |. . 8
;; 2 . . |. . 8 |. . .
;; ------+------+------
;; . 4 5 |. . . |. . .
;; . . 3 |. . . |. . .
;; . . 6 |. . 3 |. 5 4
;; ------+------+------
;; . . . |3 2 5 |. . 6
;; . . . |. . . |. . .
;; . . . |. . . |. . .
;; Entering row by row...
(assert (= b05 6))
;;
(assert (= b11 5))
(assert (= b12 9))
(assert (= b18 8))
;;
(assert (= b20 2))
(assert (= b25 8))
;;
(assert (= b31 4))
(assert (= b32 5))
;;
(assert (= b42 3))
;;
(assert (= b52 6))
(assert (= b55 3))
(assert (= b57 5))
(assert (= b58 4))
;;
(assert (= b63 3))
(assert (= b64 2))
(assert (= b65 5))
(assert (= b68 6))
;;
(check-sat)
(get-model)
;--
;; sat (model (define-fun b46 () Int 9) (define-fun b37 () Int 3) (define-fun b35 () Int 7) (define-fun b62 () Int 7) (define-fun b44 () Int 5) (define-fun b67 () Int 8) (define-fun b48 () Int 7) (define-fun b47 () Int 6) (define-fun b16 () Int 6) (define-fun b33 () Int 9) (define-fun b24 () Int 9) (define-fun b43 () Int 4) (define-fun b88 () Int 1) (define-fun b23 () Int 5) (define-fun b41 () Int 2) (define-fun b28 () Int 3) (define-fun b84 () Int 7) (define-fun b78 () Int 9) (define-fun b81 () Int 8) (define-fun b51 () Int 9) (define-fun b08 () Int 5) (define-fun b83 () Int 6) (define-fun b26 () Int 7) (define-fun b04 () Int 4) (define-fun b70 () Int 6) (define-fun b73 () Int 8) (define-fun b22 () Int 1) (define-fun b75 () Int 4) (define-fun b85 () Int 9) (define-fun b13 () Int 7) (define-fun b15 () Int 2) (define-fun b00 () Int 3) (define-fun b10 () Int 4) (define-fun b07 () Int 9) (define-fun b21 () Int 6) (define-fun b34 () Int 6) (define-fun b53 () Int 2) (define-fun b71 () Int 3) (define-fun b40 () Int 8) (define-fun b30 () Int 1) (define-fun b87 () Int 2) (define-fun b27 () Int 4) (define-fun b38 () Int 2) (define-fun b06 () Int 2) (define-fun b66 () Int 4) (define-fun b56 () Int 1) (define-fun b61 () Int 1) (define-fun b80 () Int 5) (define-fun b86 () Int 3) (define-fun b01 () Int 7) (define-fun b60 () Int 9) (define-fun b82 () Int 4) (define-fun b74 () Int 1) (define-fun b17 () Int 1) (define-fun b36 () Int 8) (define-fun b50 () Int 7) (define-fun b72 () Int 2) (define-fun b03 () Int 1) (define-fun b02 () Int 8) (define-fun b54 () Int 8) (define-fun b77 () Int 7) (define-fun b45 () Int 1) (define-fun b76 () Int 5) (define-fun b14 () Int 3) (define-fun b68 () Int 6) (define-fun b65 () Int 5) (define-fun b64 () Int 2) (define-fun b63 () Int 3) (define-fun b58 () Int 4) (define-fun b57 () Int 5) (define-fun b55 () Int 3) (define-fun b52 () Int 6) (define-fun b42 () Int 3) (define-fun b32 () Int 5) (define-fun b31 () Int 4) (define-fun b25 () Int 8) (define-fun b20 () Int 2) (define-fun b18 () Int 8) (define-fun b12 () Int 9) (define-fun b11 () Int 5) (define-fun b05 () Int 6) )