Vấn đềgiải quyết các bài toán Satisfiability Modulo Theories (SMT)hiện nay
đang được nghiên cứu và phát triển ởnhiều nơi trên thếgiới. Cho đến ngày nay, nhiều
trường đại học, tổchức đã nghiên cứu và đưa ra những bộgiải giải quyết bài toán
SMT (hay còn gọi là SMT solver). Ví dụnhưZ3 của Mcrosoft, yices của SRI, CVC3
của một sốtrường đại học danh tiếng của Mỹ. hay boolector, openSMT của một số
trường đại học danh tiếng khác… Tuy nhiên, mỗi solver có một lợi thế ưu điểm riêng
đối với các dạng khác nhau của bài toán SMT. Vậy vấn đề đặt ra là làm sao đểtận
dụng được hết các ưu điểm đó cho từng bài toán.
Đểgiải quyết vấn đề ấy, nhóm nghiên cứu đã nghiên cứu và xây dựng một hệ
thống giải quyết bài toán SMT trực tuyến, kết hợp nhiều bộgiải khác nhau để đưa ra
được lời giải tối ưu cho từng bài toán SMT.
Trong khuôn khổkhóa luận tốt nghiệp này của cá nhân tôi, tôi đã xây dựng hai
hệthống con của hệthống đã nêu trên là hệthống trên máy khách (users) và trên máy
trạm (sửdụng đểgọi các Solver). Hệthống trên máy khách sẽ đảm nhiệm việc cung
cấp một giao diện lập trình ứng dụng (Application Programming Interface hay API) để
người dùng sửdụng có thểxây dựng bài toán SMT theo chuẩn thưviện SMT (SMT-LIB) và sau đó là gửi bài toán đến máy chủ(server). Hệthống trên máy trạm sẽtiếp
nhận bài toán từmáy chủvà gọi các bộgiải đểgiải quyết bài toán đó và gửi vềmáy
chủkết quả.
47 trang |
Chia sẻ: nhungnt | Lượt xem: 2245 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Khóa luận Xây dựng hệ thống giải bài toán smt hiệu năng cao – phần máy trạm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Hoàng Thế Tùng
XÂY DỰNG HỆ THỐNG GIẢI BÀI TOÁN SMT
HIỆU NĂNG CAO – PHẦN MÁY TRẠM
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ phần mềm
Cán bộ hướng dẫn: TS. Trương Anh Hoàng
Cán bộ đồng hướng dẫn: TS. Phạm Ngọc Hùng
HÀ NỘI - 2010
Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy trạm 2010
Sinh viên: Hoàng Thế Tùng – K51CNPM – Khoa CNTT - ĐH Công nghệ - ĐH QGHN
GVHD: TS. Trương Anh Hoàng GVĐHD: TS. Phạm Ngọc Hùng
Lời cảm ơn
Trước hết, tôi xin gửi lời cảm ơn chân thành và sâu sắc đến Tiến sỹ Trương
Anh Hoàng và Tiến sỹ Phạm Ngọc Hùng, những người đã trực tiếp hướng dẫn tôi
trong suốt quá trình nghiên cứu và phát triển đề tài nghiên cứu này. Để có được
những kết quả nghiên cứu như hiện nay, tôi vô cùng biết ơn sự quan tâm, hướng dẫn
nhiệt tình của hai thầy trong thời gian vừa qua.
Tôi xin chân thành cảm ơn các thầy cô trong trường Đại học công nghệ, Đại
học Quốc Gia Hà Nội nói chung, và các thầy cô trong khoa công nghệ thông tin nói
riêng, những người đã nhiệt tình giảng dạy, giúp tôi có những kiến thức quý báu để tôi
có thể hoàn thành được đề tài luận văn này.
Tôi xin bày tỏ lòng cảm ơn đến các anh chị cao học, và các bạn trong nhóm
nghiên cứu đã cùng tôi tìm hiểu và xây dựng hoàn chỉnh hệ thống giải quyết bài toán
Satisfiability Modulo Theories (SMT) với hiệu năng cao, giúp tôi có thể hoàn thành tốt
phần nghiên cứu của mình.
Và cuối cùng, tôi xin gửi lời cảm ơn đến gia đình, bạn bè và những người thân đã
bên cạnh, động viên giúp tôi hoàn thành tốt luận văn của mình.
Hà Nội, tháng 05/2010
Hoàng Thế Tùng
Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy trạm 2010
Sinh viên: Hoàng Thế Tùng – K51CNPM – Khoa CNTT - ĐH Công nghệ - ĐH QGHN
GVHD: TS. Trương Anh Hoàng GVĐHD: TS. Phạm Ngọc Hùng
Tóm tắt nội dung
Vấn đề giải quyết các bài toán Satisfiability Modulo Theories (SMT) hiện nay
đang được nghiên cứu và phát triển ở nhiều nơi trên thế giới. Cho đến ngày nay, nhiều
trường đại học, tổ chức đã nghiên cứu và đưa ra những bộ giải giải quyết bài toán
SMT (hay còn gọi là SMT solver). Ví dụ như Z3 của Mcrosoft, yices của SRI, CVC3
của một số trường đại học danh tiếng của Mỹ. hay boolector, openSMT của một số
trường đại học danh tiếng khác… Tuy nhiên, mỗi solver có một lợi thế ưu điểm riêng
đối với các dạng khác nhau của bài toán SMT. Vậy vấn đề đặt ra là làm sao để tận
dụng được hết các ưu điểm đó cho từng bài toán.
Để giải quyết vấn đề ấy, nhóm nghiên cứu đã nghiên cứu và xây dựng một hệ
thống giải quyết bài toán SMT trực tuyến, kết hợp nhiều bộ giải khác nhau để đưa ra
được lời giải tối ưu cho từng bài toán SMT.
Trong khuôn khổ khóa luận tốt nghiệp này của cá nhân tôi, tôi đã xây dựng hai
hệ thống con của hệ thống đã nêu trên là hệ thống trên máy khách (users) và trên máy
trạm (sử dụng để gọi các Solver). Hệ thống trên máy khách sẽ đảm nhiệm việc cung
cấp một giao diện lập trình ứng dụng (Application Programming Interface hay API) để
người dùng sử dụng có thể xây dựng bài toán SMT theo chuẩn thư viện SMT (SMT-
LIB) và sau đó là gửi bài toán đến máy chủ (server). Hệ thống trên máy trạm sẽ tiếp
nhận bài toán từ máy chủ và gọi các bộ giải để giải quyết bài toán đó và gửi về máy
chủ kết quả.
Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy trạm 2010
Sinh viên: Hoàng Thế Tùng – K51CNPM – Khoa CNTT - ĐH Công nghệ - ĐH QGHN
GVHD: TS. Trương Anh Hoàng GVĐHD: TS. Phạm Ngọc Hùng
Mục lục
Chương 1. Mở đầu .................................................................................................................. 1
1.1. Giới thiệu ..................................................................................................................... 1
1.2. Bài toán đặt ra .............................................................................................................. 1
1.3. Cấu trúc nội dung tài liệu ............................................................................................. 2
Chương 2. Kiến thức nền tảng ................................................................................................ 3
2.1. Giới thiệu SMT ............................................................................................................ 3
2.2. Bộ giải SMT (SMT solver) .......................................................................................... 3
2.3. Thư viện SMT (SMT-LIB) .......................................................................................... 4
2.3.1. Cấu trúc cơ bản của SMT-LIB ............................................................................. 4
2.3.2. Khuôn dạng của SMT-LIB ................................................................................... 5
Chương 3. Phân tích hệ thống .............................................................................................. 12
3.1. Mô hình hệ thống ....................................................................................................... 12
3.2. Mô hình ca sử dụng của hệ thống .............................................................................. 13
3.3. Mô hình hoạt động ..................................................................................................... 15
Chương 4. Phương hướng giải quyết vấn đề ........................................................................ 17
4.1. Lựa chọn phương thức kết nối ................................................................................... 17
4.2. Lựa chọn ngôn ngữ lập trình ...................................................................................... 17
4.3. Xác định dữ liệu đầu vào, đầu ra của hệ thống .......................................................... 17
Chương 5. Mô tả hệ thống .................................................................................................... 19
5.1. Quy định cách thức giao tiếp với máy chủ ................................................................ 19
5.2. Phần máy khách ......................................................................................................... 20
5.2.1. Quy định giao tiếp với máy chủ ......................................................................... 20
5.2.2. Các lớp của hệ thống máy khách ........................................................................ 21
5.2.2.1. Lớp config ................................................................................................... 21
5.2.2.2. Lớp Client: .................................................................................................. 21
5.2.2.3. Lớp NetSolver ............................................................................................. 21
5.2.2.4. Lớp Bench_attribute .................................................................................... 22
5.2.2.5. Lớp Formula ................................................................................................ 22
5.2.2.6. Lớp func_decl .............................................................................................. 23
5.2.2.7. Lớp pred_decl .............................................................................................. 24
Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy trạm 2010
Sinh viên: Hoàng Thế Tùng – K51CNPM – Khoa CNTT - ĐH Công nghệ - ĐH QGHN
GVHD: TS. Trương Anh Hoàng GVĐHD: TS. Phạm Ngọc Hùng
5.2.2.8. Lớp Term ..................................................................................................... 24
5.2.2.9. Lớp annotation ............................................................................................ 24
5.2.2.10. Lớp varDecl ................................................................................................ 24
5.2.2.11. Lớp fvarDecl ............................................................................................... 24
5.2.2.12. Lớp Arith_symb .......................................................................................... 25
5.2.2.13. Lớp Identifier .............................................................................................. 25
5.2.2.14. Lớp quant_var ............................................................................................. 25
5.3. Phần máy trạm ........................................................................................................... 26
5.3.1. Cơ chế làm việc của máy trạm ........................................................................... 26
5.3.2. Quy định giao tiếp với máy chủ ......................................................................... 27
5.3.3. Hoạt động của hệ thống máy trạm ...................................................................... 28
5.3.4. Các lớp của hệ thống máy trạm .......................................................................... 30
5.3.4.1. Biểu đồ lớp của hệ thống ............................................................................. 30
5.3.4.2. Lớp config ................................................................................................... 30
5.3.4.3. Lớp sessionID .............................................................................................. 30
5.3.4.4. Lớp Solver ................................................................................................... 31
5.3.4.5. Lớp ReadThread .......................................................................................... 31
5.3.4.6. Lớp WriteThread ......................................................................................... 34
5.4. Tổng kết ..................................................................................................................... 34
Chương 6. Cài đặt và thử nghiệm ......................................................................................... 36
6.1. Cài đặt ........................................................................................................................ 36
6.2. Bài toán thực nghiệm ................................................................................................. 36
6.2.1. Xây dựng bài toán SMT dựa trên các hàm API.................................................. 36
6.2.2. Thử nghiệm kết nối với máy chủ và toàn hệ thống ............................................ 37
Hướng phát triển tiếp theo của hệ thống .............................................................................. 40
Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy trạm 2010
Sinh viên: Hoàng Thế Tùng – K51CNPM – Khoa CNTT - ĐH Công nghệ - ĐH QGHN
GVHD: TS. Trương Anh Hoàng GVĐHD: TS. Phạm Ngọc Hùng
Danh sách các bảng trong tài liệu
Bảng 1: Luật sinh một toán hạng ................................................................................................ 7
Bảng 2: Luật sinh một công thức ................................................................................................ 8
Bảng 3: Luật sinh một thuyết ..................................................................................................... 8
Bảng 4: Luật sinh một logic ....................................................................................................... 8
Bảng 5 Luật sinh một chuẩn ....................................................................................................... 9
Bảng 6: Các lý thuyết nền được quy chuẩn trong SMT-LIB 1.2 ............................................... 9
Bảng 7: Các Logic quy chuẩn được đưa ra trong SMT-LIB 1.2 .............................................. 10
Bảng 8 Bảng dữ liệu các tệp tin đầu vào thử nghiệm ............................................................... 37
Bảng 9: Kết quả thời gian của thực nghiệm ............................................................................. 37
Bảng 10: Kêt quả trả về của thực nghiệm ................................................................................ 38
Danh sách các hình trong tài liệu
Hình 3.1 Mô hình hệ thống giải bài toán SMT hiệu năng cao. ............................................... 12
Hình 3.2: Mô hình ca sử dụng của hệ thống ............................................................................ 14
Hình 3.3: Mô hình hoạt động của hệ thống ............................................................................. 15
Hình 5.1: Biểu đồ lớp của hệ thống máy trạm ......................................................................... 30
Danh sách từ viết tắt trong tài liệu
Từ viết tắt Từ chuẩn Diễn giải
SMT Satisfiability Modulo Theories Các lý thuyết module về
tính thỏa được
SMT-LIB Satisfiability Modulo Theories -
Liblary
Thư viện các lý thuyết
module về tính thỏa được
API Application Programming Interface
Giao diện lập trình ứng
dụng
Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy trạm 2010
Trang 1
Sinh viên: Hoàng Thế Tùng – K51CNPM – Khoa CNTT - ĐH Công nghệ - ĐH QGHN
GVHD: TS. Trương Anh Hoàng GVĐHD: TS. Phạm Ngọc Hùng
Chương 1. Mở đầu
1.1. Giới thiệu
Hiện nay, cùng với sự phát triển bùng nổ của hầu hết các ngành khoa học,
ngành khoa học máy tính cũng có những tiến bộ to lớn. Song song với đó, nhu cần
nghiên cứu về việc giải hoặc đưa ra tính khả thi của một biểu thức logic ngày càng
được quan tâm và phát triển. Bởi lẽ, rất nhiều các ứng dụng hay những sự tính toán
trong ngành khoa học máy tính cần đến những công thức logic phức tạp. Trong
khoảng hai thập niên gần đây, ngành khoa học máy tính đã có những tiến bộ lớn đối
với việc tự động chứng minh hay bác bỏ tính đúng đắn của một biểu thức logic. Tuy
nhiên việc chứng minh các biểu thức logic sẽ khó khăn hơn nhiều nếu đặt chúng trong
một nền lý thuyết thay vì chứng minh một cách tổng quát [1,2]. Những vấn đề này
được gọi là các lý thuyết module về tính thỏa được (Satisfiability Modulo Theories
hay còn được viết tắt là SMT [1]).
Cho đến nay, nhiều trường đại học cùng những nhà nghiên cứu khoa học máy
tính đã có những nghiên cứu, sản phẩm để giải quyết vấn đề này. Tuy nhiên, việc xây
dựng một bộ giải các vấn đề SMT tối ưu cho mọi trường hợp và rất khó khăn. Vì vậy,
vấn đề được đặt ra là kết hợp các bộ giải SMT đó để có được một bộ giải tối ưu nhất
về mặt thời gian.
1.2. Bài toán đặt ra
Đối với việc giải quyết các vấn đề SMT, nhiều trường đại học cũng như các cơ
quan, tổ chức lớn trên thế giới đã có những nghiên cứu và đưa ra những sản phẩm của
mình. Tuy nhiên, với mỗi sản phẩm, họ đưa vào những thuật toán khác nhau để giải
quyết vấn đề này. Trong khuôn khổ đồ án, việc nghiên cứu cơ chế, và tính đúng đắn
của những bộ giải này không được đề cập đến (kết quả đưa ra của các bộ giải sẽ được
coi là luôn đúng đắn) mà sẽ tập trung vào việc sử dụng những bộ giải này như là
những công cụ giải quyết vấn đề SMT được đưa vào. Với những kết quả đưa ra bởi
các bộ giải này, cần có một kết trả được trả về tối ưu nhất về mặt thời gian.
Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy trạm 2010
Trang 2
Sinh viên: Hoàng Thế Tùng – K51CNPM – Khoa CNTT - ĐH Công nghệ - ĐH QGHN
GVHD: TS. Trương Anh Hoàng GVĐHD: TS. Phạm Ngọc Hùng
Để giải quyết vấn đề nói trên, cần có một hệ thống phân phối các vấn đề SMT
cho các bộ giải và nhận về kết quả trả về tối ưu nhất về mặt thời gian. Ngoài ra để tiện
cho việc sử dụng và phát triển hệ thống, cần có một thư viện các hàm nhúng hỗ trợ
người sử dụng xây dựng các vấn đề SMT.
1.3. Cấu trúc nội dung tài liệu
Tài liệu này nhằm giới thiệu về bài toán SMT và mô tả hệ thống giải quyết bài
toán đó trực tuyến. Chương mở đầu của tài liệu giới thiệu qua về bài toán SMT và bài
toán đặt ra cho việc xây dựng hệ thống giải quyết bài toán SMT đó.
Chương thứ hai của tài liệu đề cập tới một số kiến thức về SMT và cấu trúc,
khuôn dạng của bài toán SMT được xây dựng theo chuẩn SMT-LIB. Chương này được
coi là kiến thức nền tảng để xây dựng hệ thống giải quyết bài toán SMT hiệu năng cao.
Những kiến thức trong chương này sẽ được sử dụng để xây dựng các hàm API cho hệ
thống máy khách và một số thành phần của hệ thống máy trạm.
Chương ba và chương bốn là phần phân tích và hướng giải quyết vấn đề xây
dựng hệ thống giải bài toán SMT hiệu năng cao. Chương ba sẽ tập trung hơn vào vấn
đề phân tích, đưa ra một cái nhìn tổng quan về hệ thống và quy trình hệ thống sẽ hoạt
động. Chương bốn sẽ là một số lựa chọn giải pháp để giải quyết một số vấn đề khi xây
dựng hệ thống.
Hệ thống giải bài toán SMT hiệu năng cao phần máy trạm và máy khách sẽ được
mô tả chi tiết trong chương năm. Ở chương này, hệ thống các hàm API trên máy khách
sẽ được mô tả rất chi tiết và có thể coi là tài liệu hướng dẫn cho người dùng sử dụng
các hàm API này.
Chương sáu sẽ đưa ra phần thực nghiệm và đánh giá kết quả của hệ thống. Trong
chương này, kết quả của một số thực nghiệm hệ thống sẽ được đưa ra nhằm đưa ra một
số ưu điểm mà hệ thống có được.
Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy trạm 2010
Trang 3
Sinh viên: Hoàng Thế Tùng – K51CNPM – Khoa CNTT - ĐH Công nghệ - ĐH QGHN
GVHD: TS. Trương Anh Hoàng GVĐHD: TS. Phạm Ngọc Hùng
Chương 2. Kiến thức nền tảng
2.1. Giới thiệu SMT
Tính thỏa mãn là một trong những vấn đề quan trọng nhất của ngành khoa học
máy tính. Các vấn đề cần tính thỏa mãn được ứng dụng trong cả phát triển phần cứng
cũng như phần mềm, đặc biệt là kiểm định phần cứng, kiểm thử, lập lịch, đồ thị [3].
Trong các lĩnh vực nói trên, nhiều các ứng dụng được xây dựng dựa trên việc
tạo ra các công thức tiền tố và việc chứng minh tính hợp lệ của chúng. Cho dù hai thập
niên gần đây, việc chứng minh tính hợp lệ của các định lý, biểu thức tiền tố có những
tiến bộ đáng kể, tuy nhiên, không phải công thức nào cũng có thể chứng minh một
cách tự động được. Lý do của vấn đề này là bởi lẽ nhiều công thức không quan tâm
đến tính khả thi trong trường hợp tổng quát mà chỉ được quan tâm trong một lý thuyết
nền tảng [2,1]. Việc nghiên cứu tính khả thi của các công thức trong một lý thuyết nền
tảng được gọi là các lý thuyết module về tính thỏa được (Satisfiability Modulo
Theories hay SMT) và các công cụ để chứng minh một cách tự động các tính khả thi
của những vẫn đề SMT được gọi là bộ giải SMT (SMT solver).
Lý thuyết về SMT sẽ được đề cập cụ thể hơn trong phần giới thiệu về thư viện
SMT.
2.2. Bộ giải SMT (SMT solver)
Trên thực tế, việc xây dựng và sử dụng các bộ giải SMT được phát triển khá
sớm, từ đầu những năm 1980. Tại thời điểm đó, một số bộ giải được xây dựng bởi
Greg Nelson và Derek Oppent tại trường đại học Stanford , Robert Shostak tại SRI, và
Robert Boyer và J Moore tại trường đại học ở Texas. Đến cuối những năm 1990, việc
nghiên cứu SMT hiện đại dựa trên lợi thế của công nghệ SAT đã xây dựng nhiều bộ
giải SMT tiến bộ hơn [4].
Như đã đề cập ở trên, trong khuôn khổ đồ án, việc đánh giá về tính đúng đắn,
các nghiên cứu về thuật giải của từng bộ giải sẽ không được đề cập đến. Vấn đề được
Xây dựng hệ thống giải bài toán SMT hiệu năng cao – Phần máy trạm 2010
Trang 4
Sinh viên: Hoàng Thế Tùng – K51CNPM – Khoa CNTT - ĐH Công nghệ - ĐH QGHN
GVHD: TS. Trương Anh Hoàng GVĐHD: TS. Phạm Ngọc Hùng
đặt ra ở đây là kết quả của bộ giải nào sẽ được đưa ra sớm nhất. Hiện nay, có rất nhiều
các bộ giải như Absolver, Boolector, CVC3, OpenSMT, Yices, Z3…
Do yêu cầu của hệ thống là phải đưa ra được giá trị thỏa mãn (nếu bài toán
SMT đó có thỏa mãn) nên bộ giải hệ thống sử dụng phải hỗ trợ chức năng này. Ngoài
ra hệ thống sử dụng đầu vào theo chuẩn của SMT-Lib và ngắt thời gian giải một bài
toán (trong trường hợp bài toán cần thời gian giải quá lớn), do đó, bộ giải cần phải có
hỗ trợ những chức năng này khi hoạt động. Từ những yêu cầu đó, nhóm nghiên cứu và
phát triển hệ thống đã quyết định sử dụng song song hai bộ giải là Yices của SRI
International và