PHÁT TRIỂN CÁC KỸ THUẬT TÌM BẤT BIẾN (INVARIANTS) VÀ BIẾN (VARIANTS) CHO VIỆC SỬ DỤNG HOARE LOGIC ĐỂ CHỨNG MINH TÍNH ĐÚNG ĐẮN CỦA CHU TRÌNH

66 303 0
PHÁT TRIỂN CÁC KỸ THUẬT TÌM BẤT BIẾN (INVARIANTS) VÀ BIẾN (VARIANTS) CHO VIỆC SỬ DỤNG HOARE LOGIC ĐỂ CHỨNG MINH TÍNH ĐÚNG ĐẮN CỦA CHU TRÌNH

Đ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

Header Page of 113 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN MINH HẢI PHÁT TRIỂN CÁC KỸ THUẬT TÌM BẤT BIẾN (INVARIANTS) VÀ BIẾN (VARIANTS) CHO VIỆC SỬ DỤNG HOARE LOGIC ĐỂ CHỨNG MINH TÍNH ĐÚNG ĐẮN CỦA CHU TRÌNH LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội – 2016 Footer Page of 113 Header Page of 113 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN MINH HẢI PHÁT TRIỂN CÁC KỸ THUẬT TÌM BẤT BIẾN (INVARIANTS) VÀ BIẾN (VARIANTS) CHO VIỆC SỬ DỤNG HOARE LOGIC ĐỂ CHỨNG MINH TÍNH ĐÚNG ĐẮN CỦA CHU TRÌNH Ngành: Công nghệ Thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60480103 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: TS ĐẶNG VĂN HƯNG Hà Nội - 2016 Footer Page of 113 Header Page of 113 Footer Page of 113 Header Page of 113 LỜI CẢM ƠN Trước tiên, xin chân thành cảm ơn TS Đặng Văn Hưng, người thầy tận tình hướng dẫn, giúp đỡ suốt trình học tập thời gian hoàn thành luận văn tốt nghiệp Tôi xin chân thành cảm ơn thầy cô giáo khoa Công nghệ thông tin, Trường đại học công nghệ, Đại học quốc gia hà nội, người hết mình, tận tụy truyền đạt kiến thức, quan tâm, động viên suốt trình học tập nghiên cứu Trường Tôi xin gửi lời cảm ơn đến đơn vị Trường THPT Bình gia, Sở giáo dục đào tạo tỉnh Lạng Sơn tạo điều kiện cho có hội học tập, nâng cao trình độ chuyên môn Cuối cùng, lời cảm ơn chân thành xin gửi đến bạn học lớp K21 Công nghệ phần mềm thường xuyên quan tâm, giúp đỡ, chia sẻ kinh nghiệm, tài liệu hữu ích suốt trình học tập Một lần nữa, xin cảm ơn gửi lời chúc sức khỏe, thành công đến tất người Hà Nội, tháng 11 năm 2016 Tác giả luận văn Nguyễn Minh Hải Footer Page of 113 Header Page of 113 LỜI CAM ĐOAN Tôi xin cam đoan luận văn “Phát triển kỹ thuật tìm bất biến (invariants) biến (variants) cho việc sử dụng Hoare Logic để chứng minh tính đắn chu trình” thực hiện, hoàn thành sở tìm kiếm, thu thập, nghiên cứu, tổng hợp phần lý thuyết phương pháp kĩ thuật trình bày tài liệu công bố nước giới Các tài liệu tham khảo nêu phần cuối luận văn Luận văn không chép nguyên từ nguồn tài liệu khác Nếu có sai sót, xin chịu trách nhiệm Hà Nội, tháng 11 năm 2016 Tác giả luận văn Nguyễn Minh Hải Footer Page of 113 Header Page of 113 MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN MỤC LỤC DANH MỤC CÁC HÌNH VẼ CHƯƠNG MỞ ĐẦU LÝ DO CHỌN ĐỀ TÀI MỤC ĐÍCH NGHIÊN CỨU ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU KẾT CẤU CỦA LUẬN VĂN CHƯƠNG TỔNG QUAN VỀ LOGIC HOARE 2.1 LOGIC VỊ TỪ 2.2 NHỮNG HIỂU BIẾT VỀ LOGIC HOARE 11 2.2.1 Lịch sử logic Hoare: 11 2.2.2 Nội dung logic Hoare 12 2.2.3 Các tiên đề logic Hoare: 12 CHƯƠNG CHỨNG MINH TÍNH ĐÚNG ĐẮN CỦA LỆNH CHU TRÌNH BẰNG LOGIC HOARE 15 3.1 PHƯƠNG PHÁP CHỨNG MINH 15 3.2 CÁC VÍ DỤ ÁP DỤNG 17 CHƯƠNG NGHIÊN CỨU VỀ BIẾN VÀ BẤT BIẾN TRONG PHƯƠNG PHÁP CHỨNG MINH TÍNH ĐÚNG ĐẮN CỦA LỆNH CHU TRÌNH 24 4.1 BIẾN 24 4.1.1 Khái niệm 24 4.1.2 Phương pháp tìm biến 24 4.2 BẤT BIẾN 25 4.2.1 Bất biến vòng lặp 25 4.2.2 Một cách nhìn mang tính xây dựng 27 4.2.3 Ví dụ 28 4.2.4 Phân loại bất biến: 30 4.2.4.1 Phân loại theo luật 30 4.2.4.2 Phân loại theo kỹ thuật khái quát hóa 31 4.3 TÌM BIẾN VÀ BẤT BIẾN VÒNG LẶP TRONG MỘT VÀI THUẬT TOÁN CƠ BẢN 32 Footer Page of 113 Header Page of 113 4.3.1 Tìm phần tử có giá trị lớn dãy phần tử 32 4.3.1.1 Số lớn với vòng lặp biến 32 4.3.1.2 Số lớn với vòng lặp hai biến 33 4.3.2 Tìm kiếm 35 4.3.2.1 Tìm kiếm mảng chưa xếp 35 4.3.2.2 Tìm kiếm nhị phân 36 4.3.3 Sắp xếp 39 4.4 ỨNG DỤNG KINH NGHIỆM ĐỂ TÌM BIẾN, BẤT BIẾN TRONG MỘT SỐ BÀI TOÁN 42 CHƯƠNG KẾT LUẬN 61 5.1 KẾT LUẬN 61 5.2 HẠN CHẾ VÀ KIẾN NGHỊ 61 TÀI LIỆU THAM KHẢO 63 Footer Page of 113 Header Page of 113 DANH MỤC CÁC HÌNH VẼ Hình Ảnh Tony Hoare Robert Floyd ………………………………………12 Hình Các vòng lặp tính toán cách xấp xỉ 27 Hình Ước số chung lớn hai số nguyên dương a b 29 Hình Số lớn với vòng lặp biến 33 Hình 4 Số lớn với vòng lặp hai biến 34 Hình 4.5 Tìm kiếm mảng chưa xếp 36 Hình Tìm kiếm nhị phân 39 Hình Sắp xếp kiểu bọt 41 Footer Page of 113 Header Page of 113 CHƯƠNG MỞ ĐẦU Lý chọn đề tài Trong suốt trình học tập, nghiên cứu trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội Bản thân tiếp xúc với nhiều kiến thức mới, quan trọng, ứng dụng mạnh mẽ lĩnh vực rộng lớn CNTT Là giáo viên giảng dạy môn tin học cấp THPT, thường xuyên tiếp xúc hướng dẫn học sinh kiến thức ngôn ngữ lập trình sở ngôn ngữ Pascal Do đó, đặc biệt có hứng thú với môn kiểm thử Việc kiểm tra chương trình xem có đúng, chạy tốt, phù hợp với yêu cầu người lập trình hay không vấn đề quan trọng, mang tính thời đại lập trình viên nhà quản lý phần mềm Cả dự án bị ảnh hưởng gặp lỗi nghiêm trọng việc viết mã Trong tính chất đảm bảo chương trình phù hợp với yêu cầu, có tính chất quan trọng tính đắn Việc chứng chương trình đắn có nhiều phương pháp, phần nghiên cứu luận văn, chọn nghiên cứu Hoare logic (logic Hoare) Logic Hoare Hoare xuất báo năm 1969 Nó thực đời lâu, thân mang tính thời đại việc áp dụng logic Hoare để kiểm tra tính chương trình tiến hành thường xuyên phạm vi rộng lớn Việc tìm hiểu phương pháp chứng minh tính logic Hoare gợi mở cho hướng nghiên cứu Trong đó, xâu vào việc phân tích Biến (Variants) Bất biến (Invariants), hai yếu tố quan trọng việc chứng minh tính lệnh chu trình Bản chất vòng lặp có ẩn chứa bất biến vòng lặp Hay nói cách khác, bạn hiểu vòng lặp chưa biết bất biến Mục đích nghiên cứu Mục đích nghiên cứu luận văn tìm hiểu làm rõ kiến thức liên quan đến logic Hoare Qua phần nghiên cứu, muốn cung cấp tài liệu cụ thể nhằm hướng dẫn việc chứng minh tính lệnh chu trình logic Hoare Bên cạnh đó, việc đưa gợi mở chất vòng lặp thông qua bất biến vòng lặp trú trọng Các chương luận văn cung cấp nhìn tổng quan biến bất biến lý thuyết toán áp dụng thuật toán Phát triển kỹ thuật tìm bất biến (invariants) biến (variants) cho việc sử dụng logic Hoare để chứng minh tính đắn chu trình mục đích nghiên cứu chủ yếu luận văn Footer Page of 113 Header Page 10 of 113 Việc hiểu, làm rõ vấn đề liên quan đến tính chu trình, chất vòng lặp, tính kết thúc… sở quan trọng cho công việc dạy học THPT thân bạn đồng nghiệp khác Đối tượng phạm vi nghiên cứu Đối tượng phạm vi nghiên cứu luận văn xoay quanh logic Hoare Nó bao gồm kiến thức luận lý ba Hoare, tiên để luận lý Luận văn nêu rõ đặc điểm bật áp dụng vào việc chứng minh tính đắn chương trình mà tập trung vào việc chứng minh tính đắn lệnh chu trình Thông qua toán bản, thực tế áp dụng lý thuyết logic Hoare vào việc chứng minh Nghiên cứu tập chung vào tìm biến bất biến Áp dụng thuật toán chương trình tin học Kết cấu luận văn Gồm có chương: Chương Mở đầu Giới thiệu lý chọn đề tài, mục đích nghiên cứu, đối tượng phạm vi nghiên cứu, kết cấu luận văn Chương Tổng quan logic Hoare Chương cung cấp cho lý thuyết logic vị từ logic Hoare Chương Chứng minh tính đắn lệnh chu trình logic Hoare Trong chương cung cấp cách thức để chứng minh tính đắn Bên cạnh đó, áp dụng thực tế lý thuyết vào việc chứng minh vài toán Chương Nghiên cứu biến bất biến phương pháp chứng minh tính đắn lệnh chu trình Ứng dụng vào tìm biến bất biến số thuật toán Chương Kết luận Chương tổng kết lại vấn đề đạt được, chưa đạt kiến nghị đề xuất luận văn Footer Page 10 of 113 Header Page 52 of 113 + Trường hợp 2: Tôi cần p  q  min{ f  i  |  i  n}  min{ f  i  | p  i  q}  f  q   f  p   min{ f  i  |  i  n}  min{ f  i  | p   i  q} Điều minh chứng logic sau: min{ f  i  |  i  n}  min{ f  i  | p  i  q} Giả thiết f q  f  p Giả thiết min{ f  i  | p  i  q}  min{ f i  | p   i  q} Bởi với f  q   f  p  min( f(p) , f(p+1) ) = min( f(p+1)) Kết Luận: Bất biến biến dự đoán Bài Cho chương trình (tựa mã) sau: Với m, i biến nguyên, n nguyên dương m := 0; i := 1; while i ≤ n begin m := m + i*i; i := i + end end Hãy xác định biến (t) bất biến (I) để chứng minh tính đắn chương trình Giải: Tôi dự đoán biến bất biến sau Biến Với kinh nghiệm có nhìn nhận nhanh vòng lặp thực với số lặp i Giá trị số i tăng dần sau lần thực thân vòng lặp Vòng lặp kết thúc i vượt n Từ dự đoán biến t = n – i +1 Bất biến n Từ đoạn chương trình trên, khái quát hậu điều kiện m   j Từ j 1 kinh nghiệm làm toán tìm bất biến, dạng toán áp dụng kỹ thuật giảm dư hằng, thay biến n biến số i nhằm mục đích làm cho bất biến phụ thuộc vào biến số vòng lặp Bên cạnh nhận thấy bất biến chặn vòng lặp  i  n  1, i = n+1 vòng lặp dừng lại Từ Footer Page 52 of 113 49 Header Page 53 of 113 dự đoán trên, chọn bất biến vòng lặp i 1 I   i  n 1 m   j2 j 0 Tới đây, cần chứng minh biến bất biến tìm đúng, sau: Biến Biến chức dự đoán t = n – i +1 Chứng minh t > Để làm điều thực chứng minh b  t  đồng nghĩa với i  n  t  n  i   Giống toán 2, Tôi chứng minh sau: in Theo giả thiết ni  Chuyển vế p n  i 11 Cộng vế với n  i 1  Tính chất phép so sánh Chứng minh sau lần thực thân vòng lặp biến t phải giảm Để thực hiện, phải chứng minh vấn đề sau b  t  N  c t  N  , đồng nghĩa với việc chứng minh i  n  n  i   N n  i  1   N  bt  N Phép gán, m : m  i n  i  1   N  Phép gán i : i  1; n  i   N tN Khi đó, phải chứng minh vấn đề sau i  n  n  i   N  n   i  1   N Điều dễ dàng kiểm chứng logic sau: n  i 1  N Giả thiết n  i 1 1  N Tính chất phép < n   i  1   N Quy tắc toán học Bất biến Footer Page 53 of 113 50 Header Page 54 of 113 Tôi chứng minh bất biến sau thực thân vòng lặp bảo toàn Với i 1 I   i  n   m   j Tôi cần chứng minh b  I  c I  tương đương với j 0 việc chứng minh thỏa mãn i 1   1  i  n   m   j  i  n  j 0   i 11    i   n   m  i  j2    j 0   m := m + i*i i 11    i   n   m  j2    j 0   i := i + i 1    i  n   m  j2    j 0   Tôi phải cho thấy bI Phép gán, Luật phép gán I i 1 i  n   i  n   m   j2   i   n   m  i2  j 0 i 11 j Thỏa mãn j 1 logic sau: in Giả thiết i 1 n 1 Cộng hai vế với i 1 m   j  12    i  1 Theo giả thiết j 0 i 11 m  i   j  12  22    i  1  i 2 Cộng hai vế với i j 1 Kết luận: Bất biến biến dự đoán Bài Cho chương trình (tựa mã) sau: Cho m, i biến nguyên, n nguyên dương m := 0; i := 1; while i ≤ n begin if (i mod = 0) then m := m + i ∗ i ∗ i; i := i + 1; Footer Page 54 of 113 51 Header Page 55 of 113 end Hãy tìm biến (t) bất biến (I) để chứng minh tính đắn chương trình Giải: Tôi dự đoán biến bất biến Biến: Giống toán 2, trên, áp dụng dạng mẫu trường hợp có biến số vòng lặp i, có biến t = n – i +1 Bất biến: Bài toán toán dùng để tính tổng số chẵn mũ ba không vượt n Tôi đưa hậu điều kiện tổng quát sau  n /2 m    * j  Với [n/2] nghĩa n chia cho lấy phần nguyên Nhận thấy biến j 1 số vòng lặp i chạy miền giá trị  i  n  tạo nên bất biến chặn Áp dụng kỹ thuật giảm dư thay n biến số i Khi bất biến sau: I   i  n   m   i 1 /2  2 * j  j 0 Chứng minh biến bất biến tìm đúng: Biến Đầu tiên chứng minh t > b  t  đồng nghĩa với i  n  n  i   Điều kiểm chứng logic sau: in Theo giả thiết ni  Chuyển vế n  i 1  Tính chất phép > Tiếp theo chứng minh sau thực thân vòng lặp t phải giảm giá trị b  t  N c t  N i  n  n  i   N if  i mod   then m : m  i  i  i; i : i  1; n  i   N Áp dụng luật điều kiện if  i mod   then m : m  i  i  i Tôi thấy không thay đổi giá trị i cần chứng minh i  n  n  i   N  n  (i  1)   N Điều kiểm chứng logic sau: n  i 1  N Footer Page 55 of 113 Theo giả thiết 52 Header Page 56 of 113 n  i 1 1  N Định nghĩa phép < n  (i  1)   N Quy tắc toán học Bất biến  i 1 /2  3 i  n   i  n   m  * j      j 0   if  i mod   then m : m  i  i  i; i : i  1;  i 1 /2  3   i  n   m  * j      j 0     Tôi phải chứng minh hai trường hợp sau + Trường hợp 1:  i 1 /2  3   i  n   i  n   m  * j      j 0     bI  i 1 /2     i  n   i  n   m  * j  ( i mod  0)      j      Luật rẽ nhánh   1  i   n   m  i     i 11 /2  j 0 3 * j      (i mod = 0: true) Luật gán, luật ghép m : m  i  i  i;  i 11 /2  3   i   n   m  * j      j 0     Luật gán i : i  1;  i 1 /2  3  i  n   m  * j      j 0   {I} Tôi cần phải cho thấy Footer Page 56 of 113 53 Header Page 57 of 113  i 1 /2    i  n   i  n   m    * j   (i mod  0)    j 0    i 11 /2  3  1  i   n   m  i    * j   Điều minh chứng   j 0   logic sau: i 1 n 1 Vì i  n 1 i 1 Vì  i m  i 1 /2  2 * j Theo giả thiết j 0 mi   i 1 /2  2 * j i  j 0  i 11 /2  2 * j  Vì  i 1/2   i /2     với j 0 i mod  + Trường hợp 2:  i 1 /2  3   i  n   i  n   m  * j      j 0      i 1 /2     i  n   i  n   m    * j   (i mod  0)  j 0      i 11 /2  3    i   n   m  * j      j 0     bI Luật rẽ nhánh (i mod = 0: false) Luật phép gán i : i  1;  i 1 /2  3   i  n   m  * j      j 0   {I} Tôi cần phải cho thấy  i 1 /2    i  n   i  n   m    * j   (i mod  0)    j 0    i 11 /2  3  1  i   n   m    * j   Điều minh chứng   j 0   logic sau: Footer Page 57 of 113 54 Header Page 58 of 113 i 1 n 1 Vì i  n 1 i 1 Vì  i m  i 1 /2  2 * j Theo giả thiết j 0 m  i 11 /2  2 * j  j 0  i 1 /2  2 * j Vì  i 1/2  i /2     với i mod2  j 0 Kết luận: Bất biến biến dự đoán Bài Cho chương trình (tựa mã) sau: Cho m, i biến nguyên, n nguyên dương m := 0; i := 1; while i ≤ n begin if (i mod = 1) then m := m + i ∗ i ∗ i; i := i + 1; end Hãy tìm biến (t) bất biến (I) để chứng minh tính đắn chương trình Giải: Tôi dự đoán biến bất biến: Biến: Giống toán 2, 4, trên, áp dụng dạng mẫu trường hợp có biến số vòng lặp i, có biến t = n – i +1 Bất biến: Bài toán toán dùng để tính tổng số lẻ mũ ba không vượt n Tôi đưa hậu điều kiện tổng quát sau m  n 1 /2   * j  1 Với [n/2] nghĩa n chia cho lấy phần nguyên Nhận j 0 thấy biến số vòng lặp  i  n  tạo nên bất biến chặn Áp dụng kỹ thuật giảm dư thay n biến số i Khi bất biến sau: I   i  n   m   i 2  /2   * j  1 j 0 Chứng minh biến bất biến vừa tìm đúng: Biến Với biến t = n – i +1, thực chứng minh giống với toán Kết luận biến t tìm thỏa mãn yêu cầu Footer Page 58 of 113 55 Header Page 59 of 113 Bất biến  i   /2  3   i  n   i  n   m    * j  1  j 0     if  i mod  1 then m : m  i  i  i; i : i  1;  i 1 /2  3   1  i  n   m    * j  1  j 0     Tôi phải chứng minh hai trường hợp sau (các phân tích tối giản, xem chi tiết toán 5) + Trường hợp 1: Tôi cần phải cho thấy  i   /2    i  n   i  n   m    * j  1  (i mod  1)    j 0    i 1  /2  3  1  i   n   m  i    * j  1  Điều minh chứng   j 0   logic sau: Vì i  n Vì  i i 1 n 1 1 i 1 m  i   /2   * j  1 Theo giả thiết j 0 mi   i 2  /2   * j  1 j 0 Vì  i 2/2    i 1/2     i   i 12 /2   * j  1 j 0 với i mod 1 + Trường hợp 2: Tôi cần phải cho thấy Footer Page 59 of 113 56 Header Page 60 of 113  i   /2    i  n   i  n   m    * j  1  (i mod  1)    j 0    i 12  /2  3  1  i   n   m    * j  1    j 0   Điều minh chứng logic sau: i 1 n 1 Vì i  n 1 i 1 Vì  i m  i 1  /2   * j  1 j 0   i 2 /2   * j  1 Vì  i 12/2   i 2 /2     với i mod2  j 0 Kết luận: Bất biến biến dự đoán Bài Cho chương trình (tựa mã) sau: với x,y,z biến nguyên, n nguyên dương x=0;y=1;z=1;1≤n While z < n begin y := x + y; x := y – x; z := z + 1; end {y = fib n} Tìm biến ( t ) bất biến ( I ) để chứng minh tính đắn lệnh chu trình Giải: Dự đoán biến bất biến Biến Từ toán làm, dễ dàng đưa dự đoán biến chức lệnh chu trình t = n – z Khi z = n vòng lặp chấm dứt Bất biến Tôi thấy đoạn chương trình dùng để tính số fibonacci số nguyên n (1 ≤ n) Hậu điều kiện tổng quát y = fib ( n ) Bằng cách thay n biến số điều kiện lặp Với z chạy miền giá trị từ đến n, thấy biến x y nhận giá trị fib sau: y = fib (z) x = fib (z-1) Footer Page 60 of 113 57 Header Page 61 of 113 Từ phân tích kỹ thuật áp dụng phương pháp giảm dư hằng, đưa dự đoán biết biến vòng lặp I  y  fib  z   x  fib  z  1  z  n Chứng minh biến bất biến vừa tìm Biến Chứng minh ban đầu t > Tôi phải chứng minh b  t  Khi đó, cần z  n  n  z  Điều hiển nhiên Chứng minh b  t  N  c t  N  Áp dụng luật phép gán phép ghép, có: z nnz  N n   z  1  N y := x + y; x := y – x; n   z  1  N z := z + nz N Tôi cần z  n  n  z  N  n   z  1  N Điều minh chứng logic sau: nz  N Giả thiết n  z 1  N 1 Trừ hai vế n   z  1  N N 1  N Bất biến Tôi chứng minh b  I  c I  Áp dụng luật phép gán ghép có: y  fib  z   x  fib  z  1  z  n  z  n x  y  fib  z  1  x  y  x  fib  z   1  z   n y := x + y; y  fib  z  1  y  x  fib  z   1  z   n x := y – x; y  fib  z  1  x  fib  z   1  z   n z := z + y  fib  z   x  fib  z  1  z  n Khi đó, cần phải Footer Page 61 of 113 58 Header Page 62 of 113 y  fib  z   x  fib  z  1  z  n  x  y  fib  z  1  y  fib  z   z   n Điều minh chứng sau: z 1 n y  fib  z  Vì z  n Theo giả thiết x  fib  z  1 Theo giả thiết y  x  fib  z  1  fib  z   fib  z  1 Tính chất dãy fibonacci Kết luận: Bất biến biến dự đoán Bài Cho chương trình ( tựa mã ) sau: với r, s, x biến nguyên, y số nguyên dương r:=0; s:= -1; x:= 0; While r ≤ y Begin s:= s + 2; r:= r + s; x := x + 1; End Tìm biết ( t ) bất biến ( I ) để chứng minh tính đắn lệnh chu trình Giải: Dự đoán biến bất biến Biến Nhận thấy biến số r tăng bình phương x Vòng lặp kết thúc r vượt n Đối với dạng điều kiện lặp có biến số (r), theo kinh nghiệm đưa biến chức t = n – r + Ở đầu vòng lặp biến chức có giá trị t ≤ Bất biến Phân tích qua đoạn chương trình nhận thấy dùng để trả phần nguyên bậc hai số nguyên dương y ([√y] = x -1) Các biến thân vòng lặp có giá trị s = 2x - 1, r  x Tôi dự đoán bất biến vòng lặp từ liệu vừa phân tích I  r  x  s  x    x  1  y Chứng minh biến bất biến vừa tìm Biến Footer Page 62 of 113 59 Header Page 63 of 113 Xem lại chứng minh 2, 4, 5, Bất biến Tôi chứng minh b  I  c I  Áp dụng vào thân vòng lặp có r  x  s  x    x  1  y  r  y I b r  s    x  1  s   x   x  y Luật ghép 2 s:= s + 2; r  s   x  1  s  x   x  y Luật ghép r:= r + s; r   x  1  s  x   x  y Luật phép gán x := x + 1; r  x  s  x    x  1  y I Có r  s    x  1  s   x   x  y  r  x2  s  x   x2  y Khi cần phải r  x  s  x    x  1  y  r  y  r  x2  s  x   x  y Điều minh chứng logic sau: r  x2 s  2x  ry Theo giả thiết Theo giả thiết Theo giả thiết x2  y Vì r  x Kết luận : Bất biến biến dự đoán Như vậy, nhận thấy vấn đề tìm biến bất biến để chứng minh tính đắn lệnh chu trình thực tìm phương pháp chung nhất, hay phương pháp đảm bảo tối ưu Vì toán khác có hậu điều kiện ràng buộc khác nhau, điều mang lại đa dạng bất quy tắc Để giải toán chủ yếu dựa vào giải pháp đúc rút dựa kinh nghiệm học hỏi khám phá trình tìm tòi Tất kinh nghiệm trình bày làm toán tìm biến (t) , Bất biến vòng lặp (I), toán chứng minh tính đắn chương trình Footer Page 63 of 113 60 Header Page 64 of 113 CHƯƠNG KẾT LUẬN 5.1 Kết luận Các kết nghiên cứu đề tài chứng minh tính đắn chu trình logic Hoare thực mang tính thời Việc áp dụng vào thực tế việc chứng minh tính chương trình góp phần quan trọng để đảm bảo chương trình thỏa mãn yêu cầu lập trình Trong phần luận văn cố gắng dẫn dắt kiến thức theo logic hợp lý trực quan Những lý thuyết toán ví dụ đưa xen kẽ liên tục (từ chương đến chương 4) với mục đích không cung cấp lý thuyết mà đem lại cho thân người đọc vài kinh nghiệm rút việc tìm biến bất biến để chứng minh tính đắn lệnh chu trình Những kiến thức phần luận văn tổng hợp cách vắn tắt sau: Đầu tiên kiến thức tổng quan logic vị từ, logic Hoare; Các kỹ thuật chứng minh tính lệnh chu trình phương pháp logic Hoare kèm vào ví dụ minh họa chi tiết cho việc chứng minh; Làm rõ biến bất biến, xâu vào tìm hiểu bất biến vòng lặp, ví dụ minh họa thể vài thuật toán nhất; Cuối kinh nghiệm rút từ việc nghiên cứu trình thực tìm biến, bất biến ví dụ toán vòng lặp cụ thể Trên thực tế có nhiều công cụ tự động việc chứng minh tính đắn chương trình, nhiên hiểu rõ phương pháp chứng minh, hiểu rõ chất vòng lặp làm cho người lập trình mắc sai sót trình viết code Khi đó, chương trình viết đảm bảo chạy ổn định Nó góp phần giảm thiểu rủi ro kinh phí sửa chữa, bảo trì Qua trình nghiên cứu luận văn, thân lĩnh hội lượng kiến thức lớn từ làm rõ ưu tư, thắc mắc trình giảng dạy môn tin học cấp độ THPT Đó kiến thức liên quan đến tính đắn chương trình, đến chất vòng lặp, đến tính kết thúc…Thực hữu ích việc giảng dạy học sinh lớp 10 (trong liên quan đến thuật toán), học sinh lớp 11 (giảng dạy ngôn ngữ lập trình, Pascal) 5.2 Hạn chế kiến nghị Sau nghiên cứu, cố gắng tổng hợp, phân tích tài liệu liên quan đến luận văn, tham khảo ý kiến hướng dẫn TS Đặng Văn Hưng nhằm mục đích tìm phương pháp giải cho toán tìm biến bất biến Footer Page 64 of 113 61 Header Page 65 of 113 cho việc sử dụng logic Hoare để chứng minh tính đắn Tuy nhiên, chẳng có phương pháp hay lời giải chung tốt Cơ phần nhiều dựa kinh nghiệm có trình tìm kiếm Chắc chắn với trình độ hạn hẹp thân thời gian nghiên cứu làm luận văn, công việc dạy học cộng thêm việc gia đình nhỏ làm cho thân thực chưa hoàn thành luận văn mức độ cao mong muốn Luận văn viết mặt hạn chế, sai sót Vậy, mong nhận quan tâm, đồng cảm đóng góp ý kiến từ phía thầy cô, bạn bè để luận văn hoàn thiện Footer Page 65 of 113 62 Header Page 66 of 113 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Đỗ Đức Giáo (2011), Toán rời rạc ứng dụng tin học, Nhà xuất giáo dục Việt Nam [2] Lê Văn Viễn, Phương pháp kiểm chứng tính đắn chương trình Java đa luồng thông qua sử dụng logic Hoare, Báo cáo tốt nghiệp [3] Zoharn Manna, Người dịch TS Đặng Văn Hưng, Lô Gích lập trình, Trung tâm toán máy tính Tiếng Anh [4] Jonathan Aldrich, 17-654/17-765 Analysis of Software Artifacts [5] C.A.R Hoare, An Axiomatic Basis for Computer Programming, The Queen’s University of Belfast, *Northern Ireland [6] Dang Van Hung, Formal Methods An Introduction, College of Technology [7] CARLO A FURIA, ETH Zurich, BERTRAND MEYER, Loop invariants: analysis, classification, and examples, ITMO St Petersburg, and Eiffel Software, SERGEY VELDER [8] Ichiro Hasuo, Tutorial on Formal Verification using Hoare Logic, Dept Computer Science, University of Tokyo [9] Anders Møller, Program Verification with Hoare Logic, university of Aarhus Footer Page 66 of 113 63 ... MINH HẢI PHÁT TRIỂN CÁC KỸ THUẬT TÌM BẤT BIẾN (INVARIANTS) VÀ BIẾN (VARIANTS) CHO VIỆC SỬ DỤNG HOARE LOGIC ĐỂ CHỨNG MINH TÍNH ĐÚNG ĐẮN CỦA CHU TRÌNH Ngành: Công nghệ Thông tin Chuyên ngành: Kỹ. .. xin cam đoan luận văn Phát triển kỹ thuật tìm bất biến (invariants) biến (variants) cho việc sử dụng Hoare Logic để chứng minh tính đắn chu trình thực hiện, hoàn thành sở tìm kiếm, thu thập, nghiên... bất biến lý thuyết toán áp dụng thuật toán Phát triển kỹ thuật tìm bất biến (invariants) biến (variants) cho việc sử dụng logic Hoare để chứng minh tính đắn chu trình mục đích nghiên cứu chủ yếu

Ngày đăng: 25/03/2017, 12:09

Tài liệu cùng người dùng

Tài liệu liên quan