Chương 5. THỬ NGHIỆM CÀI ĐẶT PHIÊN BẢN MỘT PHA CHO
5.4. Phiên bản một pha của phương pháp sinh giả định hai pha
nếu L(cex) ⊆L(M1 k p)¯. Nếu không, T eacher sẽ trả lại phản ví dụ cex cho T L∗ để T L∗ điều chỉnh ứng viên hiện tại A để có được ứng viên tốt hơn A0 (bước 1) và tiếp tục gửi truy vấn ứng viên Qc(A0) tới T eacher. Ngược lại, biểu thức M1kM2 6|=p là đúng.
5.4. Phiên bản một pha của phương pháp sinh giả định hai pha
Thuật toán 5.1:Phiên bản một pha của thuật toán sinh giả định Đầu vào:Hệ thống phần mềmM =M1kM2, và thuộc tính an toàn p Đầu ra :Giả địnhAnếu M |=phoặcU N SAT +cexnếu M 6|=p
1 begin
2 Khởi tạo(S, E, T)vớiS =E={(λ, true)}.
3 while true do
4 Cập nhật (S, E, T)sử dụng các truy vấnQm.
5 while ∃(s.a)|row(s.a)6≡row(s0),∀s0∈S, a∈ΣT do
6 S←S∪ {(s.a)}.
7 Cập nhật (S, E, T)sử dụngQm((s.a).b.e)∀b∈ΣT vàe∈E.
8 end
9 Xây dựng một ứng viên cho giả định Ctừ(S, E, T).
10 EQResult←Hỏi một truy vấn ứng viên choC
11 if EQResult=yesthen
12 returnC là giả định cần tìm và trả lại “M =M1kM2|=p”.
13 else if EQResult=continuethen
14 Đặtcex= (a1, g1)(a2, g2)...(an, gn)←phản ví dụ từT eacher.
15 foreach(ai, gi), i∈ {1,2, ...n}do
16 if (ai, g)là một chuỗi con củas∈S∪(S.ΣT)hoặce∈E sao cho[[gi]]⊂[[g]]
then
17 G={gˆ1,gˆ2, ...,gˆm} ←[[g]]−[[gi]].
18 ΣT = ΣT\{(ai, g)} ∪ {(ai, gi),(ai,gˆ1),(ai,gˆ2), ...,(ai,gˆm)}.
19 Táchsthành{sˆ0,sˆ1,sˆ2, ...,sˆm}, trong đó(ai, gi)là một chuỗi con củasˆ0, (ai,gˆj)là một chuỗi con củasˆj,∀j∈ {1,2, ..., m}.
20 Táchethành{eˆ0,eˆ1,eˆ2, ...,eˆm}, trong đó(ai, gi)là một chuỗi con củaeˆ0, (ei,gˆj)là một chuỗi con củaeˆj,∀j∈ {1,2, ..., m}.
21 Cập nhật (S, E, T)cho các phần tử vừa được thêm vào sử dụng các truy vấnQm.
22 end
23 end
24 count←số hành vi có ràng buộc thời gian trongcex.
25 fork = 1tocountdo
26 OT ←Một bản sao của(S, E, T).
27 t←hậu tố cókhành vi có ràng buộc thời gian trongcex.
28 Thêmt vàoE củaOT; Cập nhậtOT sử dụng các truy vấn thành viênQm.
29 if OT là không đóng then
30 Thêmt vàoE của(S, E, T).
31 break.
32 end
33 end
34 else if EQResult= “không biết" then
35 return“không biết” và dừng.
36 else
37 return“M =M1kM26|=p” + cexvà dừng. //T eacher returns(no+cex)
38 end
39 end
40 end
(dòng 10). NếuEQResultlàyes, phiên bản trả lại “M =M1 kM2 |=p” vàC là giả
cần cập nhật(S, E, T)sử dụngcexđể có một ứng viên cho giả định tốt hơn (dòng từ 13 đến 33). Xét cex = (a1, g1)(a2, g2)...(an, gn) (dòng 14). Với mỗi hành vi có ràng buộc thời gian(ai, gi)trong cex, nếu tồn tại một hành vi có ràng buộc thời gian(ai, g)là chuỗi con củas∈S∪S.ΣT hoặc e∈E và [[gi]]⊂[[g]] (dòng 16), hành vi có ràng buộc thời gian(ai, g) được tách như sau. ĐặtG={gˆ1,gˆ2, ...,gˆm}là tập các ràng buộc chứa kết quả của phép toán trừ ràng buộc [[g]]−[[gi]] (dòng 17).
Sau đó, tập các hành vi có ràng buộc thời gian ΣT được cập nhật bằng việc thay thế {(ai, g)} bằng {(ai, gi),(ai,gˆ1),(ai,gˆ2), ...,(ai,gˆm)} (dòng 18). Tiếp theo, với s ∈S∪S.ΣT, s được tách thành {sˆ0,sˆ1,sˆ2, ...,sˆm} với (ai, gi) là chuỗi con của
ˆ
s0, (ai,gˆj) là một chuỗi con của sˆj, ∀j ∈ {1,2, ..., m} (dòng 19). Với e∈E, e được tách thành {eˆ0,eˆ1,eˆ2, ...,eˆm} với (ai, gi) là chuỗi con của eˆ0, (ei,gˆj) là một chuỗi con của eˆj, ∀j ∈ {1,2, ..., m} (dòng 20). Sau đó, (S, E, T) được cập nhật cho các phần tử mới được thêm vào (dòng 21). Đặt count là số hành vi có ràng buộc thời gian trongcex (dòng 24). Để tìm một hậu tố phù hợpt, phiên bản xét toàn bộ các hậu tố t của cex có số hành vi có ràng buộc thời gian k từ 1 đến count (dòng 25 đến 33). Với mỗi t, phiên bản thử, với một bản sao OT của (S, E, T) (dòng 26), thêm t vào E của OT và cập nhật OT (dòng 28). Nếu bảng đã cập nhật OT là đóng, nghĩa là thêm t vào E không thể tạo ra một ứng viên cho giả định tốt hơn, phiên bản cần thử hậu tố khác. Ngược lại, bảng đã cập nhật OT là không đóng, nghĩa là thêm t vào E có thể tạo ra một ứng viên cho giả định tốt hơn cho quá trình sinh giả định, vòng lặp tìm hậu tố t dừng và t sẽ được thêm vào tập hậu tốE của bảng(S, E, T)(dòng 29 đến 32). Sau khi thêm t vào E (dòng 30), vòng lặp tìm t dừng (dòng 31) và quá trình sinh giả định trở lại bước 4 để tìm một ứng viên cho giả định tốt hơn. Trong trường hợpEQResultlà
“không biết”, phiên bản dừng và trả lại“không biết” (dòng 35). Trường hợp cuối cùng là khiEQResult là (no, cex), phiên bản dừng và trả lại “M =M1 kM26|=p” + cex (dòng 37).
5.4.2. Phiên bản cài đặt các thuật toán thực thi Teacher
Phiên bản cài đặt thuật toán trả lời truy vấn thành viên
Để trả lời câu truy vấn thành viên rằng một từ gác σ có thuộc vào ngôn ngữ của giả định A sẽ được sinh ra hay không, sự đoán nhận của từ gác (định nghĩa 2.28) được dùng làm cơ sở của việc kiểm tra như trình bày trong Thuật
toán 5.2.σ được kiểm tra xem có thuộc vào ngôn ngữ của M1 kp (dòng 2). Nếu đúng, phiên bản trả về no (dòng 3). Ngược lại, phiên bản trả về yes (dòng 5).
Thuật toán 5.2:Phiên bản cài đặt thuật toán trả lời các truy vấn thành viênQm(σ) Input:σ: một từ gác
Output:yes: nếuσ∈L(A); nonếuσ6∈L(A)
1 begin
2 if σ∈L(M1kp)then
3 returnno
4 else
5 returnyes
6 end
7 end
Phiên bản cài đặt Thuật toán trả lời truy vấn ứng viên
Để nâng cao hiệu quả của phương pháp phân tích phản ví dụ được trình bày trong Mục 5.4.1, mục này trình bày phiên bản cài đặt của thuật toán trả lời các truy vấn ứng viên được đề xuất bởi Lin và cộng sự [68]. Phiên bản này không trả về các phản ví dụ đã được trả về Learner trước đó, thêm giới hạn maxbound và khả năng trả về kết quả “không biết” cho Learner. Việc này kết hợp với phương pháp phân tích phản ví dụ được trình bày trong Thuật toán 5.1 giúp quá trình sinh giả định tiến xa hơn đến một kết quả kết luận được trong quá trình cài đặt trong thực tế. Ngoài ra, các thay đổi này cũng giúp quá trình kiểm chứng dừng trong thực tế cài đặt khiTeacher không biết trả về phản ví dụ tiếp theo có giúp Learner sinh ra giả định cần tìm hay không. Phiên bản cài đặt được trình bày trong Thuật toán 5.3.
Để quản lý các phản ví dụ đã được trả về cho Learner, phiên bản duy trì một danh sách gọi là ReturnedCexList chứa các phản ví dụ đó. Khi phiên bản tìm được một phản ví dụ cex để trả về cho Learner, phiên bản kiểm tra nếu cexcó trong danh sách ReturnedCexList. Nếu đúng, phiên bản tiếp tục tìm xem có phản ví dụ cex khác để trả về cho Learner. Ngược lại, cex được trả lại cho Learner để sinh ứng viên cho giả định tốt hơn và được thêm vào danh sách ReturnedCexList. Phiên bản chấp nhận một ứng viên cho giả định C là đầu vào và trả vềyes(C thỏa mãn luật giả định - đảm bảo) hoặc(continue, cex)(C không thỏa mãn luật giả định - đảm bảo, nhưngLearner có thể sử dụng phản ví dụcex được trả lại để sinh một ứng viên cho giả định tốt hơn) hoặc (no, cex) (C không thỏa mãn luật giả định - đảm bảo nhưng Learner không thể sinh một giả định
Thuật toán 5.3:Phiên bản cài đặt thuật toán trả lời các truy vấn ứng viênQc(C) Input:C: ứng viên cho giả định;maxbound:
số truy vấn ứng viên tối đaT eacher trả lời
Output:yes/(continue, cex)/(no, cex)/don0t know
1 begin
2 if L(M1kCkp=∅)then
3 if L(M2kC) =∅ then
4 returnyes.
5 else
6 Letcex∈L(M2kC)trong đócex0 =cex↑Σ6∈ReturnedCexList.
7 if cexkhông tồn tại then
8 return“không biết”.
9 end
10 ReturnedCexList←ReturnedCexList∪ {cex0}.
11 if cex∈L(M1kp)then
12 return(no, cex0).
13 else
14 QcN um←QcN um+ 1.
15 if QcN um= maxboundthen
16 return“không biết".
17 end
18 cex0 ←cex↑Σ vàcex0= (a1, g1)...(am, gm).
19 return(continue, cex0).
20 end
21 end
22 else
23 Đặtcex∈L(M1kpkC)trong đócex0=cex↑Σ 6∈ReturnedCexList.
24 if cexkhông tồn tại then
25 return“không biết”.
26 end
27 ReturnedCexList←ReturnedCexList∪ {cex0}.
28 if cex∈L(M2)then
29 return(no, cex0).
30 else
31 QcN um←QcN um+ 1.
32 if QcN um= maxboundthen
33 return“không biết".
34 end
35 cex0 ←cex↑Σ vàcex0= (a1, g1)...(am, gm).
36 return(continue, cex0)
37 end
38 end
39 end
khác tốt hơn từ phản ví dụ cex vì M1 k M2 6|= p) hoặc “không biết” (C không thỏa mãn luật giả định - đảm bảo và Teacher không biết nếu tiếp tục chạy thì quá trình sinh giả định có đến được một kết quả có thể kết luận được không).
Phiên bản bắt đầu bằng việc kiểm tra nếu L(M1 k C k p) = ∅ (dòng 2). Nếu
đúng (M1 kC |=p), phiên bản tiếp tục kiểm tra nếuL(M2 kC) =∅(dòng 3). Nếu đúng (M2 |=C), phiên bản trả lại yes cho Learner. Nếu M2 6|=C, gọi cex là một chuỗi trong L(M2 kC) (dòng 6) và kết quả của phép chiếu của nó lên Σ là cex0 chưa bao giờ được trả về choLearner (cex0 =cex↑Σ ∈/ ReturnedCexList) (dòng 6).
Nếu cexkhông tồn tại (dòng 7). Nghĩa là, toàn bộ các chuỗi trong L(M2kC) đã được trả về cho Learner nhưng không tìm được ứng viên cho giả định tốt hơn.
Teacher không biết làm sao để tìm được phản ví dụ khác cho Learner. Teacher trả về “không biết” để dừng quá trình sinh giả định (dòng 8). Nếu cex như vậy tồn tại, phiên bản thêm cex0 vào ReturnedCexList (dòng 10). Sau đó, phiên bản phân tích nếucexthuộc vào L(M1kp)(dòng 11). Nếu đúng (M1||M2 6|=p), phiên bản trả lại(no, cex0)(dòng 12). Trong trường hợpcex6∈L(M1 kp), phiên bản tăng số truy vấn ứng viên đã xử lýQcN umlên1(dòng 14) và kiểm tra nếuQcN umđã đạt maxbound hay chưa (dòng 15). Nếu đúng, phiên bản trả lại “không biết” cho Learner (dòng 16). Ngược lại, phiên bản tính toáncex0=cex↑Σ và trả lại kết quả (continue, cex0)choleaner (dòng 18 đến 19). Trong trường hợpL(M1 kCkp6=∅), gọi cex là một chuỗi trong L(M1 k C k p) và cex0 = cex↑Σ 6∈ ReturnedCexList (dòng 23). Giống như trường hợp trên, nếucexnhư vậy không tồn tại, phiên bản trả lại “không biết” choLearner để dừng quá trình sinh giả định (dòng 25). Nếu cexnhư vậy tồn tại, phiên bản thêm cex0 =cex↑Σ vàoReturnedCexList(dòng 27).
Sau đó, phiên bản kiểm tra nếu cex ∈ L(M2). Nếu đúng (M1 k M2 6|= p), phiên bản trả lại (no, cex0) cho Learner (dòng 29). Trong trường hợp cex /∈ L(M2), phiên bản tăng QcN um lên 1 (dòng 31) và kiểm tra nếu QcN um đạt maxbound.
Nếu maxbound đã đạt được (dòng 32), Teacher trả lại “không biết” cho Learner để dừng quá trình sinh giả định (dòng 33). Ngược lại, phiên bản tính toán cex0 =cex↑Σ (dòng 35) và trả lại (continue, cex0) cho Learner (dòng 36).