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

ĐẠI HC QUC GIA HÀ NI  
TRƯỜNG ĐẠI HC CÔNG NGHỆ  
Hoàng Thế Tùng  
XÂY DNG HTHNG GII BÀI TOÁN SMT  
HIU NĂNG CAO – PHN MÁY TRẠ  
M
KHOÁ LUN TT NGHIP ĐẠI HC HCHÍNH QUY  
Ngành: Công nghphn mm  
Cán bhướng dn: TS. Trương Anh Hoàng  
Cán bộ đng hướng dn: TS. Phm Ngc Hùng  
HÀ NI - 2010  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Li cm ơn  
Trước hết, tôi xin gi li cm ơn chân thành và sâu sc đến Tiến sTrương  
Anh Hoàng Tiến sPhm Ngc Hùng, nhng người đã trc tiếp hướng dn tôi  
trong sut quá trình nghiên cu và phát trin đề tài nghiên cu này. Để được  
nhng kết qunghiên cu như hin nay, tôi vô cùng biết ơn squan tâm, hướng dn  
nhit tình ca hai thy trong thi gian va qua.  
Tôi xin chân thành cm ơn các thy cô trong trường Đại hc công ngh, Đại  
hc Quc Gia Hà Ni nói chung, và các thy cô trong khoa công nghthông tin nói  
riêng, nhng người đã nhit tình ging dy, giúp tôi có nhng kiến thc quý báu để tôi  
có thhoàn thành được đề tài lun văn này.  
Tôi xin bày tlòng cm ơn đến các anh chcao hc, và các bn trong nhóm  
nghiên cu đã cùng tôi tìm hiu và xây dng hoàn chnh hthng gii quyết bài toán  
Satisfiability Modulo Theories (SMT) vi hiu năng cao, giúp tôi có thhoàn thành tt  
phn nghiên cu ca mình.  
Và cui cùng, tôi xin gi li cm ơn đến gia đình, bn bè nhng người thân đã  
bên cnh, động viên giúp tôi hoàn thành tt lun văn ca mình.  
Hà Ni, tháng 05/2010  
Hoàng Thế Tùng  
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. Phm Ngc Hùng  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Tóm tt ni dung  
Vn đề gii quyết các bài toán Satisfiability Modulo Theories (SMT) hin nay  
đang được nghiên cu và phát trin nhiu nơi trên thế gii. Cho đến ngày nay, nhiu  
trường đại hc, tchc đã nghiên cu và đưa ra nhng bgii gii quyết bài toán  
SMT (hay còn gi là SMT solver). Ví dnhư Z3 ca Mcrosoft, yices ca SRI, CVC3  
ca mt strường đại hc danh tiếng ca M. hay boolector, openSMT ca mt số  
trường đại hc danh tiếng khác… Tuy nhiên, mi solver có mt li thế ưu đim riêng  
đối vi các dng khác nhau ca bài toán SMT. Vy vn đề đặt ra là làm sao để tn  
dng được hết các ưu đim đó cho tng bài toán.  
Để gii quyết vn đề ấy, nhóm nghiên cu đã nghiên cu và xây dng mt hệ  
thng gii quyết bài toán SMT trc tuyến, kết hp nhiu bgii khác nhau để đưa ra  
được li gii ti ưu cho tng bài toán SMT.  
Trong khuôn khkhóa lun tt nghip này ca cá nhân tôi, tôi đã xây dng hai  
hthng con ca hthng đã nêu trên là hthng trên máy khách (users) và trên máy  
trm (sdng để gi các Solver). Hthng trên máy khách sẽ đảm nhim vic cung  
cp mt giao din lp trình ng dng (Application Programming Interface hay API) để  
người dùng sdng có thxây dng bài toán SMT theo chun thư vin SMT (SMT-  
LIB) và sau đó là gi bài toán đến máy ch(server). Hthng trên máy trm stiếp  
nhn bài toán tmáy chvà gi các bgii để gii quyết bài toán đó và gi vmáy  
chkết qu.  
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. Phm Ngc Hùng  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Mc lc  
Chương 1. Mở đu..................................................................................................................1  
1.1. Gii thiu .....................................................................................................................1  
1.2. Bài toán đặt ra..............................................................................................................1  
1.3. Cu trúc ni dung tài liu.............................................................................................2  
Chương 2. Kiến thc nn tng................................................................................................3  
2.1. Gii thiu SMT............................................................................................................3  
2.2. Bgii SMT (SMT solver)..........................................................................................3  
2.3. Thư vin SMT (SMT-LIB)..........................................................................................4  
2.3.1. Cu trúc cơ bn ca SMT-LIB .............................................................................4  
2.3.2. Khuôn dng ca SMT-LIB...................................................................................5  
Chương 3. Phân tích hthng ..............................................................................................12  
3.1. Mô hình hthng.......................................................................................................12  
3.2. Mô hình ca sdng ca hthng ..............................................................................13  
3.3. Mô hình hot động.....................................................................................................15  
Chương 4. Phương hướng gii quyết vn đ........................................................................17  
4.1. La chn phương thc kết ni...................................................................................17  
4.2. La chn ngôn nglp trình......................................................................................17  
4.3. Xác định dliu đầu vào, đầu ra ca hthng..........................................................17  
Chương 5. Mô ththng....................................................................................................19  
5.1. Quy định cách thc giao tiếp vi máy ch................................................................19  
5.2. Phn máy khách.........................................................................................................20  
5.2.1. Quy định giao tiếp vi máy ch.........................................................................20  
5.2.2. Các lp ca hthng máy khách........................................................................21  
5.2.2.1. Lp config...................................................................................................21  
5.2.2.2. Lp Client: ..................................................................................................21  
5.2.2.3. Lp NetSolver.............................................................................................21  
5.2.2.4. Lp Bench_attribute....................................................................................22  
5.2.2.5. Lp Formula................................................................................................22  
5.2.2.6. Lp func_decl..............................................................................................23  
5.2.2.7. Lp pred_decl..............................................................................................24  
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. Phm Ngc Hùng  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
5.2.2.8. Lp Term.....................................................................................................24  
5.2.2.9. Lp annotation ............................................................................................24  
5.2.2.10. Lp varDecl ................................................................................................24  
5.2.2.11. Lp fvarDecl...............................................................................................24  
5.2.2.12. Lp Arith_symb..........................................................................................25  
5.2.2.13. Lp Identifier..............................................................................................25  
5.2.2.14. Lp quant_var.............................................................................................25  
5.3. Phn máy trm ...........................................................................................................26  
5.3.1. Cơ chế làm vic ca máy trm ...........................................................................26  
5.3.2. Quy định giao tiếp vi máy ch.........................................................................27  
5.3.3. Hot động ca hthng máy trm......................................................................28  
5.3.4. Các lp ca hthng máy trm ..........................................................................30  
5.3.4.1. Biu đồ lp ca hthng.............................................................................30  
5.3.4.2. Lp config...................................................................................................30  
5.3.4.3. Lp sessionID..............................................................................................30  
5.3.4.4. Lp Solver...................................................................................................31  
5.3.4.5. Lp ReadThread..........................................................................................31  
5.3.4.6. Lp WriteThread.........................................................................................34  
5.4. Tng kết .....................................................................................................................34  
Chương 6. Cài đặt và thnghim.........................................................................................36  
6.1. Cài đặt........................................................................................................................36  
6.2. Bài toán thc nghim.................................................................................................36  
6.2.1. Xây dng bài toán SMT da trên các hàm API..................................................36  
6.2.2. Thnghim kết ni vi máy chvà toàn hthng ............................................37  
Hướng phát trin tiếp theo ca hthng ..............................................................................40  
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. Phm Ngc Hùng  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Danh sách các bng trong tài liu  
Bng 1: Lut sinh mt toán hng................................................................................................7  
Bng 2: Lut sinh mt công thc................................................................................................8  
Bng 3: Lut sinh mt thuyết .....................................................................................................8  
Bng 4: Lut sinh mt logic .......................................................................................................8  
Bng 5 Lut sinh mt chun.......................................................................................................9  
Bng 6: Các lý thuyết nn được quy chun trong SMT-LIB 1.2 ...............................................9  
Bng 7: Các Logic quy chun được đưa ra trong SMT-LIB 1.2..............................................10  
Bng 8 Bng dliu các tp tin đầu vào thnghim...............................................................37  
Bng 9: Kết quthi gian ca thc nghim .............................................................................37  
Bng 10: Kêt qutrvca thc nghim ................................................................................38  
Danh sách các hình trong tài liu  
Hình 3.1 Mô hình hthng gii bài toán SMT hiu năng cao. ...............................................12  
Hình 3.2: Mô hình ca sdng ca hthng............................................................................14  
Hình 3.3: Mô hình hot động ca hthng.............................................................................15  
Hình 5.1: Biu đồ lp ca hthng máy trm.........................................................................30  
Danh sách tviết tt trong tài liu  
Tviết tt  
Tchun  
Din gii  
Các lý thuyết module về  
tính tha được  
SMT  
SMT-LIB  
API  
Satisfiability Modulo Theories  
Satisfiability Modulo Theories -  
Liblary  
Thư vin các lý thuyết  
module vtính tha được  
Giao din lp trình ng  
dng  
Application Programming  
Interface  
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. Phm Ngc Hùng  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Chương 1. Mở đầu  
1.1.Gii thiu  
Hin nay, cùng vi sphát trin bùng nca hu hết các ngành khoa hc,  
ngành khoa hc máy tính cũng có nhng tiến bto ln. Song song vi đó, nhu cn  
nghiên cu vvic gii hoc đưa ra tính khthi ca mt biu thc logic ngày càng  
được quan tâm và phát trin. Bi l, rt nhiu các ng dng hay nhng stính toán  
trong ngành khoa hc máy tính cn đến nhng công thc logic phc tp. Trong  
khong hai thp niên gn đây, ngành khoa hc máy tính đã có nhng tiến bln đối  
vi vic tự động chng minh hay bác btính đúng đắn ca mt biu thc logic. Tuy  
nhiên vic chng minh các biu thc logic skhó khăn hơn nhiu nếu đặt chúng trong  
mt nn lý thuyết thay vì chng minh mt cách tng quát [1,2]. Nhng vn đề này  
được gi là các lý thuyết module vtính tha được (Satisfiability Modulo Theories  
hay còn được viết tt là SMT [1]).  
Cho đến nay, nhiu trường đại hc cùng nhng nhà nghiên cu khoa hc máy  
tính đã có nhng nghiên cu, sn phm để gii quyết vn đề này. Tuy nhiên, vic xây  
dng mt bgii các vn đề SMT ti ưu cho mi trường hp và rt khó khăn. Vì vy,  
vn đề được đặt ra là kết hp các bgii SMT đó để được mt bgii ti ưu nht  
vmt thi gian.  
1.2.Bài toán đặt ra  
Đối vi vic gii quyết các vn đề SMT, nhiu trường đại hc cũng như các cơ  
quan, tchc ln trên thế gii đã có nhng nghiên cu và đưa ra nhng sn phm ca  
mình. Tuy nhiên, vi mi sn phm, họ đưa vào nhng thut toán khác nhau để gii  
quyết vn đề này. Trong khuôn khổ đồ án, vic nghiên cu cơ chế, và tính đúng đắn  
ca nhng bgii này không được đề cp đến (kết quả đưa ra ca các bgii sẽ được  
coi là luôn đúng đắn) mà stp trung vào vic sdng nhng bgii này như là  
nhng công cgii quyết vn đề SMT được đưa vào. Vi nhng kết quả đưa ra bi  
các bgii này, cn có mt kết trả được trvti ưu nht vmt thi gian.  
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. Phm Ngc Hùng  
Trang 1  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Để gii quyết vn đề nói trên, cn có mt hthng phân phi các vn đề SMT  
cho các bgii và nhn vkết qutrvti ưu nht vmt thi gian. Ngoài ra để tin  
cho vic sdng và phát trin hthng, cn có mt thư vin các hàm nhúng htrợ  
người sdng xây dng các vn đề SMT.  
1.3.Cu trúc ni dung tài liu  
Tài liu này nhm gii thiu vbài toán SMT và mô ththng gii quyết bài  
toán đó trc tuyến. Chương mở đầu ca tài liu gii thiu qua vbài toán SMT và bài  
toán đặt ra cho vic xây dng hthng gii quyết bài toán SMT đó.  
Chương thhai ca tài liu đề cp ti mt skiến thc vSMT và cu trúc,  
khuôn dng ca bài toán SMT được xây dng theo chun SMT-LIB. Chương này được  
coi là kiến thc nn tng để xây dng hthng gii quyết bài toán SMT hiu năng cao.  
Nhng kiến thc trong chương này sẽ được sdng để xây dng các hàm API cho hệ  
thng máy khách và mt sthành phn ca hthng máy trm.  
Chương ba và chương bn là phn phân tích và hướng gii quyết vn đề xây  
dng hthng gii bài toán SMT hiu năng cao. Chương ba stp trung hơn vào vn  
đề phân tích, đưa ra mt cái nhìn tng quan vhthng và quy trình hthng shot  
động. Chương bn slà mt sla chn gii pháp để gii quyết mt svn đề khi xây  
dng hthng.  
Hthng gii bài toán SMT hiu năng cao phn máy trm và máy khách sẽ được  
mô tchi tiết trong chương năm. chương này, hthng các hàm API trên máy khách  
sẽ được mô trt chi tiết và có thcoi là tài liu hướng dn cho người dùng sdng  
các hàm API này.  
Chương sáu sẽ đưa ra phn thc nghim và đánh giá kết quca hthng. Trong  
chương này, kết quca mt sthc nghim hthng sẽ được đưa ra nhm đưa ra mt  
số ưu đim mà hthng có được.  
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. Phm Ngc Hùng  
Trang 2  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Chương 2. Kiến thc nn tng  
2.1.Gii thiu SMT  
Tính tha mãn là mt trong nhng vn đề quan trng nht ca ngành khoa hc  
máy tính. Các vn đề cn tính tha mãn được ng dng trong cphát trin phn cng  
cũng như phn mm, đặc bit là kim định phn cng, kim th, lp lch, đồ th[3].  
Trong các lĩnh vc nói trên, nhiu các ng dng được xây dng da trên vic  
to ra các công thc tin tvà vic chng minh tính hp lca chúng. Cho dù hai thp  
niên gn đây, vic chng minh tính hp lca các định lý, biu thc tin tcó nhng  
tiến bộ đáng k, tuy nhiên, không phi công thc nào cũng có thchng minh mt  
cách tự động được. Lý do ca vn đề này là bi lnhiu công thc không quan tâm  
đến tính khthi trong trường hp tng quát mà chỉ được quan tâm trong mt lý thuyết  
nn tng [2,1]. Vic nghiên cu tính khthi ca các công thc trong mt lý thuyết nn  
tng được gi là các lý thuyết module vtính tha được (Satisfiability Modulo  
Theories hay SMT) và các công cụ để chng minh mt cách tự động các tính khthi  
ca nhng vn đề SMT được gi là bgii SMT (SMT solver).  
Lý thuyết vSMT sẽ được đề cp cthhơn trong phn gii thiu vthư vin  
SMT.  
2.2.Bgii SMT (SMT solver)  
Trên thc tế, vic xây dng và sdng các bgii SMT được phát trin khá  
sm, từ đầu nhng năm 1980. Ti thi đim đó, mt sbgii được xây dng bi  
Greg Nelson và Derek Oppent ti trường đại hc Stanford , Robert Shostak ti SRI, và  
Robert Boyer và J Moore ti trường đại hc Texas. Đến cui nhng năm 1990, vic  
nghiên cu SMT hin đại da trên li thế ca công nghSAT đã xây dng nhiu bộ  
gii SMT tiến bhơn [4].  
Như đã đề cp trên, trong khuôn khổ đồ án, vic đánh giá vtính đúng đắn,  
các nghiên cu vthut gii ca tng bgii skhông được đề cp đến. Vn đề được  
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. Phm Ngc Hùng  
Trang 3  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
đặt ra ở đây là kết quca bgii nào sẽ được đưa ra sm nht. Hin nay, có rt nhiu  
các bgii như Absolver, Boolector, CVC3, OpenSMT, Yices, Z3…  
Do yêu cu ca hthng là phi đưa ra được giá trtha mãn (nếu bài toán  
SMT đó có tha mãn) nên bgii hthng sdng phi htrchc năng này. Ngoài  
ra hthng sdng đầu vào theo chun ca SMT-Lib và ngt thi gian gii mt bài  
toán (trong trường hp bài toán cn thi gian gii quá ln), do đó, bgii cn phi có  
htrnhng chc năng này khi hot động. Tnhng yêu cu đó, nhóm nghiên cu và  
phát trin hthng đã quyết định sdng song song hai bgii là Yices ca SRI  
International và Z3 ca Microsoft. Hai bgii này tuy có cu trúc khác nhau nhưng  
cùng được da trên thut gii DPLL (Davis-Putnam-Logemann-Loveland) [5]. Vic  
tìm hiu, phân tích cu trúc cũng như thut toán ca hai bgii này skhông được đề  
cp cthể ở đây.  
2.3.Thư vin SMT (SMT-LIB)  
Đề gii quyết các vn đề SMT, vic nghiên cu và đưa ra mt chun đầu vào là  
rt cn thiết. Thông thường, mi bgii SMT đều có mt quy định riêng cho chun  
đầu vào ca mình, tuy nhiên như vy sthc skhó khăn đối vi vic thc thi mt đầu  
vào bi các bgii khác nhau. Vì vy, vic nghiên cu và đưa ra mt chun đầu vào  
thng nht là rt cn thiết.  
Khong tháng tư năm 2004, Silvio Rainise và Cesare Tinelli đã đưa ra chun về  
SMT-LIB đầu tiên [6]. Thi gian sau đó, hliên tc ci tiến chun đầu vào, bsung  
nhng quy định chun, thuyết mi. Cho đến nay, hai tác ginày đã và đang xây dng  
chun SMT-LIB đã có phiên bn 2.0, tuy nhiên vic xây dng đầu vào da trên chun  
mi này chưa được phbiến. Hu hết các bgii cũng như đầu vào cho các vn đề  
SMT-LIB đều được sdng bi chun 1.2 mà họ đã xây dng vào khong tháng 8  
năm 2006.  
2.3.1. Cu trúc cơ bn ca SMT-LIB  
Như đã nói trên, vn đề SMT là vic kim tra biu thc logic φ có tha mãn  
được hay không trong lý thuyết nn T hay có mt khuôn mu ca T là khthi. Vì vy,  
kiến trúc cơ bn ca mt SMT-LIB thường bao gm các vn đề sau [7]:  
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. Phm Ngc Hùng  
Trang 4  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
- Mt thtc logic cơ s(underlying logic): Định dng SMT-LIB hin ti có hai  
định nghĩa vngnghĩa ca logic cơ s. Thnht là dch nghĩa sang nhng  
biu thc tin tcổ đin, có nghĩa là thtc ca logic cơ sgiúp cho vic  
chuyn đổi sang khung làm vic ca công ccó sn hoc giúp kim tra kết quả  
mt cách ddàng hơn. Nghĩa thhai là chi phi ngnghĩa đại sda trên  
nhiu khuôn mu rút gn.  
- Mt lý thuyết nn (background theory): là nhng lý thuyết nn dùng để kim  
chng tính tha mãn. Nhng lý thuyết cơ bn bao gm lý thuyết sthc, lý  
thuyết mng.. Phiên bn hin ti ca SMT-LIB chhtrnhng lý thuyết cơ  
bn này.  
- Mt ngôn ngữ đầu vào (input language): Là lp các biu thc được chp nhn  
như đầu vào ca SMT-LIB.  
2.3.2. Khuôn dng ca SMT-LIB  
Mt thư vin SMT được xây dng theo chun và da trên nhng định nghĩa sau  
(theo [7]):  
Định nghĩa 1 (Ký hiu ca SMT-LIB – SMT-LIB signature): Mt ký hiu SMT-  
LIB Σ là mt bdliu bao gm:  
- Mt tp không rng  
͊ các ký hiu phân cp (sort symbol), mt tp  
hp ký hiu hàm (function symbol)  
̀ và tp hp các ký hiu vtừ  
(predicate symbol)  
͊;  
S
- Mt toàn ánh (total mapping) tcác biến (term variables) X ti Σ ;  
F
S +  
- Mt quan htoàn phương (total relation) từ Σ đến (Σ ) , mt chui các  
S
thành phn ca Σ , không bao gicó mt cp định dng (f,s1…sns) và  
(f,s1…sns’) vi s và s’ khác nhau;  
P
S
P
- Mt quan htoàn phương từ Σ ti (Σ )*, thtcác thành phn Σ .  
Định nghĩa 2 (Công thc trong SMT-LIB – SMT-LIB formula): Các công thc  
trong ngôn ngSMT-LIB là mt tp hp tt ccác công thc đúng cú pháp  
đóng (closed well-formed formula).  
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. Phm Ngc Hùng  
Trang 5  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Định nghĩa 3 (khai báo lý thuyết – theory decl): chtn ti mt khai báo lý  
thuyết trong mt bài toán SMT-LIB và phi tha mãn nhng gii hn sau:  
- Chúng bao gm các khai báo ca thuc tính “sort” và “definition”;  
- Chúng cha ít nht mt khai báo vi mt thuc tính;  
- Không tn ti khai báo định dng f,s1…sns và f,s1…sns’ cho cùng mt ký  
thàm f mà s và s’ khác nhau;  
- Tt ccác rút gn trong khai báo ký thàm, vtừ được lit kê trong khai  
báo thuc tính “sort”;  
- Định nghĩa ca lý thuyết được quy định trong thuc tính “definition” và  
chliên quan đến các khai báo ký tphân cp, ký thàm và ký tvt;  
- Công thc trong thuc tính “axiom” được xây dng trên các khái báo ký  
ttrong các thuc tính “sort”, “funs”, “pred”.  
Định nghĩa 4 (Khai báo Logic): Chcó mt lut Logic được khai báo trong mt  
bài toán SMT và phi được tha mãn các gii hn sau:  
- Chúng bao gm các khai báo thuc tính “theory” và “language”;  
- Chúng cha ít nht mt khai báo đối vi mt thuc tính;  
- Giá trca thuc tính “theory” phi trùng vi tên ca thuyết T cho vài khai  
báo ca DT trong SMT-LIB.  
Định nghĩa 5 (Khai báo vchun): lut khai báo chun phi tha mãn nhng  
gii hn sau:  
- Chúng cha chính xác mt khai báo ca thuc tính “logic”, “formula” và  
“status”;  
- Giá trca thuc tính “logic” phi trùng khp vi tên ca logic L cho vài  
khai báo DL trong SMT-LIB;  
- Mi mt ký hiu được khai báo trong thuc tính “extrasorts”, “extrafuns”  
và “extrapred” cn phi là mt phn ca các ký hiu được định nghĩa trong  
thuc tính “language” ca logic L;  
- Có thcó hơn mt khai báo ca thuc tính “extrasort”;  
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. Phm Ngc Hùng  
Trang 6  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
- Có thcó hơn mt khai báo ca thuc tính “extrafuns”, và mi thuc tính  
“funs” ca khai báo thuyết liên kết ti DL phi tha mãn yêu cu 3 ca  
định nghĩa 3;  
- Ký hiu rút gn trong khai báo “extrafuns” hoc “extrapred” hoc được  
khai báo trong “extrasort” hoc thuc vký hiu ca logic L;  
- Công thc trong khai báo thuc tính “assumption” và “formula” là ngôn  
ngca L và các ký hiu ca chúng được khai báo trong thuc tính  
“extrasorts” “extrafuns” và “extrapred”.  
Tnhng định nghĩa trên, vic xây dng mt bài toán SMT da trên chun  
SMT-LIB stheo cu trúc sau [7]:  
Bng 1: Lut sinh mt toán hng  
(1) < simple_identifier>  
::= Chui các ký t, s, du chm(.), nháy đơn(‘)  
và gch dưới , bt đầu bi ký tự  
(2) < user_value_content> ::= Bt kchuký tcó thin ra được  
(3) < user_value>  
(4) <numeral>  
(5) <rational>  
(6) <indexed_identifier>  
(7) <identifier>  
(8) <var>  
::= {< user_value_content>}  
::= 0 | chui không rng các chsbt đầu khác 0  
::= <numeral>.0*<numeral>  
::= < simple_identifier>[<numeral>(:<numeral>)*]  
::= <simple_identifier> | <indexed_identifier>  
::= ?< simple_identifier >  
(9) <fvar>  
::= $< simple_identifier >  
(10) <attribute>  
(11) <arith_symb>  
::= : <simple_identifier>  
::= Chui không rng các ký t:  
=, >, <, &, @, #, +, -, *, /, %, |, ~  
(12) <funs_symb>  
(13) <pred_symb>  
(14) <sort_symb>  
(15) <annotation>  
(16) <base_term>  
(17) <an_term>  
::= <identifier> | <arith_symb>  
::= <identifier> | <arith_symb> | distinct  
::= <identifier>  
::= <attribute> | <attribute> < user value>  
::= <var> | <numeral> | <rational> | <identifier>  
::= <base_term> | (<base_term> <annotation>+)  
| (<funs_symb> <an_term>+ <annotation>*)  
| (ite <an_formula> <an_terrm> <an_term>  
<annotation>*)  
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. Phm Ngc Hùng  
Trang 7  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Bng 2: Lut sinh mt công thc  
(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>  
(6) <an_formula> ::= <an_atom>  
| ( <connective> <an formula>+ <annotation>* )  
(<quant_symb> <an_formula>  
<quant_var>+  
<annotation>* )  
::= ( <var> <sort_symb>)  
|
| (let (<var> <an_term>) <an_formula> <annotation>*  
)
| ( flet ( <fvar> <an_formula> ) <an_formula>  
<annotation>* )  
Bng 3: Lut sinh mt thuyết  
(1) <string_content>  
(2) <string>  
(3) <fun_symb_decl>  
::= chui liên tiếp các ký tự  
::= “<string_content>”  
::= (<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>  
(6) <theory_attribute>  
::= <identifier>  
::= :sort ( <sort_symb>+)  
| :funs (<fun_symb_decl>+)  
| :preds (<pred_symb_decl>)  
| :definition <string>  
| :axioms <string>  
| <annotation>  
(7) <theory>  
::= (theory <theory_name> <theory_atrribute>+)  
Bng 4: Lut sinh mt logic  
(1) <logic_name>  
::= <identifier>  
(2) <logic_attribute>  
::= : theory <theory_name>  
| :language <string>  
| :extensions <string>  
| :notes <string>  
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. Phm Ngc Hùng  
Trang 8  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
| <annotation>  
(3) <logic>  
::= (logic <logic_name> <logic_attribute>+)  
Bng 5 Lut sinh mt chun  
(1) <status>  
(2) <bench_name>  
(3) <bench_attribute>  
::= sat | unsat | unknown  
::= <identifier>  
::= :logic <logic_name>  
| :assumption <an_formula>  
| :formula <an_formula>  
| :status <status>  
| :extrasorts ( <sort_symb>+ )  
| :extrafuns ( <fun_symb_decl>+ )  
| :extrapreds ( <pred_symb_decl>+ )  
| :notes <string>  
| <annotation>  
(4) benchmark  
::= ( benchmark <bench_name> <bench attribute>+ )  
Các lý thuyết nn cơ bn đã được nghiên cu và đưa ra:  
Bng 6: Các lý thuyết nn được quy chun trong SMT-LIB 1.2  
Các hàm mng  
Arrays  
Các hàm mng mrng  
ArraysEx  
Bit vector 32 bit  
Fixed_Size_BitVectors[32]  
Fixed_Size_BitVectors  
BitVector_ArraysEx  
Bit vector vi kích ctùy ý.  
Bit vector vi kích ctùy ý và mng cha kiu  
dliu bit vector  
Thuyết trng vi ký hiu rng  
Snguyên  
Empty  
Ints  
Mng snguyên  
Int_Arrays  
Int_ArraysEx  
Mng giá trị được đánh thtsnguyên vi tin  
đề mrng  
Mng ca mng các snguyên và sthc vi tin  
đề mrng  
Int_Int_Real_Array_ArraysEx  
Sthc  
Reals  
Snguyên và sthc  
Reals_Ints  
Ni dung cthca tng lý thuyết xin được không đề cp đến ở đây để tránh  
vic trình bày lan man không cn thiết.  
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. Phm Ngc Hùng  
Trang 9  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Các logic cơ bn được áp dng trong định dng ca SMT-LIB:  
Bng 7: Các Logic quy chun được đưa ra trong SMT-LIB 1.2  
Các công thc tuyến tính trên thuyết mng snguyên vi  
nhng ký tphân cp, hàm và thuc tính tdo.  
Các công thc tuyến tính vi ký hiu hàm và ký hiu vtừ  
trong thuyết 10 nêu trên  
AUFLIA  
AUFLIRA  
Công thc vi các ký thàm và vttdo da trên thuyết 10  
Công thc tuyến tính trên các phép toán snguyên  
Công thc tuyến tính trên các phép toán sthc  
Công thc lượng ttdo trên thuyết mng không mrng  
Công thc lượng ttrên thuyết bitvector và mng bitvector vi  
các ký hiu hàm và ký hiu vttdo.  
AUFNIRA  
LIA  
LRA  
QF_A  
QF_AUFBV  
Công thc tuyến tính và lượng ttdo trên thuyết mng các số  
nguyên vi ký tphân cp, ký thàm và ký tlượng t.  
Công thc lượng ttdo trên thuyết ca mng mrng  
Công thc lượng ttdo vi thuyết bitvector cố định kích cỡ  
Logic khác trên snguyên. Ví dbt đẳng thc x-y <b vi x,y  
là các biến nguyên và b là mt hng snguyên  
Thp gia bt đẳng thc ca đa thc tuyến tính trên biến số  
nguyên  
QF_AUFLIA  
QF_AX  
QF_BV  
QF_IDL  
QF_LIA  
Thp bt đẳng thc gia đa thc tuyến tính trên biến sthc  
Thp bt đẳng thc gia đa thc tuyến tính trên biến số  
nguyên vi ít nht mt đa thc không tuyến tính  
Logic khác ca sthc, ví dbt đẳng thc x – y < b vi x,y là  
sthc và b là mt hng shu tỷ  
QF_LRA  
QF_NIA  
QF_RDL  
Công thc vô lượng hóa (Unquantified formulas) xây dng  
trên ký hiu ca ký tphân cp, ký thàm, ký tvtkhông  
Logic khác trên snguyên nhưng vi nhng ký tphân cp, ký  
thàm, ký tvtkhông được gii thích  
QF_UF  
QF_UFIDL  
QF_UFBV  
QF_UFLIA  
QF_UFLRA  
QF_UFNRA  
Công thc vô lượng hóa trên kiu bitvectors vi ký thàm và  
ký tvt.  
Phép tính snguyên vô lượng hóa tuyến tính vi ký tphân  
cp, ký thàm và ký tvtừ  
Phép tính sthc vô lượng hóa tuyến tính vi ký tphân cp,  
ký thàm và ký tvtừ  
Phép tính sthc vô lượng hóa không tuyến tính vi ký tự  
phân cp, ký thàm và ký tvtừ  
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. Phm Ngc Hùng  
Trang 10  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Phép tính snguyên không tuyến tính vi ký tphân cp, hàm  
và vtkhông xác định.  
UFNIA  
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. Phm Ngc Hùng  
Trang 11  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Chương 3. Phân tích hthng  
3.1.Mô hình hthng  
Để gii mt bài toán SMT mt cách song song gia các bgii, đồng thi đảm  
bo được hiu năng cao cho hthng, nhóm nghiên cu đã đưa ra hướng gii quyết là  
xây dng hthng gii quyết vn đề SMT trc tuyến qua mng. Hthng sẽ được chia  
ra làm ba phn rõ rt là phn máy khách gi yêu cu gii quyết vn đề, phn máy chủ  
xlý và phân phi các vn đề nhn được, và phn máy trm gii quyết vn đề được  
yêu cu. Mô hình hthng được xây dng như sau:  
Hình 3.1 Mô hình hthng gii bài toán SMT hiu năng cao.  
Vic xây dng phát trin hthng gii quyết vn đề SMT trc tuyến sẽ đáp ng  
được yêu cu vhiu năng xđầu vào. Hthng stiếp nhn mt lúc nhiu vn đề  
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  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
t
nhiu người sử  
cho tt ccác bgii và chờ đợi kết qutrả  
cho phía yêu cu. Đối vi nhng bgiả đưa ra kết qusau snhậ  
lý vấ đề đó. Do hthng được xây dng trc tuyến, nên vic nhn cùng mt lúc  
nhiu yêu cu cn xlý là  
chia mt vấ đề cho nhiu máy trm xlý, va phi xđồng thi cùng lúc nhiề  
yêu cu như  
d
ng trc tuyến. Vi mi vấ  
n
đề nhậ  
n
được, hthng sphân phố  
t thi gian để trả  
được tín hiu dng  
i
v
t
i
ưu nht về  
m
v
i
n
x
n
đ
i
u tt yếu, vì vy, hthng máy chủ  
v
a  
đảm nhn việ  
c
n
u
v
y. Vphía máy trm, mi máy trm sluôn nhn và xlý nhiu các  
t lúc và phi trả ết qutương ng cho mi vấ đề. Để tin cho người sử  
ng bên phía máy khách, hthng cn phi có mt thư vic các hàm nhúng API để  
ng trc tiếp xây dng vấ đề SMT và gi lên phía máy chủ  
v
d
n
đề  
m
v
k
n
người sử  
d
n
.
3.2.Mô hình ca s  
d
ng c  
a hệ  
th ng  
Đối vi hai hthng con được cài đặt trên máy khách và máy trm, thì máy chủ  
được coi như là mt tác nhân trung gian giúp duy trì tương tác gia chúng vi nhau.  
Sinh viên: Hoàng Th  
ế
Tùng – K51CNPM – Khoa CNTT -  
GV  
Đ
H Công ngh  
-
Đ
H QGHN  
GVHD: TS. Trương Anh Hoàng  
ĐHD: TS. Ph  
m Ng c Hùng  
Trang 13  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Hình 3.2: Mô hình ca sdng ca hthng  
phía máy khách (user), người sdng sto bài toán SMT, hoc chỉ định cho  
hthng tp tin SMT cn thiết phi kim tra tính tha mãn để hthng sgi lên phía  
máy ch(server). Sau khi gi bài toán lên phía máy ch, hthng trên máy khách sẽ  
chcho máy chgi kết quvvà nhn kết qutrv. Viêc gi bài toán SMT bên  
phía máy khách sbao gm cvic gi yêu cu thi gian ngt ca các bgii SMT.  
Vi máy trm (solver) sau khi kết ni và nhn được tp tin cha vn đề SMT  
cn gii quyết, hthng sgi lnh chy các công cgii SMT. Sau khi đưa ra được  
kết qu, hoc sau khi nhn được tín hiu ngt tphía máy ch, máy trm sgi li kết  
quả đến máy chủ để máy chgi li phía máy khách.  
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  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
3.3.Mô hình hot động  
Hình 3.3: Mô hình hot động ca hthng  
Tbiu đồ hot động ca hthng, ta có thxác định được các công vic tun  
tca hthng và cách làm vic ca hthng như sau:  
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  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Khi hthng hoạ  
toán SMT. Bài toán SMT có thể đã được mô tả  
chương trình vi vic sử ụng hthng được cài đặt trên. Sau khi xác định bài toán  
SMT, hthng máy khách sẽ ửi bài toán toán đó cho máy chủ đồng thi gi thông tin  
thi gian gii hn thc hin gii bài toán và chờ đợi kết qutrphía máy chủ  
t
động, các máy khách sẽ  
k
ết nố  
i
đến máy chvà xây dng bài  
b
ng tp tin hay được xây dng bng  
d
g
v
v
từ  
.
Máy chủ  
tham sthi gian thc hin bài toán gi tmáy khách, máy chủ  
bài toán đó cho các máy trm có bgii các bài toán SMT đang kết nố  
đón chờ ết quphn hi tmáy trm.  
l
ng nghe các kết ni ca máy khách, khi nhậ  
n
được bài toán SMT và  
v
sẽ  
phân phi các  
i
đến máy chủ  
k
Máy trm snhn bài toán tmáy chvà bắ  
khi đó giá trị  
máy trm gi các bgiả  
ra tiếp sau đó. Trường hp mt là máy trạ  
phía máy chủ  
có máy trm khác gử  
đang được thc thi sẽ được gi. Và  
máy chủ ữa.  
t
đầu vic thc hin gii bài toán,  
v
trthi gian cho mi bài toán sẽ được sử  
d
ng. Sau khi hthng trên  
đề được đưa ti, scó hai trường hp xả  
đó sgii ra kết qunhanh nht và gi về  
được tín hiu ngt tiến trình (do  
được kết quả đến máy ch), khi đó, mt lnh ngt tiến trình  
trường hp này, máy trm không gi gì vphía  
i
để gii quyết vấ  
n
y
m
k
ết qu. Trường hp thhai là nhậ  
n
đ
ã
i
n
Phía máy khách sau khi nhậ  
n
được kết quả  
c
a hthng shin thcho người  
đến.  
dùng thấ được kết quả ủa bài toán mà hthng gi  
y
c
Sinh viên: Hoàng Th  
ế
Tùng – K51CNPM – Khoa CNTT -  
GV  
Đ
H Công ngh  
-
Đ
H QGHN  
GVHD: TS. Trương Anh Hoàng  
ĐHD: TS. Ph  
m Ng c Hùng  
Trang 16  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Chương 4. Phương hướng gi  
i quy  
ế
t v  
n  
đề  
4.1.L  
a chn phương th  
c kết nố  
i
Bài toán được đặt ra là xây dng hthng trc tuyến, vì vy cn có phương  
thc kết ni phù hp vi nhng yêu cầ được nêu ra trong phn trên. Có hai  
phương thc kết nố được đưa ra la chn là xây dng hthng da trên các kết nố  
a webservice hoc sử ụng kết ni socket.  
u
đ
ã
i
i
c
d
Đối vi phương thc kết ni da trên webservice, thi gian kết ni schm hơ  
n
r
t nhiu so vi kết ni trc tiếp qua socket. Tuy nhiên, vi phương thc kết nố  
socket, ta phi txây dng cách thc giao tiếp gia máy trm vi máy chvà máy chủ  
i máy khách.  
i
v
Do yêu cu tố  
i
ưu về  
mt thi gian được quan tâm hàng đầu, vì vy phương  
thc  
được tố ưu cho hthng là xây dng giao tiếp qua kết ni socket.  
i
4.2.L  
a chn ngôn ng  
l
p trình  
Do phương thc kết nố  
i
được la chn là kết ni socket, vì vy cn mt ngôn  
ngữ  
lp trình bc cao để tin cho vic xây dng cách thc giao tiếp gia máy chủ  
-
máy trm và máy ch- máy khách. Mt khác, do các bgii có thể được cài đặt trên  
nhiu nn hệ điu hành khác nhau, nên cn có ngôn ngữ ập trình htrvic chy trên  
nhiu hệ điu hành khác nhau. Chính vì các lý do này, nhóm nghiên cứ đã quyế định  
ng ngôn ngữ ập trình Java để xây dng hthng.  
l
u
t
sử  
d
l
4.3.Xác định d  
li  
u  
đầu vào, đầu ra c  
a hệ  
th ng  
Để  
t
ăng hiu năng ca hthng gii bài toán SMT, hthng có sử  
các bgii khác nhau. Tuy rng mi bgii có mt chuẩ đầu vào riêng, nhưng để  
tin cho vic gii quyết vấ đề t cách nhanh chóng và hiu qu, hthng chỉ  
ng đầu vào bài toán SMT theo chun ca SMT-LIB. Hin nay, hu hết các công cụ  
gii các bài toán đều htrchun SMT-LIB, vì vy, để tránh vic phi chun hóa đầu  
vào cho mi bài toán nhằ đảm bo hiu năng cao về ặt thi gian, hthng yêu cầ  
dng nhiu  
n
n
m
s
d
m
m
u
Sinh viên: Hoàng Th  
ế
Tùng – K51CNPM – Khoa CNTT -  
GV  
Đ
H Công ngh  
-
Đ
H QGHN  
GVHD: TS. Trương Anh Hoàng  
ĐHD: TS. Ph  
m Ng c Hùng  
Trang 17  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
đầu vào ca người sử  
d
ng phả  
i
đáp ng nghiêm ngt các  
điu kin xây dng mt bài  
toán dưới quy chn ca SMT-LIB.  
H
thng được chia ra thành ba thành phn vi chc năng và vai trò khác nhau,  
do đó vi mi hthng con scó mộ đầu vào đầu ra riêng ng vi tng chc năng  
a hthng con đó.  
t
c
V
i hthng được cài đặt trên máy khách, người dùng sẽ đưa vào tp tin chứ  
bài toán SMT hoc xây dng bài toán SMT da trên các hàm nhúng API mà hthng  
xây dng. Bài toán sẽ được gi lên máy chvà chmáy chphn hi về ết quả  
a
k
.
Đối vi hthng được cài đặt trên máy chủ  
,
đầu vào nhn tmáy khách (bài  
toán SMT) sđầu ra chuyn ti máy trm. Và đầu vào thhai là kết qunhậ  
n
được  
t
máy trm cũng là đầu ra để chuyn ti máy khách.  
Trên máy trm có duy nht mt bộ  
d
liu đầu vào là bài toán SMT nhậ  
n
được  
t
máy chvà mt bliệ đầu ra duy nht là kết quả  
d
u
c
a vic gii bài toán SMT  
đó.  
Sinh viên: Hoàng Th  
ế
Tùng – K51CNPM – Khoa CNTT -  
GV  
Đ
H Công ngh  
-
Đ
H QGHN  
GVHD: TS. Trương Anh Hoàng  
ĐHD: TS. Ph  
m Ng c Hùng  
Trang 18  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Chương 5. Mô t  
hệ  
th ng  
Hthng gii bài toán SMT hiu năng cao được chia làm ba hthng con vi chc  
năng và tác dng riêng. Trong gii hn tài ca tài liu này, hthng con cài đặt trên  
máy chskhông được đề cp đến. Trong phn này, hthng cài đặt trên máy khách  
và máy trm sẽ đươc gii thích và mô tchi tiết.  
5.1.Quy định cách th  
c giao ti  
ếp v  
i máy ch  
Do hthng hoàn toàn được xây dng bng phương pháp kết ni socket, vì vậ  
n phi có mt cách thc giao tiếp phù hp gia các hthng con vi nhau. Da trên  
ý tưởng ca ngôn ngXML, nhóm nghiên cứ đưa ra và thng nht vic sử ụng  
các thẻ đươc quy định sẵ để giao tiếp gia các hthng con vi nhau.  
y
c
u
đ
ã
d
n
Các thsẽ được định nghĩ  
a
đúng như quy chun ca XML vi quy định sau:  
- Thcó dng <tên thẻ  
m
s
>
- Thẻ đóng scó dng </tên thẻ  
Đối vi thẻ đơn thì không cn có thẻ đóng.  
th, các thẻ được quy định trong hthng như sau:  
>
C
- Cp thẻ  
thng vi nhau.  
- Cp thfile> </file>: thhin vic bắ  
<
hello> </hello> : thhin sbt tay kết ni gia các thành phn trong  
h
<
t
đầu chuyn dliu ttp tin cha bài  
toán SMT gia các hthng con trong hthng  
- Cp th<result> </result>: thhin ni dung kết quả  
c
a bài toán SMT được  
trả  
- Thẻ đơn <destroy>: là tín hiu ngt kết nố  
- Thẻ đơn <exit>: ththin sự  
v
i
được máy chủ  
g
i
đến máy trm  
k
ết thúc kết ni gia người dùng vi máy chủ  
Sinh viên: Hoàng Th  
ế
Tùng – K51CNPM – Khoa CNTT -  
GV  
Đ
H Công ngh  
-
Đ
H QGHN  
GVHD: TS. Trương Anh Hoàng  
ĐHD: TS. Ph  
m Ng c Hùng  
Trang 19  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
5.2.Ph n máy khách  
5.2.1. Quy định giao tiếp vi máy chủ  
Yêu cu chính cho hthng cài đặt trên máy khách là gi bài toán SMT và  
nhn về  
k
ết quả  
ca bài toán y. Quy trình kết ni ca máy khách vi máy chủ  
sẽ  
như sau:  
- Sau khi kết nố được máy ch, máy khách sẽ đưa ra mt lot thchào hi  
i
<hello>  
[Name]  
</hello>  
- Sau chui các thẻ được gi lên máy ch, máy khách schờ đến khi máy chủ  
đáp li “OK”. Sau đó, hthng trên máy khách sthc hin tiến trình gi trễ  
thi gian (time out) gii bài toán SMT cn gii. Trthi gian này được người sử  
d
ng quy định và đưa vào.Trong trường hp người dùng không thiết lp thông  
tin này, thì hthng sẽ ửi lên thi gian mặ định là 30 giây. Quá trình gi trễ  
g
c
thi gian được quy định như sau:  
<timeout>  
[trthi gian]  
</timeout>  
- Sau khi gi lên thi gian gii hn thc thi ca bài toán, hthng stiếp tc gử  
i
lên tp tin dliu cha ni dung bài toán. Quy trình gi tp tin dliu cũng  
được theo quy định sau:  
<file>  
[Ni dung dliu chuyn lên]  
</file>  
- Sau quá trình gi tp tin dliu thành công, hthng trên máy khách chờ  
k
ết  
quả  
ca máy chtrả  
v
. Khi nhậ  
n
được tín hiu trả  
v
( tín hiu kết qutrả  
v
được quy định là thẻ  
m
<result>) hthng snhn cho đến khi có tín hiu kết  
thúc (thẻ đóng </result>):  
<result>  
[ni dung kết qutrv]  
</result>  
Sinh viên: Hoàng Th  
ế
Tùng – K51CNPM – Khoa CNTT -  
GV  
Đ
H Công ngh  
-
Đ
H QGHN  
GVHD: TS. Trương Anh Hoàng  
ĐHD: TS. Ph  
m Ng c Hùng  
Trang 20  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
- Sau khi đã nhậ  
chủ  
Như đã đề  
chun hóa đầu vào, hthng yêu cu người sử  
chun ca SMT-LIB. Vấ đề đặt ra ở đây là không phi lúc nào người sử  
ũng có sn bài toán SMT được tchc theo quy chun ca STM-LIB. Chính  
vì vy, hthng cn phi xây dng các hàm API để người dùng có thxây  
ng bài toán theo đúng chuẩ định dng ca SMT-LIB.  
n
được kết qu, máy khách schủ động ngt kết ni đến máy  
.
c
p  
trên, để tránh vic lãng phí thi gian ca hthng cho việ  
ng đưa vào đầu vào theo đúng  
ng  
c
d
n
d
c
d
n
D
a vào các định nghĩa và quy chun về đầu vào ca bài toán SMT theo chuẩ  
SMT-LIB (được nêu trong phn kiến thc nn tng), hthng đưa ra các hàm API  
để thun tin cho người sử ụng đưa vào.  
n
đ
ã
d
5.2.2. Các lp ca hthng máy khách  
5.2.2.1. Lp config: p này được xây dng để cha các quy ước việ  
giao tiếp cũng như các thành phn mặ định ca hthng như các thẻ  
tên tp tin đầu vào mặ định, thi gian ngt mặ  
liệ được trả  
5.2.2.2. Lp Client: Có chc năng mở  
máy chvà nhn về ết quả  
5.2.2.3. Lp NetSolver: bao gm các hàm thiết lp tùy chn cho người sử  
ng. Cthể  
void setPath (String Path): Thiết lậ  
Có thlà mộ đường dẫ đến mt tp tin sẽ được xây dng sau đó bở  
chính người sử ụng. Hoc cũng có thlà mt tp tin đã cha nộ  
dung bài toán SMT cân gi lên máy chủ  
void setOutput (String Path): Thiết lậ đường dn cho tp tin lưu giữ  
ết quả được trả ề. Xin lưu ý rng vic thiết lậ đường dn bao gồ  
tên tp tin.  
void Solve (): thc thi vic gi và nhn bài toán SMT. Thc cht hàm  
này chỉ ọi mộ đối tượng ca lp Client và thc thi đối tượng y.  
l
c
c
,
c
c
định, tên tp tin chứ  
a
d
u
v
k
ết ni, gi bài toán ttp tin lên  
k
.
d
:
-
p
đường dn cho tp tin đầu vào.  
t
n
i
d
i
.
-
-
p
k
v
p
m
cả  
g
t
Sinh viên: Hoàng Th  
ế
Tùng – K51CNPM – Khoa CNTT -  
GV  
Đ
H Công ngh  
-
Đ
H QGHN  
GVHD: TS. Trương Anh Hoàng  
ĐHD: TS. Ph  
m Ng c Hùng  
Trang 21  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
Vic xây dng bài toán SMT sẽ  
i các lp sau. Xin lưu ý rng các hàm API được xây dng hoàn  
toàn da trên blut cú pháp ca ngôn ngữ đầu vào SMT được  
đưa ra trên.  
da trên các hàm API được xây dng  
b
đ
ã
5.2.2.4. Lp Bench_attribute: Được xây dng da trên bng 5.  
-
Bench_attribute (String Bench_name)  
:
Định nghĩa mt thuc tính  
Benchmark đầu vào vi tên là Bench_name.  
Void setLogic (String LogicName): thiết lp tên logic ca Benchmark  
void setStatus (String stt) : thiết lp thuc tính Status cho Benchmark  
void setFormulas (Formula F): thiết lp Formula cho Benchmark.  
void setAssumtion (Formula f): thiết lp Assumtion cho Benchmark  
void setAnnotation (annotation an): thiết lp Annotation cho  
Benchmark  
-
-
-
-
-
-
-
void setNotes (String note): thiết lp Note cho Benchmark  
void setExtrasorts (Identifier[] id): Thiết lp Extrasorts cho  
Benchmark  
-
-
-
void setExtrafuns (func_decl[] funcs): Thiết lp Extrafuns cho  
Benchmark  
void setExtrapreds (pred_decl[] preds): thiết lp Extrapreds cho  
Benchmark  
void printBench (): ghi Benchmark va thiết lp ra tp tin được chỉ  
định  
5.2.2.5. Lp Formula: Được xây dng da trên bng 2 để đưa ra các  
công thc trong bài toán SMT, Các hàm htrxây dng bao gm:  
-
-
-
Formula (boolean b): khai báo mt Formula vi giá trlà giá trị  
t biến logic  
c
a
m
Formula (fvarDecl fvar): Khai báo mt Formula vi giá trlà mộ  
t
khai báo hàm.  
Formula (Identifier id): khai báo mt Formula vi giá trlà mộ định  
t
danh Identifier.  
Sinh viên: Hoàng Th  
ế
Tùng – K51CNPM – Khoa CNTT -  
GV  
Đ
H Công ngh  
-
Đ
H QGHN  
GVHD: TS. Trương Anh Hoàng  
ĐHD: TS. Ph  
m Ng c Hùng  
Trang 22  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
-
-
Formula (Identifier id, Term te[]): khai báo mt Formula từ  
danh Identifier và mt mng không rng các phn tTerm  
m
t
định  
Formula (Arith_symb ar, Term te[]): khai báo mt Formula từ  
m
t
(hoc mt chui) các phép toán và mt mng không rng các phn tử  
Term  
-
-
Formula (Term te[]): khai báo mt Formula vi tkhóa “distinct” và  
m
t mng không rng các phn tTerm  
void Setvalue (String val): đặt giá trị ủa Formula theo tùy biến ( khi  
ng không thxây dng da trên các hàm  
c
công thc ca người sử  
API trong lp formula)  
d
-
-
-
-
-
-
-
-
Formula orOperator (Formula a1, Formula a2): phép “or” gia hai  
công thứ  
Formula xorOperator (Formula a1, Formula a2): phép “xor” gia hai  
công thứ  
Formula iffOperator (Formula a1, Formula a2): phép “iff” gia hai  
công thứ  
Formula impliesOperator (Formula a1, Formula a2): phép “implies”  
gia hai công thứ  
Formula existsFomular (quant_var[] qv, Formula f): công thứ  
xây dng vi tkhóa “exists  
c
c
c
c
c
c
được  
được  
Formula forallFomular (quant_var[] qv, Formula f): công thứ  
xây dng vi tkhóa “forall”  
Formula letFormula (varDecl var,Term t, Formula f): công thứ  
được xây dng vi tkhóa “let”  
c
Formula fletFormula (fvarDecl fvar,Formula f1, Formula f2): công  
thứ được xây dng vi tkhóa “flet  
5.2.2.6. Lp func_decl: khai báo mt hàm ca bài toán SMT, được xây  
ng da trên (3) bng 3.  
c
d
-
func_decl (double d, Identifier id): khai báo mt hàm tgiá trị  
thc và định danh Identifier  
mt số  
Sinh viên: Hoàng Th  
ế
Tùng – K51CNPM – Khoa CNTT -  
GV  
Đ
H Công ngh  
-
Đ
H QGHN  
GVHD: TS. Trương Anh Hoàng  
ĐHD: TS. Ph  
m Ng c Hùng  
Trang 23  
Xây dng hthng gii bài toán SMT hiu năng cao – Phn máy trm 2010  
-
-
func_decl (Identifier id1, Identifier[] id): khai báo mt hàm tgiá trị  
định danh Identifier và mt mng không rng định danh Identifier  
mộ  
t
func_decl (Arith_symb ar,Identifier[] id): khai báo mt hàm từ  
hoc chui các phép toán và mng không rng các định danh id  
m
t
5.2.2.7. Lp pred_decl: khai báo mt vị  
ng da trên (4) bng 3  
t
ca bài toán SMT, được xây  
d
-
-
-
pred_decl (Identifier[] id): khai báo mt vị  
t
v
i giá trca mt dnh  
danh id  
pred_decl (Arith_symb ar, Identifier[] id): khai báo mt vị  
t
t
m
t
t
(hoc mt chui) các phép toán ar và mt mng các định danh id  
pred_decl (Identifier id1, Identifier[] id): khai báo mt vị  
đinh danh id1 và mng các định danh id  
t
t
m
5.2.2.8. Lp Term: được xây dng da trên bng 1.  
-
-
-
-
Term (varDecl v): khái báo mt term tkhai báo ca mt biến v  
Term (double d): khai báo mt term tgiá trị ủa mt sthc d  
Term (Identifier i): khai báo mt term từ đinh danh i  
c
mộ  
t
Term iteOperator (Formula f, Term t1, Term t2): toán tử  
ite” củ  
a
Term  
5.2.2.9. Lp annotation: được xây dng da trên (15) bng 1, dùng để  
khai báo mt ghi chú trong bài toán SMT. Có hai cách khai báo như  
sau:  
-
-
annotation (String attribute): khai báo ghi chú vi chui ký tự  
attribute  
annotation (String attribute, String user_value): khai báo ghi chú vớ  
i
chui ký tthuc tính attribute và user_value  
5.2.2.10. Lp varDecl: Dùng để khai báo mt biến trong bài toán SMT.  
Được xây dng da trên (8) bng 1  
-
varDecl (String v): khai báo biến vi chui v  
5.2.2.11. Lp fvarDecl: được xây dng da trên (9) bng 1.  
fvarDecl (String fv): dùng để khai báo fvar vi chui fv  
-
Sinh viên: Hoàng Th  
ế
Tùng – K51CNPM – Khoa CNTT -  
GV  
Đ
H Công ngh  
-
Đ
H QGHN  
GVHD: TS. Trương Anh Hoàng  
ĐHD: TS. Ph  
m Ng c Hùng  
Trang 24  

Tải về để xem bản đầy đủ

pdf 47 trang yennguyen 05/07/2025 80
Bạn đang xem 30 trang mẫu của 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", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfkhoa_luan_xay_dung_he_thong_giai_bai_toan_smt_hieu_nang_cao.pdf