Skip to content

Instantly share code, notes, and snippets.

@bisco
Last active December 14, 2019 15:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bisco/9a80cd8af1f0237ceded66d39d68e250 to your computer and use it in GitHub Desktop.
Save bisco/9a80cd8af1f0237ceded66d39d68e250 to your computer and use it in GitHub Desktop.
簡単な数独を解くNuSMVソースコード
MODULE main
DEFINE
A1 := 8;
A2 := 6;
A3 := 1;
A7 := 2;
B0 := 3;
B1 := 2;
B2 := 4;
B6 := 1;
B8 := 5;
C0 := 7;
C1 := 5;
C2 := 1;
C3 := 3;
C4 := 2;
C6 := 9;
C7 := 8;
C8 := 6;
D0 := 2;
D1 := 4;
D2 := 3;
D3 := 9;
D4 := 8;
D5 := 6;
D8 := 1;
E3 := 7;
E5 := 1;
F0 := 5;
F3 := 2;
F4 := 4;
F5 := 3;
F6 := 8;
F7 := 6;
F8 := 9;
G0 := 6;
G1 := 9;
G2 := 8;
G4 := 1;
G5 := 7;
G6 := 4;
G7 := 3;
G8 := 2;
H0 := 1;
H2 := 5;
H6 := 6;
H7 := 9;
H8 := 8;
I1 := 3;
I5 := 9;
I6 := 5;
I7 := 1;
VAR
A0 : {0, 9};
A4 : {0, 5, 7, 9};
A5 : {0, 4, 5};
A6 : {0, 3, 7};
A8 : {0, 3, 4, 7};
B3 : {0, 6, 8};
B4 : {0, 6, 7, 9};
B5 : {0, 8};
B7 : {0, 7};
C5 : {0, 4};
D6 : {0, 7};
D7 : {0, 5, 7};
E0 : {0, 8, 9};
E1 : {0, 6};
E2 : {0, 9};
E4 : {0, 5};
E6 : {0, 2, 3};
E7 : {0, 4, 5};
E8 : {0, 3, 4};
F1 : {0, 1, 7};
F2 : {0, 7};
G3 : {0, 5};
H1 : {0, 7};
H3 : {0, 4};
H4 : {0, 3};
H5 : {0, 2, 4};
I0 : {0, 4};
I2 : {0, 2, 7};
I3 : {0, 4, 6, 8};
I4 : {0, 6};
I8 : {0, 7};
ASSIGN
init(A0) := 0;
next(A0) := case
TRUE : {9};
esac;
init(A4) := 0;
next(A4) := case
TRUE : {5, 7, 9};
esac;
init(A5) := 0;
next(A5) := case
TRUE : {4, 5};
esac;
init(A6) := 0;
next(A6) := case
TRUE : {3, 7};
esac;
init(A8) := 0;
next(A8) := case
TRUE : {3, 4, 7};
esac;
init(B3) := 0;
next(B3) := case
TRUE : {6, 8};
esac;
init(B4) := 0;
next(B4) := case
TRUE : {6, 7, 9};
esac;
init(B5) := 0;
next(B5) := case
TRUE : {8};
esac;
init(B7) := 0;
next(B7) := case
TRUE : {7};
esac;
init(C5) := 0;
next(C5) := case
TRUE : {4};
esac;
init(D6) := 0;
next(D6) := case
TRUE : {7};
esac;
init(D7) := 0;
next(D7) := case
TRUE : {5, 7};
esac;
init(E0) := 0;
next(E0) := case
TRUE : {8, 9};
esac;
init(E1) := 0;
next(E1) := case
TRUE : {6};
esac;
init(E2) := 0;
next(E2) := case
TRUE : {9};
esac;
init(E4) := 0;
next(E4) := case
TRUE : {5};
esac;
init(E6) := 0;
next(E6) := case
TRUE : {2, 3};
esac;
init(E7) := 0;
next(E7) := case
TRUE : {4, 5};
esac;
init(E8) := 0;
next(E8) := case
TRUE : {3, 4};
esac;
init(F1) := 0;
next(F1) := case
TRUE : {1, 7};
esac;
init(F2) := 0;
next(F2) := case
TRUE : {7};
esac;
init(G3) := 0;
next(G3) := case
TRUE : {5};
esac;
init(H1) := 0;
next(H1) := case
TRUE : {7};
esac;
init(H3) := 0;
next(H3) := case
TRUE : {4};
esac;
init(H4) := 0;
next(H4) := case
TRUE : {3};
esac;
init(H5) := 0;
next(H5) := case
TRUE : {2, 4};
esac;
init(I0) := 0;
next(I0) := case
TRUE : {4};
esac;
init(I2) := 0;
next(I2) := case
TRUE : {2, 7};
esac;
init(I3) := 0;
next(I3) := case
TRUE : {4, 6, 8};
esac;
init(I4) := 0;
next(I4) := case
TRUE : {6};
esac;
init(I8) := 0;
next(I8) := case
TRUE : {7};
esac;
SPEC
!EF(
!(A0 = A4) &
!(A0 = A5) &
!(A0 = A6) &
!(A0 = A8) &
!(A4 = A5) &
!(A4 = A6) &
!(A4 = A8) &
!(A5 = A6) &
!(A5 = A8) &
!(A6 = A8) &
!(B3 = B4) &
!(B3 = B5) &
!(B3 = B7) &
!(B4 = B5) &
!(B4 = B7) &
!(B5 = B7) &
!(D6 = D7) &
!(E0 = E1) &
!(E0 = E2) &
!(E0 = E4) &
!(E0 = E6) &
!(E0 = E7) &
!(E0 = E8) &
!(E1 = E2) &
!(E1 = E4) &
!(E1 = E6) &
!(E1 = E7) &
!(E1 = E8) &
!(E2 = E4) &
!(E2 = E6) &
!(E2 = E7) &
!(E2 = E8) &
!(E4 = E6) &
!(E4 = E7) &
!(E4 = E8) &
!(E6 = E7) &
!(E6 = E8) &
!(E7 = E8) &
!(F1 = F2) &
!(H1 = H3) &
!(H1 = H4) &
!(H1 = H5) &
!(H3 = H4) &
!(H3 = H5) &
!(H4 = H5) &
!(I0 = I2) &
!(I0 = I3) &
!(I0 = I4) &
!(I0 = I8) &
!(I2 = I3) &
!(I2 = I4) &
!(I2 = I8) &
!(I3 = I4) &
!(I3 = I8) &
!(I4 = I8) &
!(A0 = E0) &
!(A0 = I0) &
!(A4 = B4) &
!(A4 = E4) &
!(A4 = H4) &
!(A4 = I4) &
!(A5 = B5) &
!(A5 = C5) &
!(A5 = H5) &
!(A6 = D6) &
!(A6 = E6) &
!(A8 = E8) &
!(A8 = I8) &
!(B3 = G3) &
!(B3 = H3) &
!(B3 = I3) &
!(B4 = E4) &
!(B4 = H4) &
!(B4 = I4) &
!(B5 = C5) &
!(B5 = H5) &
!(B7 = D7) &
!(B7 = E7) &
!(C5 = H5) &
!(D6 = E6) &
!(D7 = E7) &
!(E0 = I0) &
!(E1 = F1) &
!(E1 = H1) &
!(E2 = F2) &
!(E2 = I2) &
!(E4 = H4) &
!(E4 = I4) &
!(E8 = I8) &
!(F1 = H1) &
!(F2 = I2) &
!(G3 = H3) &
!(G3 = I3) &
!(H3 = I3) &
!(H4 = I4) &
!(A0 = A1) &
!(A0 = A2) &
!(A0 = B0) &
!(A0 = B1) &
!(A0 = B2) &
!(A0 = C0) &
!(A0 = C1) &
!(A0 = C2) &
!(A1 = A2) &
!(A1 = B0) &
!(A1 = B1) &
!(A1 = B2) &
!(A1 = C0) &
!(A1 = C1) &
!(A1 = C2) &
!(A2 = B0) &
!(A2 = B1) &
!(A2 = B2) &
!(A2 = C0) &
!(A2 = C1) &
!(A2 = C2) &
!(B0 = B1) &
!(B0 = B2) &
!(B0 = C0) &
!(B0 = C1) &
!(B0 = C2) &
!(B1 = B2) &
!(B1 = C0) &
!(B1 = C1) &
!(B1 = C2) &
!(B2 = C0) &
!(B2 = C1) &
!(B2 = C2) &
!(C0 = C1) &
!(C0 = C2) &
!(C1 = C2) &
!(A3 = A4) &
!(A3 = A5) &
!(A3 = B3) &
!(A3 = B4) &
!(A3 = B5) &
!(A3 = C3) &
!(A3 = C4) &
!(A3 = C5) &
!(A4 = A5) &
!(A4 = B3) &
!(A4 = B4) &
!(A4 = B5) &
!(A4 = C3) &
!(A4 = C4) &
!(A4 = C5) &
!(A5 = B3) &
!(A5 = B4) &
!(A5 = B5) &
!(A5 = C3) &
!(A5 = C4) &
!(A5 = C5) &
!(B3 = B4) &
!(B3 = B5) &
!(B3 = C3) &
!(B3 = C4) &
!(B3 = C5) &
!(B4 = B5) &
!(B4 = C3) &
!(B4 = C4) &
!(B4 = C5) &
!(B5 = C3) &
!(B5 = C4) &
!(B5 = C5) &
!(C3 = C4) &
!(C3 = C5) &
!(C4 = C5) &
!(A6 = A7) &
!(A6 = A8) &
!(A6 = B6) &
!(A6 = B7) &
!(A6 = B8) &
!(A6 = C6) &
!(A6 = C7) &
!(A6 = C8) &
!(A7 = A8) &
!(A7 = B6) &
!(A7 = B7) &
!(A7 = B8) &
!(A7 = C6) &
!(A7 = C7) &
!(A7 = C8) &
!(A8 = B6) &
!(A8 = B7) &
!(A8 = B8) &
!(A8 = C6) &
!(A8 = C7) &
!(A8 = C8) &
!(B6 = B7) &
!(B6 = B8) &
!(B6 = C6) &
!(B6 = C7) &
!(B6 = C8) &
!(B7 = B8) &
!(B7 = C6) &
!(B7 = C7) &
!(B7 = C8) &
!(B8 = C6) &
!(B8 = C7) &
!(B8 = C8) &
!(C6 = C7) &
!(C6 = C8) &
!(C7 = C8) &
!(D0 = D1) &
!(D0 = D2) &
!(D0 = E0) &
!(D0 = E1) &
!(D0 = E2) &
!(D0 = F0) &
!(D0 = F1) &
!(D0 = F2) &
!(D1 = D2) &
!(D1 = E0) &
!(D1 = E1) &
!(D1 = E2) &
!(D1 = F0) &
!(D1 = F1) &
!(D1 = F2) &
!(D2 = E0) &
!(D2 = E1) &
!(D2 = E2) &
!(D2 = F0) &
!(D2 = F1) &
!(D2 = F2) &
!(E0 = E1) &
!(E0 = E2) &
!(E0 = F0) &
!(E0 = F1) &
!(E0 = F2) &
!(E1 = E2) &
!(E1 = F0) &
!(E1 = F1) &
!(E1 = F2) &
!(E2 = F0) &
!(E2 = F1) &
!(E2 = F2) &
!(F0 = F1) &
!(F0 = F2) &
!(F1 = F2) &
!(D3 = D4) &
!(D3 = D5) &
!(D3 = E3) &
!(D3 = E4) &
!(D3 = E5) &
!(D3 = F3) &
!(D3 = F4) &
!(D3 = F5) &
!(D4 = D5) &
!(D4 = E3) &
!(D4 = E4) &
!(D4 = E5) &
!(D4 = F3) &
!(D4 = F4) &
!(D4 = F5) &
!(D5 = E3) &
!(D5 = E4) &
!(D5 = E5) &
!(D5 = F3) &
!(D5 = F4) &
!(D5 = F5) &
!(E3 = E4) &
!(E3 = E5) &
!(E3 = F3) &
!(E3 = F4) &
!(E3 = F5) &
!(E4 = E5) &
!(E4 = F3) &
!(E4 = F4) &
!(E4 = F5) &
!(E5 = F3) &
!(E5 = F4) &
!(E5 = F5) &
!(F3 = F4) &
!(F3 = F5) &
!(F4 = F5) &
!(D6 = D7) &
!(D6 = D8) &
!(D6 = E6) &
!(D6 = E7) &
!(D6 = E8) &
!(D6 = F6) &
!(D6 = F7) &
!(D6 = F8) &
!(D7 = D8) &
!(D7 = E6) &
!(D7 = E7) &
!(D7 = E8) &
!(D7 = F6) &
!(D7 = F7) &
!(D7 = F8) &
!(D8 = E6) &
!(D8 = E7) &
!(D8 = E8) &
!(D8 = F6) &
!(D8 = F7) &
!(D8 = F8) &
!(E6 = E7) &
!(E6 = E8) &
!(E6 = F6) &
!(E6 = F7) &
!(E6 = F8) &
!(E7 = E8) &
!(E7 = F6) &
!(E7 = F7) &
!(E7 = F8) &
!(E8 = F6) &
!(E8 = F7) &
!(E8 = F8) &
!(F6 = F7) &
!(F6 = F8) &
!(F7 = F8) &
!(G0 = G1) &
!(G0 = G2) &
!(G0 = H0) &
!(G0 = H1) &
!(G0 = H2) &
!(G0 = I0) &
!(G0 = I1) &
!(G0 = I2) &
!(G1 = G2) &
!(G1 = H0) &
!(G1 = H1) &
!(G1 = H2) &
!(G1 = I0) &
!(G1 = I1) &
!(G1 = I2) &
!(G2 = H0) &
!(G2 = H1) &
!(G2 = H2) &
!(G2 = I0) &
!(G2 = I1) &
!(G2 = I2) &
!(H0 = H1) &
!(H0 = H2) &
!(H0 = I0) &
!(H0 = I1) &
!(H0 = I2) &
!(H1 = H2) &
!(H1 = I0) &
!(H1 = I1) &
!(H1 = I2) &
!(H2 = I0) &
!(H2 = I1) &
!(H2 = I2) &
!(I0 = I1) &
!(I0 = I2) &
!(I1 = I2) &
!(G3 = G4) &
!(G3 = G5) &
!(G3 = H3) &
!(G3 = H4) &
!(G3 = H5) &
!(G3 = I3) &
!(G3 = I4) &
!(G3 = I5) &
!(G4 = G5) &
!(G4 = H3) &
!(G4 = H4) &
!(G4 = H5) &
!(G4 = I3) &
!(G4 = I4) &
!(G4 = I5) &
!(G5 = H3) &
!(G5 = H4) &
!(G5 = H5) &
!(G5 = I3) &
!(G5 = I4) &
!(G5 = I5) &
!(H3 = H4) &
!(H3 = H5) &
!(H3 = I3) &
!(H3 = I4) &
!(H3 = I5) &
!(H4 = H5) &
!(H4 = I3) &
!(H4 = I4) &
!(H4 = I5) &
!(H5 = I3) &
!(H5 = I4) &
!(H5 = I5) &
!(I3 = I4) &
!(I3 = I5) &
!(I4 = I5) &
!(G6 = G7) &
!(G6 = G8) &
!(G6 = H6) &
!(G6 = H7) &
!(G6 = H8) &
!(G6 = I6) &
!(G6 = I7) &
!(G6 = I8) &
!(G7 = G8) &
!(G7 = H6) &
!(G7 = H7) &
!(G7 = H8) &
!(G7 = I6) &
!(G7 = I7) &
!(G7 = I8) &
!(G8 = H6) &
!(G8 = H7) &
!(G8 = H8) &
!(G8 = I6) &
!(G8 = I7) &
!(G8 = I8) &
!(H6 = H7) &
!(H6 = H8) &
!(H6 = I6) &
!(H6 = I7) &
!(H6 = I8) &
!(H7 = H8) &
!(H7 = I6) &
!(H7 = I7) &
!(H7 = I8) &
!(H8 = I6) &
!(H8 = I7) &
!(H8 = I8) &
!(I6 = I7) &
!(I6 = I8) &
!(I7 = I8)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment