1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử

68 4 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

Tiêu đề Chứng Minh Tính Đúng Đắn Cho Bài Toán Xung Đột Tài Nguyên Cho Các Hệ Đa Tác Tử
Tác giả Nguyễn Thế Huy
Người hướng dẫn TS. Phạm Ngọc Hùng
Trường học Đại học Quốc Gia Hà Nội
Chuyên ngành Công nghệ thông tin
Thể loại luận văn thạc sĩ
Năm xuất bản 2014
Thành phố Hà Nội
Định dạng
Số trang 68
Dung lượng 1,4 MB

Cấu trúc

  • Chương 1. GIỚI THIỆU (9)
  • Chương 2. TỔNG QUAN VỀ CafeOBJ (11)
    • 2.1. Giới thiệu (11)
    • 2.2. Đặc tả và kiểm chứng trong CafeOBJ (14)
    • 2.3. Ví dụ minh họa (14)
  • Chương 3. ĐẶC TẢ HỆ THỐNG ĐA TÁC TỬ SỬ DỤNG CHUNG ĐA TÀI NGUYÊN (16)
    • 3.1. Giới thiệu bài toán (16)
    • 3.2. Phương pháp đặc tả (20)
      • 3.2.1. Đặc tả các tác tử (20)
      • 3.2.2. Không gian trạng thái (21)
      • 3.2.3. Đặc tả các thuộc tính bất biến (21)
    • 3.3. Kiểm chứng hệ thống đa tác tử sử dụng chung đa tài nguyên (22)
  • Chương 4. ĐẶC TẢ VÀ CHỨNG MINH TÍNH ĐÚNG ĐẮN CHO HỆ THỐNG ĐẠI LÝ VÉ MÁY BAY (24)
    • 4.1. Mô tả bài toán trong hệ chuyển trạng thái quan sát được - OTS (Observational Transition System) (24)
    • 4.2. Đặc tả hệ thống với CafeOBJ (26)
    • 4.3. Chứng minh tính đúng đắn của hệ thống (33)
  • Chương 5. KẾT LUẬN (49)
  • TÀI LIỆU THAM KHẢO (50)

Nội dung

GIỚI THIỆU

Kiểm chứng mô hình và các kỹ thuật kiểm thử hiện đang được coi là giải pháp chủ yếu để đảm bảo chất lượng cho sản phẩm phần mềm, đặc biệt là các hệ thống đa tác tử Trong khi các kỹ thuật kiểm thử chỉ có khả năng phát hiện lỗi, chúng không thể khẳng định rằng hệ thống không còn lỗi, do đó không đủ để đảm bảo chất lượng cho các hệ thống yêu cầu độ tin cậy cao Một phương pháp phổ biến hiện nay là kiểm chứng mô hình, với nhiều công cụ hỗ trợ như SMV và NuSMV Tuy nhiên, phương pháp này chỉ áp dụng cho các hệ thống có số lượng tác tử hữu hạn và yêu cầu xây dựng máy hữu hạn trạng thái để mô tả hành vi của hệ thống, điều này trở thành điểm yếu khi số lượng tác tử có thể thay đổi trong quá trình phát triển và thực thi Ngoài ra, vấn đề bùng nổ không gian trạng thái có thể xảy ra khi áp dụng kiểm chứng mô hình cho các hệ thống lớn với số lượng tác tử không xác định Trong những trường hợp này, phương pháp chứng minh định lý là lựa chọn phù hợp để đảm bảo tính đúng đắn của các hệ đa tác tử.

Luận văn này nhằm chứng minh tính đúng đắn cho bài toán xung đột tài nguyên trong các hệ đa tác tử sử dụng chung đa tài nguyên Tài liệu [2] đã xác nhận tính đúng đắn của một số thuộc tính bất biến trong hệ thống đa tác tử với một tài nguyên chung Tuy nhiên, khi áp dụng cho hệ thống với nhiều tài nguyên chung, phương pháp đặc tả cần được điều chỉnh Do đó, luận văn tập trung nghiên cứu một phương pháp đặc tả và kiểm chứng cho các hệ đa tác tử với nhiều tài nguyên, cụ thể là áp dụng vào hệ thống đại lý vé máy bay, sử dụng bộ chứng minh định lý CafeOBJ [3, 4].

Phần còn lại của luận văn được cấu trúc như sau: Chương 2 cung cấp tổng quan về ngôn ngữ CafeOBJ, công cụ hỗ trợ đặc tả và kiểm chứng phần mềm theo tư tưởng chứng minh định lý Chương 3 trình bày việc đặc tả và kiểm chứng các hệ đa tác tử sử dụng chung đa tài nguyên, giới thiệu hệ thống và phương pháp liên quan Chương 4 tập trung vào việc đặc tả và chứng minh tính đúng đắn cho hệ thống đại lý vé máy bay, với ví dụ minh họa cụ thể về việc đặt vé máy bay, mô tả bài toán bằng ngôn ngữ tự nhiên và hệ chuyển trạng thái quan sát được (OTS), từ đó thực hiện kiểm chứng bằng CafeOBJ Cuối cùng, Chương 5 đưa ra kết luận và định hướng phát triển, kèm theo tài liệu tham khảo và phụ lục.

TỔNG QUAN VỀ CafeOBJ

Giới thiệu

CafeOBJ là một ngôn ngữ đặc tả đại số có khả năng thực thi trên nhiều cơ sở lôgic khác nhau, chủ yếu dựa vào các đại số ban đầu và các đại số suy diễn Ngôn ngữ này hỗ trợ phương pháp kiểm chứng thông qua các kỹ thuật đặc tả đại số và quy nạp toán học, nhằm xác minh tính đúng đắn của các chương trình với miền trạng thái vô hạn CafeOBJ bao gồm ba lôgic cơ bản.

Lôgic được sắp xếp theo thứ tự (order-sorted logic) cho phép một kiểu có thể là kiểu con của một kiểu khác, ví dụ như tập hợp các số tự nhiên là tập con của tập hợp các số hữu tỷ, điều này chứng minh rằng 3 bằng 6/2 Hệ thống này cũng hỗ trợ việc kế thừa các phép toán, cho phép phép toán trên tập hợp số hữu tỷ tự động áp dụng cho tập hợp số tự nhiên Hơn nữa, mối quan hệ kiểu con giúp đơn giản hóa việc xác định các phép toán cục bộ và xử lý các ngoại lệ.

Logic biến đổi cho phép các biểu thức trở nên đồng nhất thông qua tính đối xứng và quan hệ bắc cầu, không cần phải trực tiếp Việc áp dụng quan hệ bắc cầu mang lại lợi ích lớn trong việc thể hiện tính đồng thời và tính bất định, tạo điều kiện thuận lợi cho việc phân tích và giải quyết các vấn đề phức tạp.

Các kiểu ẩn được chia thành hai loại tương đương Thứ nhất là tương đương cực tiểu, trong đó hai vế được coi là tương đương khi chúng giống nhau theo các điều kiện và phương trình đã được xác định Thứ hai là loại tương đương dành cho kiểu ẩn, trong đó hai vế tương đương khi chúng phản ứng giống nhau trước cùng một bộ quan sát.

CafeOBJ cung cấp tính năng truyền tham số rất hữu ích, cho phép định nghĩa nhiều kiểu dữ liệu trừu tượng như danh sách, tập hợp, hàng đợi và ngăn xếp Mỗi kiểu dữ liệu này có thể được định nghĩa thông qua mô-đun có khả năng truyền tham số, với các thành phần cơ bản được truyền từ bên ngoài vào.

Trong CafeOBJ, việc đặc tả được thực hiện thông qua các mô-đun, và khi khai báo mô-đun, người dùng có thể bắt đầu với từ khóa module hoặc mod Có ba kiểu khai báo mô-đun trong CafeOBJ: mod!, mod* và mod Mặc dù ngôn ngữ CafeOBJ không phân biệt ba kiểu khai báo này trong quá trình thực thi, nhưng việc chỉ rõ kiểu của mô-đun là rất quan trọng để hiểu đầy đủ và chính xác về đặc tả của mô-đun, đặc biệt trong các hệ thống phức tạp.

Một mô-đun không có tham số trong CafeOBJ được khai báo với cú pháp được trình bày như trong hình 2.1 module module_name { module_element *

Hình 2.1: Định nghĩa mô-đun trong CafeOBJ

Chi tiết của định nghĩa mô-đun trong hình 2.1 như sau:

The term "Module_name" refers to the specific name of the module being defined, while "module_element" encompasses the various components of the module These components may include import declarations for inheriting from other modules, sort declarations for defining types, variable declarations for establishing variables, operation declarations for defining functions, equation declarations for mathematical expressions, and transition declarations for state changes.

Chúng ta cùng xem xét hai ví dụ trong hình 2.2: Đặc tả mô-đun SIMPLE- NAT và hình 2.3 : đặc tả mô-đun NAT+

Hình 2.2: Đặc tả mô-đun SIMPLE-NAT trong CafeOBJ

Để khai báo và định nghĩa một mô-đun, trước tiên cần xác định kiểu của mô-đun, sau đó là tên của mô-đun Cụ thể, trong hình 2.2, kiểu dữ liệu Nat được định nghĩa trên dòng đầu tiên.

2), định nghĩa hằng số 0 thuộc kiểu dữ liệu Nat ta bắt đầu bằng từ khóa op (dòng

3), định nghĩa phép toán s (phép tăng một số tự nhiên lên 1 đơn vị) ta bắt đầu bằng từ khóa op (dòng 4)

Hình 2.3: Đặc tả mô-đun NAT+ trong CafeOBJ

Chi tiết của khai báo trong hình 2.3 như sau:

Mô-đun NAT+ kế thừa từ mô-đun SIMPLE-NAT, trong CafeOBJ hỗ trợ ba kiểu kế thừa: protecting (pr), extending (ex) và using (us) Phép toán cộng được khai báo bằng từ khóa op, với hai đối số kiểu Nat và kết quả cũng là kiểu Nat Phương trình đầu tiên định nghĩa phép cộng số 0 với một số Nat bất kỳ, bắt đầu bằng từ khóa eq, với kết quả trả về là chính nó, lưu ý rằng sau mỗi phương trình cần có dấu cách và dấu chấm “.” Cuối cùng, phương trình thứ hai định nghĩa phép cộng của phép toán s tăng biến N lên một đơn vị với biến M, và vế phải là phép toán s tăng kết quả của phép cộng N và M lên một đơn vị.

Chúng ta đã hoàn tất việc đặc tả hai mô-đun SIMPLE-NAT và NAT+ Tiếp theo, hãy lưu file đặc tả với tên example1.mod Để đọc mô-đun đã lưu trong file example1.mod, khởi động chương trình CafeOBJ, chỉ đến đường dẫn lưu file và gõ lệnh in, sau đó thêm một dấu cách và nhập example1.mod.

Chương trình CafeOBJ đọc đặc tả thành công thì sẽ có thông báo như sau: processing input : example1.mod

defining module! SIMPLE-NAT _* done

CafeOBJ hỗ trợ tổ chức các thành phần của mô-đun thành ba khối chính: khối imports để khai báo các mô-đun tham chiếu, khối signature để định nghĩa kiểu dữ liệu và phép toán, và khối axioms để khai báo các biến Điều này giúp việc đặc tả trở nên rõ ràng hơn.

(variables), các phương trình (equations), các dịch chuyển (transitions) Hình 2.5 mô tả chi tiết việc tổ chức các khối của mô-đun NAT+ mod! NAT+ { imports { pr(SIMPLE-NAT)

} signature { op _+_ : Nat Nat -> Nat

} axioms { eq 0 + M:Nat = M eq s (N:Nat) + M:Nat = s (N + M)

Hình 2.5: Tổ chức các thành phần của một mô-đun.

Đặc tả và kiểm chứng trong CafeOBJ

Sau khi xác định hệ thống và các thuộc tính của nó, bước tiếp theo là kiểm thử xem các thuộc tính này có phù hợp với đặc tả đã đưa ra hay không CafeOBJ cung cấp hỗ trợ cho việc kiểm chứng thông qua phương pháp quy nạp toán học.

Ví dụ minh họa

Bài viết này trình bày việc chứng minh tính chất kết hợp của phép cộng “+” trong tập hợp các số tự nhiên (NAT+) theo mô-đun đã được mô tả trong phần 2.1.

Tính chất kết hợp của phép cộng “+” ba số tự nhiên A, B, C được phát biểu như sau:

(A + B) + C = A + (B + C), với A, B, C là các số tự nhiên bất kỳ (*)

Hệ thống các số tự nhiên được đặc tả thông qua mô-đun SIMPLE-NAT và mô-đun NAT+, trong đó tính chất (*) là thuộc tính cần chứng minh Hình 2.6 minh họa các công đoạn chứng minh cho tính chất này, bao gồm open NAT+ và EQL.

Khai báo 3 số tự nhiên a, b, c bất kỳ ops a b c : -> Nat

Bước quy nạp: red ((s(a) + b) + c) = (s(a) + (b + c)) close

Hình 2.6: Các công đoạn chứng minh tính chất (*)

Sau khi thực hiện trong chương trình CafeOBJ ta thu được kết quả đều là true Điều đó chứng tỏ thuộc tính (*) đã được chứng minh.

ĐẶC TẢ HỆ THỐNG ĐA TÁC TỬ SỬ DỤNG CHUNG ĐA TÀI NGUYÊN

Giới thiệu bài toán

Hệ thống có nhiều tài nguyên dùng chung cho nhiều tác tử, trong đó mỗi tài nguyên chỉ được phép sử dụng bởi một tác tử tại một thời điểm nhất định Để đảm bảo tính đúng đắn và tránh xung đột tài nguyên giữa các tác tử, cần phải đặc tả rõ ràng hệ thống và các thuộc tính liên quan.

Hệ thống cần tạo ra số hàng đợi tương ứng với số tài nguyên hiện có, và các hàng đợi này sẽ được chia sẻ giữa tất cả các tác tử Mỗi hàng đợi sẽ đại diện cho một loại tài nguyên, do đó, tác tử muốn sử dụng tài nguyên nào phải đảm bảo rằng nó đã tồn tại trong hàng đợi tương ứng với tài nguyên đó.

Mỗi tác tử i khi tham gia vào hệ thống sẽ được gán nhãn rm Khi tác tử ở trong hàng đợi, chúng mang nhãn wt, và khi đang sử dụng tài nguyên, nhãn của chúng là cs Việc gán nhãn này giúp hệ thống quản lý trạng thái của từng tác tử, từ đó đưa ra quyết định xử lý hiệu quả.

Khi một tác tử i tham gia vào hệ thống mà chưa có nhu cầu sử dụng tài nguyên, nó sẽ được gán nhãn là rm, biểu thị rằng tác tử đang ở miền dư Khi tác tử yêu cầu sử dụng tài nguyên, nhãn của nó sẽ chuyển thành wt và được đưa vào cuối hàng đợi tương ứng Nếu tác tử ở đỉnh hàng đợi, nó sẽ được cấp phát tài nguyên và nhãn của nó sẽ đổi thành cs Sau khi hoàn thành việc sử dụng tài nguyên, nhãn của tác tử sẽ trở lại rm, đánh dấu rằng tác tử đã trở về miền dư.

Lưu đồ trong hình 3.1 minh họa quá trình hoạt động của hệ thống và đặc điểm độc quyền truy xuất của các tác tử đối với từng tài nguyên.

Hình 3.1: Lưu đồ mô tả quá trình hoạt động của hệ thống cũng như tính chất độc quyền truy xuất của các tác tử đối với mỗi tài nguyên

Hệ thống hoạt động thông qua các thao tác trên từng hàng đợi tương ứng với từng tài nguyên Khi một tác tử cần sử dụng tài nguyên, hệ thống sẽ đưa tác tử đó vào hàng đợi phù hợp Sau đó, hệ thống sẽ kiểm tra để xác định tác tử nào đang ở đầu hàng đợi và cho phép tác tử đó sử dụng tài nguyên Hình 3.2 minh họa rõ ràng cho quá trình này.

Hình 3.2: Thao tác của hệ thống đối với mỗi hàng đợi tương ứng với mỗi tài nguyên

Theo mô tả đối với hệ thống như trên thì hệ thống cần thỏa mãn các yêu cầu sau:

Mỗi tài nguyên trong hệ thống đều có quyền truy xuất độc quyền, nghĩa là khi một tác tử với định danh i đang sử dụng tài nguyên nào đó, thì không có tiến trình nào khác với định danh j (j ≠ i) có thể truy cập vào tài nguyên mà i đang sử dụng.

Mỗi tác tử trong hệ thống cần phải sử dụng tài nguyên chưa được sử dụng bởi bất kỳ tác tử nào, nếu có ít nhất một tác tử khác muốn sử dụng tài nguyên đó Điều này đảm bảo rằng một trong các tác tử sẽ được cấp quyền truy cập vào tài nguyên cần thiết.

- Đối với việc khởi tạo trạng thái ban đầu: mọi hàng đợi trong hệ thống đều rỗng, mọi tác tử đều đang ở miền dư

Chúng ta cùng xem xét một số kịch bản của hệ thống trên một hàng đợi tương ứng với một tài nguyên bất kỳ

Trong một hệ thống có ba tác tử được định danh là 1, 2 và 3, cả ba đều muốn sử dụng tài nguyên r8, với hàng đợi tương ứng là q8 Khi tác tử 3 có nhu cầu sử dụng tài nguyên, hệ thống gán nhãn wt cho tác tử này và đưa vào đuôi hàng đợi q8 Tiếp theo, tác tử 2 cũng có nhu cầu sử dụng tài nguyên, được gán nhãn wt và đưa vào hàng đợi sau tác tử 3 Khi miền găng cs trống, tác tử 3 ở đỉnh hàng đợi q8 được gán nhãn cs, cho phép sử dụng tài nguyên r8 Sau khi tác tử 3 hoàn thành việc sử dụng tài nguyên và được gán nhãn rm, nó quay trở lại miền dư cùng với tác tử 1 Các kịch bản tiếp theo của hệ thống diễn ra tương tự và được mô tả trong hình 3.3a và 3.3b.

Hình 3.3a: Một số kịch bản của hệ thống

Hình 3.3b: Một số kịch bản của hệ thống.

Phương pháp đặc tả

3.2.1 Đặc tả các tác tử

Hệ thống đa tác tử cho phép truy xuất tài nguyên chung tại mọi trạng thái, đảm bảo rằng mỗi tài nguyên chỉ được một tác tử truy xuất tại một thời điểm Mỗi tài nguyên được quản lý cẩn thận, với RId là tập hợp các định danh tài nguyên, trong đó r đại diện cho một tài nguyên cụ thể thuộc RId.

Trong hệ thống đa tác tử sử dụng chung đa tài nguyên, AId đại diện cho tập các định danh của các tác tử, RId là tập các định danh của các tài nguyên, và Sys là không gian trạng thái của hệ thống Mỗi tác tử i ∈ AId tương ứng với một tập hữu hạn các hành động ai1, ai2, , ain, được định nghĩa bởi hàm aij: Sys × RId × AId → Sys với j = 1, , n.

Hình 3.4: Định nghĩa tập hữu hạn các hành động của các tác tử

Với s ∈ Sys và con_aij : Sys × RId × AId → {true, false}, aij(s, r, i) = s’

Nếu con_aij(s, r, i) = true, thì s’ ∈ Sys và s’ khác s; ngược lại, aij(s, r, i) = s Khi s’ = aij(s, r, i), ta xác định s’ là trạng thái tiếp theo của s khi tác tử i thực hiện thành công hành động aij tại trạng thái s.

Không gian trạng thái của hệ thống đa tác tử (ký hiệu không gian trạng thái là

Hệ thống Sys bao gồm vô hạn các trạng thái, bắt đầu từ trạng thái khởi tạo được ký hiệu là init Mỗi trạng thái s ∈ Sys tương ứng với một tài nguyên r, tạo thành một cấu trúc phức tạp trong quá trình vận hành của hệ thống.

Hệ thống đa tác tử RId sẽ chuyển đến trạng thái tiếp theo s’ khi một trong các tác tử i ∈ AId thực hiện thành công hành động aij(s, r, i) với j = 1, …, n, trong đó s’ = aij(s, r, i) và s’ khác s Không gian trạng thái của hệ thống này được định nghĩa đệ quy và sử dụng chung đa tài nguyên.

Sys = {init} ∪ {aij(s, r, i) | s ∈ Sys, r ∈ RId, i ∈ AId, j ∈ [1 n] }

Hình 3.5: Định nghĩa đệ quy không gian trạng thái của hệ thống đa tác tử sử dụng chung đa tài nguyên

3.2.3 Đặc tả các thuộc tính bất biến

Trước khi triển khai hệ thống, đặc biệt là hệ đa tác tử, cần kiểm chứng một số thuộc tính quan trọng Nghiên cứu này tập trung vào thuộc tính bất biến, một đặc điểm cơ bản của các hệ thống Thuộc tính bất invariant yêu cầu hệ thống phải thỏa mãn tại mọi trạng thái, được định nghĩa là: inv: Sys × RId × AId × AId → { true, false}.

Để chứng minh thuộc tính bất biến của hệ đa tác tử sử dụng chung đa tài nguyên, cần xác định và chứng minh rằng thuộc tính này luôn luôn được thỏa mãn trong mọi tình huống.

Hình 3.7: Chứng minh thuộc tính bất biến luôn thỏa mãn.

Kiểm chứng hệ thống đa tác tử sử dụng chung đa tài nguyên

Hiện nay, kiểm chứng mô hình là phương pháp phổ biến để chứng minh tính đúng đắn của các hệ đa tác tử Tuy nhiên, hạn chế lớn nhất của phương pháp này là bùng nổ không gian trạng thái khi áp dụng cho hệ thống lớn, khiến nó khó khả thi trong thực tế Kiểm chứng mô hình chỉ hiệu quả với các hệ thống có không gian trạng thái hữu hạn, trong khi các hệ đa tác tử có số lượng tác tử không xác định có thể dẫn đến không gian trạng thái vô hạn Do đó, phương pháp này không thể áp dụng cho các hệ đa tác tử Để chứng minh tính đúng đắn của các hệ đa tác tử sử dụng chung đa tài nguyên, có thể áp dụng phương pháp chứng minh theo tư tưởng quy nạp toán học, bắt đầu bằng việc kiểm tra thuộc tính inv tại trạng thái khởi tạo.

Để xác định tính đúng đắn của thuộc tính inv(init, r, i, j), nếu kết quả là sai, chúng ta có thể kết luận rằng hệ thống không thỏa mãn thuộc tính này Ngược lại, nếu đúng, chúng ta sẽ tiến hành chứng minh quy nạp Bước đầu tiên là giả sử thuộc tính inv đúng tại một trạng thái s bất kỳ (s ∈ Sys), tức là inv(s, r, i, j) = true, và chứng minh rằng thuộc tính này cũng đúng tại tất cả các trạng thái tiếp theo của s Những trạng thái tiếp theo được xác định khi một tác tử thực hiện hành động tại trạng thái s Nếu inv thỏa mãn tại tất cả các trạng thái tiếp theo, hệ thống sẽ thỏa mãn thuộc tính inv Tuy nhiên, trong quá trình chứng minh, nhiều trường hợp có thể cho kết quả là một biểu thức logic thay vì true hoặc false, đòi hỏi chúng ta cung cấp thêm tri thức để rút gọn biểu thức và chứng minh tính thỏa mãn Việc tìm kiếm các hệ quả liên quan đến thuộc tính inv có thể gặp khó khăn và tốn thời gian, do đó, trước khi cung cấp các hệ quả cho hệ thống, chúng cần được chứng minh tính đúng đắn như các thuộc tính riêng biệt.

Quy trình chứng minh tính thỏa mãn của thuộc tính inv bằng phương pháp quy nạp toán học được mô tả trong hình 3.8

{inv(init, r, i, j) = true? | r ∈ RId, i, j ∈ AId}

Hình 3.8: Quy trình chứng minh các thuộc tính bất biến của hệ đa tác tử sử dụng chung đa tài nguyên.

ĐẶC TẢ VÀ CHỨNG MINH TÍNH ĐÚNG ĐẮN CHO HỆ THỐNG ĐẠI LÝ VÉ MÁY BAY

Mô tả bài toán trong hệ chuyển trạng thái quan sát được - OTS (Observational Transition System)

Trong phần trước, chúng ta đã mô tả hệ thống bằng ngôn ngữ tự nhiên và xác định một số thành phần quan trọng Bằng cách hiểu rõ hệ thống, phần này sẽ tập trung vào việc đặc tả hệ thống trong khung của Hệ chuyển trạng thái quan sát được (OTS).

Queue: Kiểu dữ liệu hàng đợi

ATASys là một kiểu dữ liệu mô tả không gian trạng thái của hệ thống, trong khi Label là kiểu dữ liệu thể hiện các nhãn của các đại lý, bao gồm các thành phần như rm, wt và cs.

AId: Kiểu dữ liệu thể hiện các định danh của các đại lý

FId: Kiểu dữ liệu thể hiện các định danh của các chuyến bay

Các phương thức trực quan trên PC và queue đều cung cấp thông tin quan trọng về trạng thái của hệ thống Cụ thể, phương thức trực quan trên PC trả về nhãn của một đại lý tại một trạng thái nhất định, trong khi phương thức trực quan trên queue cung cấp hàng đợi tương ứng với mỗi chuyến bay trong cùng một trạng thái.

Các phương thức chuyển trạng thái trong hệ thống bao gồm: phương thức "rm" (want) trả về trạng thái tiếp theo của hệ thống với ba tham số đầu vào là không gian trạng thái, định danh chuyến bay và định danh tác giả Tương tự, phương thức "wt" (try) cũng trả về trạng thái tiếp theo với cùng ba tham số đầu vào Cuối cùng, phương thức "cs" (exit) thực hiện chuyển trạng thái và trả về trạng thái tiếp theo với ba tham số đầu vào giống như các phương thức trên.

Hình 4.1: Mô hình hệ thống đại lý vé máy bay được mô tả trong hệ chuyển trạng thái quan sát được – OTS.

Đặc tả hệ thống với CafeOBJ

Bắt nguồn từ mô hình hệ thống trong hệ chuyển trạng thái quan sát được (OTS), chúng ta tiến hành đặc tả hệ thống trong CafeOBJ Mô-đun được sử dụng để đặc tả hệ thống này được gọi là ATA.

Đại lý vé máy bay (Airline Ticket Agent) bao gồm các thành phần chính như kiểu ẩn *[ATASys]*, thể hiện không gian trạng thái của hệ thống Phương thức trực quan pc trả về nhãn của một đại lý tương ứng với một chuyến bay tại bất kỳ trạng thái nào, với các nhãn gồm rm, wt và cs Mô-đun ATA kế thừa từ các mô-đun khác như LABEL, mô-đun định nghĩa các nhãn của đại lý, mô-đun FID, mô-đun xác định các chuyến bay, và mô-đun QUEUE.

(mô-đun đặc tả cho kiểu dữ liệu hàng đợi) (từ dòng 1 đến 3), khai báo kiểu ẩn

Mô-đun ATASys được thiết lập với trạng thái khởi tạo init và khai báo các phương thức trực quan pc và queue, cùng với các phương thức chuyển trạng thái Các mô-đun này sẽ được đặc tả chi tiết hơn sau này Hình 4.2a cung cấp cái nhìn tổng quan về các thành phần và phương thức của mô-đun ATA, tuy nhiên chưa có định nghĩa cụ thể cho các phương thức trực quan pc, queue và các phương thức chuyển trạng thái như want, try, exit.

Mô-đun ATA kế thừa các mô-đun LABEL, FID

3: pr(QUEUE(AID{sort Elt -> AId, sort EltErr -> AIdErr, op none -> none})) 4: *[ATASys]*

Đặc tả trạng thái khởi tạo của hệ thống

Các phương thức trực quan

6: bop pc : ATASys FId AId -> Label

7: bop queue : ATASys FId -> Queue

Các phương thức chuyển trạng thái

8: bop want : ATASys FId AId -> ATASys

9: bop try : ATASys FId AId -> ATASys

10: bop exit : ATASys FId AId -> ATASys

Hình 4.2a: Phần đặc tả đầu tiên của mô-đun ATA

Để chứng minh tính đúng đắn của hệ thống với mô-đun hệ thống ATA đã được đặc tả, chúng ta cần khai báo các luật và tiên đề Tiếp theo, cần mô tả chi tiết các trạng thái, phương thức trực quan, phương thức chuyển trạng thái, cũng như các điều kiện chuyển trạng thái của hệ thống.

Phương thức pc là một phương thức trực quan, có chức năng xác định nhãn của một đại lý tương ứng với một chuyến bay trong bất kỳ trạng thái nào của hệ thống Phương thức này yêu cầu ba tham số đầu vào: S, FI và AI, trong đó S thuộc kiểu dữ liệu ATASys (trạng thái hệ thống), FI là kiểu dữ liệu FId (định danh chuyến bay) và AI thuộc kiểu dữ liệu liên quan.

AId là kiểu dữ liệu định danh của các đại lý, trong khi đầu ra của phương thức trực quan PC là giá trị thuộc kiểu nhãn của các đại lý (Label) Tại trạng thái khởi tạo, các thông tin này đóng vai trò quan trọng trong việc xác định và quản lý các đại lý.

Nhãn của các đại lý liên quan đến chuyến bay có giá trị tại trạng thái khởi tạo (init) của hệ thống Hình 4.2b minh họa phần đặc tả tiếp theo của mô-đun ATA, trong đó trình bày phương thức trực quan pc và xác định nhãn của các đại lý.

11: eq pc(init,FI:FId,AI:AId) = rm

Hình 4.2b: Đặc tả phương thức pc tại trạng thái khởi tạo của hệ thống (init)

Trong phần đặc tả tiếp theo của module ATA, chúng ta sẽ đi vào chi tiết phương thức queue trong trạng thái khởi tạo của hệ thống (init) Ở giai đoạn khởi tạo, tất cả các hàng đợi tương ứng với từng chuyến bay đều ở trạng thái rỗng, do đó, đặc tả được thực hiện như sau:

12: eq queue(init, FI:FId) = empty

Hình 4.2c: Đặc tả chi tiết cho phương thức queue tại trạng thái khởi tạo (init) của hệ thống

Chúng ta đã hoàn thành việc mô tả hai phương thức trực quan pc và queue của hệ thống ở trạng thái khởi tạo (init) Tiếp theo, chúng ta cần đi vào chi tiết để mô tả các phương thức chuyển trạng thái want, try và exit trong mô-đun ATA.

Các phương thức chuyển trạng thái want, try và exit của hệ thống yêu cầu sử dụng các tham số đầu vào thuộc các kiểu dữ liệu như không gian trạng thái (ATASys), đại lý (AId), hàng đợi (Queue) và chuyến bay (FId) Điều này sẽ được trình bày chi tiết trong phần đặc tả tiếp theo của mô-đun.

ATA chúng ta cần khai báo các biến thuộc các kiểu tương ứng trước khi sử dụng

Hình 4.2d: Khai báo các biến S, AI, AJ, QI, FI trước khi sử dụng

Phương thức c-want được sử dụng để xác định liệu một đại lý bất kỳ AI có đủ điều kiện chuyển sang nhãn wt cho chuyến bay FI tại trạng thái S hay không Nếu nhãn của AI tương ứng với FI tại trạng thái S là rm (nghĩa là đại lý chưa có nhu cầu sử dụng chuyến bay FI), phương thức c-want sẽ trả về giá trị true Ngược lại, nếu không, phương thức sẽ trả về giá trị false Đầu vào của c-want bao gồm ba tham số với các kiểu dữ liệu tương ứng.

ATASys, FId, AId Đầu ra của phương thức c-want có kiểu dữ liệu logic Hình 4.2e mô tả chi tiết phương thức c-want trong mô-đun ATA.

17: op c-want : ATASys FId AId -> Bool {strat: (0 1)} 18: eq c-want(S,FI,AI) = (pc(S,FI,AI) = rm)

Hình 4.2e: Đặc tả chi tiết phương thức c-want

Nếu một đại lý bất kỳ AI chưa có nhu cầu sử dụng một chuyến bay bất kỳ

Sau khi thực hiện lệnh "want" tại trạng thái S với chuyến bay FI, nhãn của AJ ở trạng thái mới "want(S, FI, AI)" sẽ là wt nếu AI bằng AJ Ngược lại, nhãn của AJ sẽ không thay đổi so với trạng thái trước đó, chỉ có nhãn của AI là thay đổi.

Nếu phương thức kiểm tra điều kiện c-want của AI đối với chuyến bay FI ở trạng thái S trả về giá trị False, điều này có nghĩa là AI không đủ điều kiện để thực hiện lệnh want cho chuyến bay FI tại trạng thái S Sau khi thực hiện lệnh want, trạng thái của hệ thống sẽ không thay đổi so với trước đó.

4.2f là phần đặc tả tiếp theo của mô-đun ATA, đặc tả chi tiết cho phương thức chuyển trạng thái want

19: ceq pc(want(S,FI,AI),FI,AJ) = (if AI = AJ then wt else pc(S,FI,AJ) fi) if c-want(S,FI,AI)

20: ceq want(S,FI,AI) = S if not c-want(S,FI,AI)

Hình 4.2f: Đặc tả chi tiết phương thức want

Nếu một đại lý AI chưa sử dụng chuyến bay FI, sau khi thực hiện lệnh want tài trạng thái S, AI sẽ được đưa vào cuối hàng đợi tương ứng với chuyến bay FI tại trạng thái S đó Phần đặc tả tiếp theo của mô-đun ATA cung cấp chi tiết cho phương thức queue như hình 4.2g.

21: ceq queue(want(S,FI,AI),FI) = put(AI,queue(S,FI)) if c-want(S,FI,AI)

Hình 4.2g: Đặc tả chi tiết phương thức queue

Chứng minh tính đúng đắn của hệ thống

Để đảm bảo tính chính xác trong việc sử dụng chung các chuyến bay của hệ thống, cần xây dựng mô-đun INV nhằm kiểm chứng rằng không xảy ra xung đột trong quá trình thực thi.

3: pred inv : ATASys FId AId AId

op inv : ATASys FId AId AId -> Bool

7: eq inv(S,FI,AI,AJ) = (((pc(S,FI,AI) = cs) and(pc(S,FI,AJ) = cs)) implies AI = AJ)

Hình 4.8: Đặc tả mô-đun INV

Chi tiết của mô-đun INV như sau:

Mô-đun INV kế thừa từ mô-đun ATA với kiểu protecting, định nghĩa thuộc tính bất invariant inv là một phép toán với bốn tham số đầu vào: không gian trạng thái ATASys, chuyến bay FId, và hai đại lý AId Đầu ra của inv là kiểu logic Bool Các biến S, AI, AJ, và FI được khai báo làm tham số cho phép toán inv Ý nghĩa của thuộc tính bất invariant inv được thể hiện qua biểu thức logic, trong đó nếu hai đại lý khác nhau AI và AJ cùng sử dụng một chuyến bay FI tại một trạng thái S nhất định, thì thuộc tính inv sẽ có giá trị false Để chứng minh rằng giá trị của thuộc tính inv luôn là true tại mọi trạng thái S trong không gian trạng thái ATASys, nghĩa là không xảy ra xung đột giữa các đại lý trong việc sử dụng chuyến bay, cần xây dựng mô-đun ISTEP để áp dụng tư tưởng quy nạp của CafeOBJ.

s được hiểu là trạng thái hiện tại

s' được hiểu là trạng thái tiếp theo của s

Bước chứng minh quy nạp

7: eq istep(AI,AJ) = inv(s,FI,AI,AJ) implies inv(s',FI,AI,AJ)

Hình 4.9: Đặc tả mô-đun ISTEP

Bước cơ sở: Chứng minh thuộc tính bất biến inv thỏa mãn tại trạng thái khởi tạo init của hệ thống

4: red inv(init,Fi,Ai,Aj)

Hình 4.10: Chứng minh tính đúng đắn của thuộc tính bất biến inv tại trạng thái khởi tạo init của hệ thống

Kết quả của lệnh inv là true, cho thấy thuộc tính bất biến inv được thỏa mãn trong trạng thái khởi tạo init của hệ thống.

Có thể thực hiện các bước rút gọn để chứng minh một biểu thức logic trong CafeOBJ, hoặc tự tay thực hiện từng bước rút gọn để đạt được kết quả cuối cùng.

Để chứng minh cho trường hợp tổng quát với phương thức chuyển trạng thái "want", cần khai báo thêm một đại lý thứ ba là Ak, bên cạnh Ai và Aj đã được sử dụng trong trạng thái khởi tạo "init".

Việc sử dụng đại lý thứ ba Ak giúp chia nhỏ công đoạn chứng minh thành các phần nhỏ hơn Bằng cách chứng minh từng phần nhỏ này, ta có thể xác nhận rằng toàn bộ công đoạn ban đầu cũng đã được chứng minh đúng.

Khai báo các toán tử

4: ops Ai Aj Ak : -> AId

Giả sử inv đúng với trạng thái s,

ta khai báo như sau:

5: eq inv(s,FI:FId,AI:AId,AJ:AId) = true

Kiểm tra tính đúng đắn

7: red inv(s',Fi,Ai,Aj)

Hình 4.11: Chứng minh tính đúng đắn của thuộc tính bất biến inv trong trường hợp tổng quát với phương thức chuyển trạng thái want

Kết quả thực hiện lệnh trên tạo ra một biểu thức logic, và để rút gọn biểu thức này, cần bổ sung thêm tri thức và các luật Khi thực hiện lệnh want với đại lý Ak, cần kiểm tra điều kiện c-want của Ak, đồng thời Ak có thể là Ai hoặc không Vì vậy, chúng ta cần xây dựng bảng phân tách các trường hợp tương ứng.

Các trường hợp cần chứng minh

Các trường hợp của c-want

Các trường hợp quan hệ giữa Ai và Ak

Các trường hợp quan hệ giữa Aj và

3 not (Ai = Ak) Aj = Ak

Hình 4.12: Bảng phân tách các trường hợp cần chứng minh cho thuộc tính bất biến inv với phương thức chuyển trạng thái want

Nếu tất cả các trường hợp cần chứng minh đều đúng, thì tính chính xác của thuộc tính bất biến inv trong phương thức chuyển trạng thái want sẽ được xác nhận.

Trường hợp c-want(s,Fi,Ak), Ai = Ak, Aj = Ak:

C-want(s,Fi,Ak) được định nghĩa là c-want(s,Fi,Ak) = true, với điều kiện pc(s,Fi,Ak) phải bằng rm Do đó, trong CafeOBJ, chúng ta khai báo luật: eq pc(s,Fi,Ak) = rm.

- Ai = Ak nghĩa là (Ai = Ak) = true Do đó, ta khai báo trong CafeOBJ luật sau : eq Ai = Ak

- Aj = Ak nghĩa là (Aj = Ak) = true Do đó, ta khai báo trong CafeOBJ luật sau : eq Aj = Ak

Hình 4.13 là phần đặc tả cho trường hợp này trong CafeOBJ để kiểm chứng thuộc tính bất biến inv open INV

Khai báo các hằng bất kỳ ops s s' : -> ATASys op Fi : -> FId ops Ai Aj Ak : -> AId

Giả sử inv đúng với trạng thái s eq inv(s,FI:FId,AI:AId,AJ:AId) = true

c-want(s,Fi,Ak) eq pc(s,Fi,Ak) = rm

Ai = Ak eq Ai = Ak

Aj = Ak eq Aj = Ak

Trạng thái tiếp theo của s eq s' = want(s,Fi,Ak)

Kiểm tra tính đúng đắn red inv(s',Fi,Ai,Aj) close

Hình 4.13: Kiểm chứng trường hợp c-want(s,Fi,Ak), Ai = Ak, Aj = Ak

Kết quả thực hiện đoạn lệnh trên trả về giá trị true Vậy trường hợp này được kiểm chứng là đúng

Trường hợp c-want(s,Fi,Ak), Ai = Ak, not (Aj = Ak) :

- eq pc(s,Fi,Ak) = rm

Hình 4.14 là phần đặc tả cho trường hợp này trong CafeOBJ: open INV ops s s' : -> ATASys op Fi : -> FId ops Ai Aj Ak : -> AId

Giả sử inv đúng với trạng thái s eq inv(s,FI:FId,AI:AId,AJ:AId) = true

c-want(s,Fi,Ak) eq pc(s,Fi,Ak) = rm

Ai = Ak eq Ai = Ak

not (Aj = Ak) eq (Aj = Ak) = false eq s' = want(s,Fi,Ak)

Kiểm tra tính đúng đắn red inv(s',Fi,Ai,Aj) close

Hình 4.14: Kiểm chứng trường hợp c-want(s,Fi,Ak), Ai = Ak, not (Aj = Ak)

Kết quả thực hiện đoạn lệnh trên trả về giá trị true Vậy trường hợp này được kiểm chứng là đúng

Trường hợp c-want(s,Fi,Ak), not (Ai = Ak), Aj = Ak :

- eq pc(s,Fi,Ak) = rm

- eq (Ai = Ak) = false open INV

Khai báo các hằng bất kỳ ops s s' : -> ATASys op Fi : -> FId ops Ai Aj Ak : -> AId

Giả sử inv đúng với trạng thái s eq inv(s,FI:FId,AI:AId,AJ:AId) = true

c-want(s,Fi,Ak) eq pc(s,Fi,Ak) = rm

Aj = Ak eq Aj = Ak

not (Ai = Ak) eq (Ai = Ak) = false

Trạng thái tiếp theo của s eq s' = want(s,Fi,Ak)

Kiểm tra tính đúng đắn red inv(s',Fi,Ai,Aj) close

Hình 4.15: Kiểm chứng trường hợp c-want(s,Fi,Ak), not (Ai = Ak), Aj = Ak

Kết quả thực hiện đoạn lệnh trên trả về giá trị true Vậy trường hợp này được kiểm chứng là đúng

Trường hợp c-want(s,Fi,Ak), not (Ai = Ak), not (Aj = Ak) :

- eq pc(s,Fi,Ak) = rm

Hình 4.16 là phần đặc tả cho trường hợp này trong CafeOBJ để kiểm chứng thuộc tính bất biến inv open INV

Khai báo các hằng bất kỳ ops s s' : -> ATASys op Fi : -> FId ops Ai Aj Ak : -> AId

Giả sử inv đúng với trạng thái s eq inv(s,FI:FId,AI:AId,AJ:AId) = true

c-want(s,Fi,Ak) eq pc(s,Fi,Ak) = rm

not (Ai = Ak) eq (Ai = Ak) = false

not (Aj = Ak) eq (Aj = Ak) = false

Trạng thái tiếp theo của s eq s' = want(s,Fi,Ak)

Kiểm tra tính đúng đắn red inv(s',Fi,Ai,Aj) close

Hình 4.16: Trường hợp c-want(s,Fi,Ak), not (Ai = Ak), not (Aj = Ak) Kết quả thực hiện đoạn lệnh trên trả về một biểu thức logic như sau:

((((pc(s,Fi,Ai) = cs) and (pc(s,Fi,Aj) = cs)) and (Ai

= Aj)) xor (((pc(s,Fi,Ai) = cs) and (pc(s,Fi,Aj) cs)) xor true))

Hình 4.17: Kết quả trường hợp c-want(s,Fi,Ak), not (Ai = Ak), not (Aj = Ak)

Biểu thức logic inv(s, Fi, Ai, Aj) trả về giá trị true, tương đương với inv(s, FI:FId, AI:AId, AJ:AId) = true Do đó, inv(s, Fi, Ai, Aj) sẽ cho kết quả true khi Fi và Ai được xác định.

Aj là những hằng số cụ thể được thay vào

Từ suy luận trên, ta có thể biến đổi đặc tả của trường hợp này như sau: open INV

Khai báo các hằng bất kỳ ops s s' : -> ATASys op Fi : -> FId ops Ai Aj Ak : -> AId

Giả sử inv đúng với trạng thái s eq inv(s,FI:FId,AI:AId,AJ:AId) = true

c-want(s,Fi,Ak) eq pc(s,Fi,Ak) = rm

not (Ai = Ak) eq (Ai = Ak) = false

not (Aj = Ak) eq (Aj = Ak) = false

Trạng thái tiếp theo của s eq s' = want(s,Fi,Ak)

Kiểm tra tính đúng đắn red inv(s,Fi,Ai,Aj) implies inv(s',Fi,Ai,Aj) close

Hình 4.18: Kiểm chứng trường hợp c-want(s,Fi,Ak), not (Ai = Ak), not (Aj = Ak) sử dụng INST, TRANS, HIDE

Kết quả thực hiện đoạn lệnh trên trả về giá trị true Vậy trường hợp này được kiểm chứng là đúng

Trường hợp not c-want(s,Fi,Ak) : not c-want(s,Fi,Ak) có nghĩa là c-want(s,Fi,Ak) = false Do đó, ta khai báo trong CafeOBJ luật: c-want(s,Fi,Ak) = false

Hình 4.19 là phần đặc tả cho trường hợp này trong CafeOBJ để kiểm chứng thuộc tính bất biến inv open INV

Khai báo các hằng bất kỳ ops s s' : -> ATASys op Fi : -> FId ops Ai Aj Ak : -> AId

Giả sử inv đúng với trạng thái s eq inv(s,FI:FId,AI:AId,AJ:AId) = true

not c-want(s,Fi,Ak) eq c-want(s,Fi,Ak) = false

Trạng thái tiếp theo của s eq s' = want(s,Fi,Ak)

Kiểm tra tính đúng đắn red inv(s',Fi,Ai,Aj) close

Hình 4.19: Kiểm chứng trường hợp not c-want(s,Fi,Ak)

Kết quả thực hiện đoạn lệnh trên trả về giá trị true Vậy trường hợp này đã được kiểm chứng là đúng

Tính đúng đắn của thuộc tính bất biến INV với phương thức chuyển trạng thái want đã được chứng minh là chính xác trong tất cả các trường hợp có thể xảy ra.

Tương tự ta chứng minh tính đúng đắn của thuộc tính inv với phương thức chuyển tạng thái try

- c-try(s,Fi,Ak) thỏa mãn, có nghĩa là pc(s,Fi,Ak) = wt và top(queue(s,Fi))

= Ak Do đó, ta khai báo các luật trong CafeOBJ là : eq pc(s,Fi,Ak) = wt , eq top(queue(s,Fi)) = Ak

- Ai = Ak thỏa mãn, có nghĩa là (Ai = Ak) = true, khai báo trong CafeOBJ luật: eq Ai = Ak

Trong CafeOBJ, khi Aj bằng Ak (Aj = Ak), điều này được xác định là đúng (true) và được khai báo bằng luật eq Aj = Ak Đặc tả trường hợp 1 của phương thức try trong CafeOBJ được thực hiện bằng cách mở INV.

Khai báo các hằng bất kỳ ops s s' : -> ATASys op Fi : -> FId ops Ai Aj Ak : -> AId

Khai báo các giả thiết eq inv(s,FI:FId,AI:AId,AJ:AId) = true

c-try(s,Fi,Ak) eq pc(s,Fi,Ak) = wt eq top(queue(s,Fi)) = Ak

Ai = Ak eq Ai = Ak

Aj = Ak eq Aj = Ak

Trạng thái kế tiếp của s eq s' = try(s,Fi,Ak)

Rút gọn để kiểm chứng red inv(s',Fi,Ai,Aj) close

Hình 4.20: Kiểm chứng trường hợp 1 của phương thức try

Kết quả thực hiện đoạn lệnh trên trả về giá trị true Vậy trường hợp 1 của phương thức try được kiểm chứng là đúng

- c-try(s,Fi,Ak) thỏa mãn, có nghĩa là pc(s,Fi,Ak) = wt và top(queue(s,Fi))

= Ak Do đó, ta khai báo các luật trong CafeOBJ là : eq pc(s,Fi,Ak) = wt , eq top(queue(s,Fi)) = Ak

- Ai = Ak thỏa mãn, có nghĩa là (Ai = Ak) = true, khai báo trong CafeOBJ luật: eq Ai = Ak

Trong CafeOBJ, quy tắc không bằng nhau được thể hiện qua biểu thức (Aj = Ak) = false, với khai báo eq (Aj = Ak) = false Điều này áp dụng cho trường hợp 2 của phương thức try, cụ thể là mở INV.

Khai báo các hằng tùy ý ops s s' : -> ATASys op Fi : -> FId ops Ai Aj Ak : -> AId

Khai báo các giả thiết eq inv(s,FI:FId,AI:AId,AJ:AId) = true

c-try(s,Fi,Ak) eq pc(s,Fi,Ak) = wt eq top(queue(s,Fi)) = Ak

Ai = Ak eq Ai = Ak

~(Aj = Ak) eq (Aj = Ak) = false

Định nghĩa trạng thái kế tiếp của s eq s' = try(s,Fi,Ak)

Thực hiện rút gọn để kiểm chứng red inv(s',Fi,Ai,Aj) close

Hình 4.21: Kiểm chứng try với trường hợp 2

Kết quả của đoạn lệnh trên trả về một biểu thức logic:

((pc(s,Fi,Aj) = cs) xor true):Bool

Để chứng minh biểu thức logic trả về giá trị true, cần khai báo một bổ đề bổ sung, cụ thể là bổ đề lemma1 trong mô-đun LEMMA1.

Khai báo một bất biến với cách tiếp cận khác op lemma1 : ATASys FId AId -> Bool

Khai báo các biến trong CafeOBJ var S : ATASys var AI : AId var FI : FId

Định nghĩa bất biến với cách tiếp cận mới eq lemma1(S,FI,AI) = (pc(S,FI,AI) = cs implies top(queue(S,FI)) = AI)

Hình 4.23: Phần đặc tả của bổ đề lemma1

Phân tích từ lemma1 ta thấy một bổ đề đúng đắn như sau:

((pc(s,Fi,Aj) = cs) = false

Bổ đề đúng đắn được rút ra từ lemma1 đã được áp dụng vào đặc tả kiểm chứng try trong trường hợp 2, dẫn đến đặc tả như sau: open INV.

Khai báo các hằng tùy ý ops s s' : -> ATASys op Fi : -> FId ops Ai Aj Ak : -> AId

Khai báo các giả thiết eq inv(s,FI:FId,AI:AId,AJ:AId) = true

c-try(s,Fi,Ak) eq pc(s,Fi,Ak) = wt eq top(queue(s,Fi)) = Ak

Ai = Ak eq Ai = Ak

~(Aj = Ak) eq (Aj = Ak) = false

Thêm bổ đề eq (pc(s,Fi,Aj) = cs ) = false

Định nghĩa trạng thái kế tiếp của s eq s' = try(s,Fi,Ak)

Thực hiện rút gọn để kiểm chứng red inv(s',Fi,Ai,Aj) close

Hình 4.25: Kiểm chứng try với trường hợp 2 sau khi áp dụng bổ đề đúng đắn được rút ra từ lemma1

Kết quả thực hiện đoạn lệnh trên trả về giá trị true Vậy trường hợp 2 được kiểm chứng là đúng

Trường hợp 3: c-try(s,Fi,Ak) not (Ai = Ak)

Aj = Ak Đặc tả: open INV

Khai báo các hằng tùy ý ops s s' : -> ATASys op Fi : -> FId ops Ai Aj Ak : -> AId

Khai báo các giả thiết eq inv(s,FI:FId,AI:AId,AJ:AId) = true

c-try(s,Fi,Ak) eq pc(s,Fi,Ak) = wt eq top(queue(s,Fi)) = Ak

not (Ai = Ak) eq (Ai = Ak) = false

(Aj = Ak) eq Aj = Ak

Định nghĩa trạng thái kế tiếp của s eq s' = try(s,Fi,Ak)

Thực hiện rút gọn để kiểm chứng red inv(s',Fi,Ai,Aj) close

Hình 4.26: Kiểm chứng try với trường hợp 3

Kết quả thực hiện đoạn lệnh trên trả về một biểu thức logic như sau:

(pc(s,Fi,Ai) = cs) xor true

Hình 4.27: Kết quả trả về của đoạn lệnh kiểm chứng try với trường hợp 3

Phân tích từ bổ đề lemma1 đã khai báo ở trên ta thấy một bổ đề đúng đắn như sau:

((pc(s,Fi,Aj) = cs) = false

Hình 4.28: Bổ đề đúng đắn được rút ra từ bổ đề lemma1

Thêm bổ đề này vào đặc tả và thực hiện đoạn lệnh ta thấy kết quả trả về true Vậy trường hợp 3 được kiểm chứng là đúng

Ngày đăng: 27/06/2022, 09:13

HÌNH ẢNH LIÊN QUAN

(variables), các phương trình (equations), các dịch chuyển (transitions). Hình 2.5 mô tả chi tiết việc tổ chức các khối của  mô-đun NAT+ - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
variables , các phương trình (equations), các dịch chuyển (transitions). Hình 2.5 mô tả chi tiết việc tổ chức các khối của mô-đun NAT+ (Trang 14)
Hình 3.1: Lưu đồ mô tả quá trình hoạt động của hệ thống cũng như tính chất độc quyền truy xuất của các tác tử đối với mỗi tài nguyên - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 3.1 Lưu đồ mô tả quá trình hoạt động của hệ thống cũng như tính chất độc quyền truy xuất của các tác tử đối với mỗi tài nguyên (Trang 17)
Hình 3.2: Thao tác của hệ thống đối với mỗi hàng đợi tương ứng với mỗi tài nguyên. - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 3.2 Thao tác của hệ thống đối với mỗi hàng đợi tương ứng với mỗi tài nguyên (Trang 18)
Hình 3.3a: Một số kịch bản của hệ thống. - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 3.3a Một số kịch bản của hệ thống (Trang 19)
Hình 3.3b: Một số kịch bản của hệ thống. - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 3.3b Một số kịch bản của hệ thống (Trang 20)
Hình 3.8: Quy trình chứng minh các thuộc tính bất biến của hệ đa tác tử sử dụng chung đa tài nguyên - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 3.8 Quy trình chứng minh các thuộc tính bất biến của hệ đa tác tử sử dụng chung đa tài nguyên (Trang 23)
Hình 4.1: Mô hình hệ thống đại lý vé máy bay được mô tả trong hệ chuyển trạng thái quan sát được – OTS - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 4.1 Mô hình hệ thống đại lý vé máy bay được mô tả trong hệ chuyển trạng thái quan sát được – OTS (Trang 25)
Hình 4.2a: Phần đặc tả đầu tiên của mô-đun ATA. - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 4.2a Phần đặc tả đầu tiên của mô-đun ATA (Trang 26)
Hình 4.5: Đặc tả mô-đun LABEL. - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 4.5 Đặc tả mô-đun LABEL (Trang 32)
Hình 4.8: Đặc tả mô-đun INV. Chi tiết của mô-đun INV như sau: - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 4.8 Đặc tả mô-đun INV. Chi tiết của mô-đun INV như sau: (Trang 33)
Hình 4.10: Chứng minh tính đúng đắn của thuộc tính bất biến inv tại trạng thái khởi tạo init của hệ thống - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 4.10 Chứng minh tính đúng đắn của thuộc tính bất biến inv tại trạng thái khởi tạo init của hệ thống (Trang 34)
Hình 4.9: Đặc tả mô-đun ISTEP. - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 4.9 Đặc tả mô-đun ISTEP (Trang 34)
Hình 4.11: Chứng minh tính đúng đắn của thuộc tính bất biến inv trong trường - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 4.11 Chứng minh tính đúng đắn của thuộc tính bất biến inv trong trường (Trang 35)
Hình 4.12: Bảng phân tách các trường hợp cần chứng minh cho thuộc tính bất - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 4.12 Bảng phân tách các trường hợp cần chứng minh cho thuộc tính bất (Trang 36)
Hình 4.13 là phần đặc tả cho trường hợp này trong CafeOBJ để kiểm chứng thuộc tính bất biến inv - (LUẬN văn THẠC sĩ) chứng minh tính đúng đắn cho bài toán xung đột tài nguyên cho các hệ đa tác tử
Hình 4.13 là phần đặc tả cho trường hợp này trong CafeOBJ để kiểm chứng thuộc tính bất biến inv (Trang 36)

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