1. Trang chủ
  2. » Luận Văn - Báo Cáo

LUẬN VĂ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 docx

47 405 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 47
Dung lượng 506,21 KB

Nội dung

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 Theo

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trang 2

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

Trang 3

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 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ả

Trang 4

(SMT-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

Trang 5

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

Trang 6

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

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

Trang 7

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

Trang 8

Để 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

Trang 9

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

Trang 10

đặ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à Z3 của Microsoft Hai bộ giải này tuy có cấu trúc khác nhau nhưng cùng được dựa trên thuật giải DPLL (Davis-Putnam-Logemann-Loveland) [5] Việc tìm hiểu, phân tích cấu trúc cũng như thuật toán của hai bộ giải này sẽ không được đề cập cụ thể ở đây

2.3 Thư viện SMT (SMT-LIB)

Đề giải quyết các vấn đề SMT, việc nghiên cứu và đưa ra một chuẩn đầu vào là

rất cần thiết Thông thường, mỗi bộ giải SMT đều có một quy định riêng cho chuẩn

đầu vào của mình, tuy nhiên như vậy sẽ thực sự khó khăn đối với việc thực thi một đầu

vào bởi các bộ giải khác nhau Vì vậy, việc nghiên cứu và đưa ra một chuẩn đầu vào thống nhất là rất cần thiết

Khoảng tháng tư năm 2004, Silvio Rainise và Cesare Tinelli đã đưa ra chuẩn về SMT-LIB đầu tiên [6] Thời gian sau đó, họ liên tục cải tiến chuẩn đầu vào, bổ sung những quy định chuẩn, thuyết mới Cho đến nay, hai tác giả này đã và đang xây dựng chuẩn SMT-LIB đã có phiên bản 2.0, tuy nhiên việc xây dựng đầu vào dựa trên chuẩn mới này chưa được phổ biến Hầu hết các bộ giải cũng như đầu vào cho các vấn đề SMT-LIB đều được sử dụng bởi chuẩn 1.2 mà họ đã xây dựng vào khoảng tháng 8 năm 2006

2.3.1 Cấu trúc cơ bản của SMT-LIB

Như đã nói ở trên, vấn đề SMT là việc kiểm tra biểu thức logic φ có thỏa mãn

được hay không trong lý thuyết nền T hay có một khuôn mẫu của T là khả thi Vì vậy,

Trang 11

- Một thủ tục logic cơ sở (underlying logic): Định dạng SMT-LIB hiện tại có hai

định nghĩa về ngữ nghĩa của logic cơ sở Thứ nhất là dịch nghĩa sang những

biểu thức tiền tố cổ điển, có nghĩa là thủ tục của logic cơ sở giúp cho việc chuyển đổi sang khung làm việc của công cụ có sẵn hoặc giúp kiểm tra kết quả một cách dễ dàng hơn Nghĩa thứ hai là chi phối ngữ nghĩa đại số dựa trên nhiều khuôn mẫu rút gọn

- Một lý thuyết nền (background theory): là những lý thuyết nền dùng để kiểm chứng tính thỏa mãn Những lý thuyết cơ bản bao gồm lý thuyết số thực, lý thuyết mảng Phiên bản hiện tại của SMT-LIB chỉ hỗ trỡ những lý thuyết cơ bản này

- Một ngôn ngữ đầu vào (input language): Là lớp các biểu thức được chấp nhận như là đầu vào của SMT-LIB

2.3.2 Khuôn dạng của SMT-LIB

Một thư viện SMT được xây dựng theo chuẩn và dựa trên những định nghĩa sau (theo [7]):

Định nghĩa 1 (Ký hiệu của LIB – LIB signature): Một ký hiệu

SMT-LIB Σ là một bộ dữ liệu bao gồm:

- Một tập không rỗng ∑ௌ ⊆  các ký hiệu phân cấp (sort symbol), một tập

hợp ký hiệu hàm (function symbol) ∑ி ⊆  và tập hợp các ký hiệu vị từ

(predicate symbol) ∑௉ ⊆ ;

- Một toàn ánh (total mapping) từ các biến (term variables) X tới ΣS;

- Một quan hệ toàn phương (total relation) từ ΣF đến (ΣS)+, một chuỗi các thành phần của ΣS, không bao giờ có một cặp định dạng (f,s1…sns) và (f,s1…sns’) với s và s’ khác nhau;

- Một quan hệ toàn phương từ ΣP tới (ΣS)*, thứ tự các thành phần ΣP

Định nghĩa 2 (Công thức trong SMT-LIB – SMT-LIB formula): Các công thức

trong ngôn ngữ SMT-LIB là một tập hợp tất cả các công thức đúng cú pháp

đóng (closed well-formed formula)

Trang 12

Định nghĩa 3 (khai báo lý thuyết – theory decl): chỉ tồn tại một khai báo lý

thuyết trong một bài toán SMT-LIB và phải thỏa mãn những giới hạn sau:

- Chúng bao gồm các khai báo của thuộc tính “sort” và “definition”;

- Chúng chứa ít nhất một khai báo với một thuộc tính;

- Không tồn tại khai báo định dạng f,s1…sns và f,s1…sns’ cho cùng một ký

tự hàm f mà s và s’ khác nhau;

- Tất cả các rút gọn trong khai báo ký tự hàm, vị từ được liệt kê trong khai báo thuộc tính “sort”;

- Định nghĩa của lý thuyết được quy định trong thuộc tính “definition” và

chỉ liên quan đến các khai báo ký tự phân cấp, ký tự hàm và ký tự vị từ;

- Công thức trong thuộc tính “axiom” được xây dựng trên các khái báo ký

tự trong các thuộc tính “sort”, “funs”, “pred”

Định nghĩa 4 (Khai báo Logic): Chỉ có một luật Logic được khai báo trong một

bài toán SMT và phải được thỏa mãn các giới hạn sau:

- Chúng bao gồm các khai báo thuộc tính “theory” và “language”;

- Chúng chứa ít nhất một khai báo đối với một thuộc tính;

- Giá trị của thuộc tính “theory” phải trùng với tên của thuyết T cho vài khai báo của DT trong SMT-LIB

Định nghĩa 5 (Khai báo về chuẩn): luật khai báo chuẩn phải thỏa mãn những

- Mỗi một ký hiệu được khai báo trong thuộc tính “extrasorts”, “extrafuns”

và “extrapred” cần phải là một phần của các ký hiệu được định nghĩa trong thuộc tính “language” của logic L;

- Có thể có hơn một khai báo của thuộc tính “extrasort”;

Trang 13

- Có thể có hơn một khai báo của thuộc tính “extrafuns”, và mỗi thuộc tính

“funs” của khai báo thuyết liên kết tới DL phải thỏa mãn yêu cầu 3 của

“extrasorts” “extrafuns” và “extrapred”

Từ những định nghĩa trên, việc xây dựng một bài toán SMT dựa trên chuẩn SMT-LIB sẽ theo cấu trúc sau [7]:

Bảng 1: Luật sinh một toán hạng

(1) < simple_identifier> ::= Chuỗi các ký tự, số, dấu chấm(.), nháy đơn(‘)

và gạch dưới , bắt đầu bởi ký tự (2) < user_value_content> ::= Bất kỳ chuỗ ký tự có thể in ra được

(3) < user_value> ::= {< user_value_content>}

(4) <numeral> ::= 0 | chuỗi không rỗng các chữ số bắt đầu khác 0 (5) <rational> ::= <numeral>.0*<numeral>

(6) <indexed_identifier> ::= < simple_identifier>[<numeral>(:<numeral>)*] (7) <identifier> ::= <simple_identifier> | <indexed_identifier>

(13) <pred_symb> ::= <identifier> | <arith_symb> | distinct

(14) <sort_symb> ::= <identifier>

(15) <annotation> ::= <attribute> | <attribute> < user value>

(16) <base_term> ::= <var> | <numeral> | <rational> | <identifier> (17) <an_term> ::= <base_term> | (<base_term> <annotation>+)

| (<funs_symb> <an_term>+ <annotation>*)

| (ite <an_formula> <an_terrm> <an_term>

<annotation>*)

Trang 14

Bảng 2: Luật sinh một công thức

(1) <prop_atom> ::= true | false | <fvar> | <identifier>

(2) <an_atom> ::= <prop_atom> | ( <prop_atom> <annotation>+)

| (<pred_symb> <an_term>+ <annotation>*) (3) <connective> ::= not | implies | if_then_else | and | or | xor | iff

(4) <quant_symb> ::= exists | forall

(5) <quant_var> ::= ( <var> <sort_symb>)

(6) <an_formula> ::= <an_atom>

| ( <connective> <an formula>+ <annotation>* )

| (<quant_symb> <quant_var>+ <an_formula>

Bảng 3: Luật sinh một thuyết

(1) <string_content> ::= chuỗi liên tiếp các ký tự

(2) <string> ::= “<string_content>”

(3) <fun_symb_decl> ::= (<func_symb> <sort_symb>+ <annotation>*)

| (<numeral> <sort_symb> <annotation>*)

| (<rational> <sort_sumb> <annotation>*) (4) <pred_symb_decl> ::= (<pred_symb> <sort_symb>* <annotation>*) (5) <theory_name> ::= <identifier>

(6) <theory_attribute> ::= :sort ( <sort_symb>+)

(7) <theory> ::= (theory <theory_name> <theory_atrribute>+)

Bảng 4: Luật sinh một logic

Trang 15

| <annotation>

(3) <logic> ::= (logic <logic_name> <logic_attribute>+)

Bảng 5 Luật sinh một chuẩn

(1) <status> ::= sat | unsat | unknown

(4) benchmark ::= ( benchmark <bench_name> <bench attribute>+ )

Các lý thuyết nền cơ bản đã được nghiên cứu và đưa ra:

Bảng 6: Các lý thuyết nền được quy chuẩn trong SMT-LIB 1.2

dữ liệu bit vector

Trang 16

Các logic cơ bản được áp dụng trong định dạng của SMT-LIB:

Bảng 7: Các Logic quy chuẩn được đưa ra trong SMT-LIB 1.2

những ký tự phân cấp, hàm và thuộc tính tự do

trong thuyết 10 nêu trên

LIA Công thức tuyến tính trên các phép toán số nguyên

LRA Công thức tuyến tính trên các phép toán số thực

các ký hiệu hàm và ký hiệu vị từ tự do

nguyên với ký tự phân cấp, ký tự hàm và ký tự lượng từ

là các biến nguyên và b là một hằng số nguyên

nguyên

nguyên với ít nhất một đa thức không tuyến tính

số thực và b là một hằng số hữu tỷ

trên ký hiệu của ký tự phân cấp, ký tự hàm, ký tự vị từ không

tự hàm, ký tự vị từ không được giải thích

Trang 17

UFNIA Phép tính số nguyên không tuyến tính với ký tự phân cấp, hàm

và vị từ không xác định

Trang 18

Chương 3 Phân tích hệ thống 3.1 Mô hình hệ thống

Để giải một bài toán SMT một cách song song giữa các bộ giải, đồng thời đảm

bảo được hiệu năng cao cho hệ thống, nhóm nghiên cứu đã đưa ra hướng giải quyết là xây dựng hệ thống giải quyết vấn đề SMT trực tuyến qua mạng Hệ thống sẽ được chia

ra làm ba phần rõ rệt là phần máy khách gửi yêu cầu giải quyết vấn đề, phần máy chủ

xử lý và phân phối các vấn đề nhận được, và phần máy trạm giải quyết vấn đề được yêu cầu Mô hình hệ thống được xây dựng như sau:

Hình 3.1 Mô hình hệ thống giải bài toán SMT hiệu năng cao

Việc xây dựng phát triển hệ thống giải quyết vấn đề SMT trực tuyến sẽ đáp ứng

được yêu cầu về hiệu năng xử lý đầu vào Hệ thống sẽ tiếp nhận một lúc nhiều vấn đề

Trang 19

từ nhiều người sử dụng trực tuyến Với mỗi vấn đề nhận được, hệ thống sẽ phân phối cho tất cả các bộ giải và chờ đợi kết quả trả về tối ưu nhất về mặt thời gian để trả về cho phía yêu cầu Đối với những bộ giải đưa ra kết quả sau sẽ nhận được tín hiệu dừng

xử lý vấn đề đó Do hệ thống được xây dựng trực tuyến, nên việc nhận cùng một lúc nhiều yêu cầu cần xử lý là điều tất yếu, vì vậy, hệ thống máy chủ vừa đảm nhận việc chia một vấn đề cho nhiều máy trạm xử lý, vừa phải xử lý đồng thời cùng lúc nhiều yêu cầu như vậy Về phía máy trạm, mỗi máy trạm sẽ luôn nhận và xử lý nhiều các vấn đề một lúc và phải trả về kết quả tương ứng cho mỗi vấn đề Để tiện cho người sử dụng bên phía máy khách, hệ thống cần phải có một thư việc các hàm nhúng API để người sử dụng trực tiếp xây dựng vấn đề SMT và gửi lên phía máy chủ

3.2 Mô hình ca sử dụng của hệ thống

Đối với hai hệ thống con được cài đặt trên máy khách và máy trạm, thì máy chủ được coi như là một tác nhân trung gian giúp duy trì tương tác giữa chúng với nhau

Trang 20

Hình 3.2: Mô hình ca sử dụng của hệ thống

Ở phía máy khách (user), người sử dụng sẽ tạo bài toán SMT, hoặc chỉ định cho

hệ thống tệp tin SMT cần thiết phải kiểm tra tính thỏa mãn để hệ thống sẽ gửi lên phía máy chủ (server) Sau khi gửi bài toán lên phía máy chủ, hệ thống trên máy khách sẽ chờ cho máy chủ gửi kết quả về và nhận kết quả trả về Viêc gửi bài toán SMT bên phía máy khách sẽ bao gồm cả việc gửi yêu cầu thời gian ngắt của các bộ giải SMT

Với máy trạm (solver) sau khi kết nối và nhận được tệp tin chứa vấn đề SMT cần giải quyết, hệ thống sẽ gọi lệnh chạy các công cụ giải SMT Sau khi đưa ra được kết quả, hoặc sau khi nhận được tín hiệu ngắt từ phía máy chủ, máy trạm sẽ gửi lại kết quả đến máy chủ để máy chủ gửi lại phía máy khách

Trang 21

3.3 Mô hình hoạt động

Hình 3.3: Mô hình hoạt động của hệ thống

Từ biểu đồ hoạt động của hệ thống, ta có thể xác định được các công việc tuần

tự của hệ thống và cách làm việc của hệ thống như sau:

Trang 22

Khi hệ thống hoạt động, các máy khách sẽ kết nối đến máy chủ và xây dựng bài toán SMT Bài toán SMT có thể đã được mô tả bằng tệp tin hay được xây dựng bằng chương trình với việc sử dụng hệ thống được cài đặt trên Sau khi xác định bài toán SMT, hệ thống máy khách sẽ gửi bài toán toán đó cho máy chủ đồng thời gửi thông tin

về thời gian giới hạn thực hiện giải bài toán và chờ đợi kết quả trả về từ phía máy chủ

Máy chủ lắng nghe các kết nối của máy khách, khi nhận được bài toán SMT và tham số về thời gian thực hiện bài toán gửi từ máy khách, máy chủ sẽ phân phối các bài toán đó cho các máy trạm có bộ giải các bài toán SMT đang kết nối đến máy chủ

và đón chờ kết quả phản hồi từ máy trạm

Máy trạm sẽ nhận bài toán từ máy chủ và bắt đầu việc thực hiện giải bài toán, khi đó giá trị về trễ thời gian cho mỗi bài toán sẽ được sử dụng Sau khi hệ thống trên máy trạm gọi các bộ giải để giải quyết vấn đề được đưa tới, sẽ có hai trường hợp xảy

ra tiếp sau đó Trường hợp một là máy trạm đó sẽ giải ra kết quả nhanh nhất và gửi về phía máy chủ kết quả Trường hợp thứ hai là nhận được tín hiệu ngắt tiến trình (do đã

có máy trạm khác gửi được kết quả đến máy chủ), khi đó, một lệnh ngắt tiến trình

đang được thực thi sẽ được gọi Và ở trường hợp này, máy trạm không gửi gì về phía

máy chủ nữa

Phía máy khách sau khi nhận được kết quả của hệ thống sẽ hiển thị cho người dùng thấy được kết quả của bài toán mà hệ thống gửi đến

Trang 23

Chương 4 Phương hướng giải quyết vấn đề 4.1 Lựa chọn phương thức kết nối

Bài toán được đặt ra là xây dựng hệ thống trực tuyến, vì vậy cần có phương thức kết nối phù hợp với những yêu cầu đã được nêu ra trong phần trên Có hai phương thức kết nối được đưa ra lựa chọn là xây dựng hệ thống dựa trên các kết nối của webservice hoặc sử dụng kết nối socket

Đối với phương thức kết nối dựa trên webservice, thời gian kết nối sẽ chậm hơn

rất nhiều so với kết nối trực tiếp qua socket Tuy nhiên, với phương thức kết nối socket, ta phải tự xây dựng cách thức giao tiếp giữa máy trạm với máy chủ và máy chủ với máy khách

Do yêu cầu tối ưu về mặt thời gian được quan tâm hàng đầu, vì vậy phương thức được tối ưu cho hệ thống là xây dựng giao tiếp qua kết nối socket

4.2 Lựa chọn ngôn ngữ lập trình

Do phương thức kết nối được lựa chọn là kết nối socket, vì vậy cần một ngôn ngữ lập trình bậc cao để tiện cho việc xây dựng cách thức giao tiếp giữa máy chủ - máy trạm và máy chủ - máy khách Mặt khác, do các bộ giải có thể được cài đặt trên nhiều nền hệ điều hành khác nhau, nên cần có ngôn ngữ lập trình hỗ trợ việc chạy trên nhiều hệ điều hành khác nhau Chính vì các lý do này, nhóm nghiên cứu đã quyết định

sử dụng ngôn ngữ lập trình Java để xây dựng hệ thống

4.3 Xác định dữ liệu đầu vào, đầu ra của hệ thống

Để tăng hiệu năng của hệ thống giải bài toán SMT, hệ thống có sử dụng nhiều

các bộ giải khác nhau Tuy rằng mỗi bộ giải có một chuẩn đầu vào riêng, nhưng để tiện cho việc giải quyết vấn đề một cách nhanh chóng và hiệu quả, hệ thống chỉ sử dụng đầu vào bài toán SMT theo chuẩn của SMT-LIB Hiện nay, hầu hết các công cụ giải các bài toán đều hỗ trợ chuẩn SMT-LIB, vì vậy, để tránh việc phải chuẩn hóa đầu vào cho mỗi bài toán nhằm đảm bảo hiệu năng cao về mặt thời gian, hệ thống yêu cầu

Ngày đăng: 28/06/2014, 01:20

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w