Luận văn: Nghiên cứu Chứng minh tự động Theorem Proving trong CafeOBJ

Luận văn thạc sĩ: Nghiên cứu chứng minh tự động theorem proving trong CafeOBJ003. Khám phá các kỹ thuật và ứng dụng trong lĩnh vực này.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Luận Văn Thạc Sĩ

2010

71
1
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

LỜI CAM ĐOAN

MỤC LỤC

BẢNG CÁC CHỮ VIẾT TẮT

DANH MỤC HÌNH VẼ

1. CHƢƠNG 1: GIỚI THIỆU

1.1. Đặt vấn đề

1.2. Nêu bài toán

1.3. Kết quả

1.4. Cấu trúc luận văn

2. CHƢƠNG 2: TỔNG QUAN VỀ CafeOBJ

2.1. Giới thiệu

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

2.3. Ví dụ

3. CHƢƠNG 3: ĐẶC TẢ HỆ THỐNG ĐA TÁC TỬ VÀ CÁC THUỘC TÍNH

3.1. Mô tả bài toán QLOCK

4. CHƢƠNG 4: Kiểm chứng hệ thống đa tác tử

4.1. Tƣ tƣởng kiểm chứng

4.2. Kiểm chứng các thuộc tính của bài toán QLOCK

4.2.1. Chứng minh inv1(S,I,J)

4.2.2. Chứng minh inv2(S,I)

4.2.3. Chứng minh inv3(S,I)

4.2.4. Chứng minh inv4(S,I)

4.2.5. Chứng minh inv5(S,I)

5. CHƢƠNG 5: Kết luận

Tài liệu tham khảo

Phụ lục 1 Chứng minh cho inv1(s,i,j)

Phụ lục 2 Chứng minh cho inv2(s,i)

Phụ lục 3 Chứng minh cho inv3 (s,i)

Phụ lục 4 Chứng minh cho inv4(s,i)

Phụ lục 5 Chứng minh cho inv5(s,i)

Tóm tắt

I. Tổng Quan Luận Văn Thạc Sĩ Về Chứng Minh Tự Động CafeOBJ

Luận văn thạc sĩ nghiên cứu về chứng minh tự động (Theorem Proving) trong CafeOBJ đóng vai trò quan trọng trong việc nâng cao độ tin cậy và chất lượng của phần mềm. Đặc tả phần mềm được chia thành hai loại: đặc tả phi hình thức (dựa trên ngôn ngữ tự nhiên) và đặc tả hình thức (dựa trên kiến trúc toán học). Đặc tả hình thức, mặc dù chặt chẽ, đòi hỏi các yêu cầu được phân tích chi tiết, các mô tả trừu tượng của các chức năng chương trình được tạo ra để làm rõ yêu cầu. Có hai hướng tiếp cận đặc tả hình thức: tiếp cận đại số (mô tả hệ thống dưới dạng các toán tử và các quan hệ) và tiếp cận mô hình (mô hình hệ thống được cấu trúc sử dụng các thực thể toán học như các tập hợp và các thứ tự). Việc kiểm thử phần mềm chỉ có thể chỉ ra các lỗi phát hiện được nhưng không thể đảm bảo phần mềm hoàn toàn không có lỗi. Các phương pháp kiểm chứng, ngược lại, có thể đảm bảo hệ thống không có lỗi sau khi đã được kiểm chứng đúng đắn. Chứng minh tự động (Theorem Proving) có thể kiểm chứng các hệ thống với mô hình là vô hạn trạng thái; CafeOBJ là một ngôn ngữ hỗ trợ đặc tả và kiểm chứng theo tư tưởng của chứng minh tự động. Mục đích của luận văn là tìm hiểu về phương pháp đặc tả và kiểm chứng hình thức phần mềm trong CafeOBJ.

1.1. Tầm Quan Trọng của Đặc Tả và Kiểm Chứng Hình Thức

Đặc tả và kiểm chứng hình thức, sử dụng các ngôn ngữ hình thức, đóng vai trò then chốt trong việc xây dựng các hệ thống phần mềm đáng tin cậy. Phương pháp này giúp phát hiện và loại bỏ các lỗi tiềm ẩn ngay từ giai đoạn đầu của quá trình phát triển, giảm thiểu chi phí sửa chữa và bảo trì sau này. Bằng cách sử dụng các công cụ như CafeOBJ, các nhà phát triển có thể chứng minh tính đúng đắn của các thuộc tính quan trọng của hệ thống, đảm bảo rằng nó hoạt động như mong đợi trong mọi tình huống. Điều này đặc biệt quan trọng đối với các hệ thống quan trọng như hệ thống điều khiển máy bay, hệ thống quản lý y tế, hoặc hệ thống tài chính, nơi mà một lỗi nhỏ có thể gây ra hậu quả nghiêm trọng.

1.2. Giới Thiệu Ngôn Ngữ Đặc Tả Đại Số CafeOBJ

CafeOBJ là một ngôn ngữ đặc tả đại số mạnh mẽ, được phát triển để hỗ trợ việc chứng minh tự độngkiểm chứng phần mềm. Ngôn ngữ này dựa trên các khái niệm toán học như đại số trừu tượng và logic biến đổi, cho phép các nhà phát triển mô hình hóa hệ thống của họ một cách chính xác và chặt chẽ. CafeOBJ cung cấp một cú pháp rõ ràng và dễ hiểu, cũng như các công cụ hỗ trợ việc chứng minh định lýkiểm tra mô hình. Nhờ đó, các nhà phát triển có thể sử dụng CafeOBJ để xác minh rằng hệ thống của họ đáp ứng các yêu cầu kỹ thuật và các thuộc tính an toàn quan trọng.

II. Vấn Đề Và Thách Thức Trong Chứng Minh Tự Động Bằng CafeOBJ

Bài toán thực hiện trong khóa luận là bài toán đặc tả và kiểm chứng hệ thống đa tác tử (MAS) sử dụng ngôn ngữ CafeOBJ. Tài liệu [1] đã giải quyết được trường hợp xung đột tài nguyên, tại một thời điểm chỉ có một tiến trình (agent) được sử dụng tài nguyên dùng chung. Khóa luận tập trung vào chứng minh các thuộc tính khác của hệ thống đa tác tử bằng ngôn ngữ CafeOBJ; tư tưởng chứng minh là dùng phương pháp qui nạp, phân rã bài toán ra các trường hợp và thêm các bổ đề vào. Tư tưởng trên đã kiểm chứng được hệ thống đa tác tử (MAS) với không gian trạng thái là vô hạn.

2.1. Khó khăn khi Đặc Tả Hệ Thống Đa Tác Tử trong CafeOBJ

Việc đặc tả các hệ thống đa tác tử (MAS) trong CafeOBJ đặt ra nhiều thách thức. Đầu tiên, cần phải mô hình hóa chính xác các tác nhân, môi trường tương tác của chúng và các quy tắc chi phối hành vi của hệ thống. Thứ hai, việc đặc tả các thuộc tính quan trọng của hệ thống (ví dụ: tính an toàn, tính sống còn) đòi hỏi sự hiểu biết sâu sắc về ngữ nghĩa của hệ thống và khả năng biểu diễn chúng một cách hình thức. Cuối cùng, việc đảm bảo rằng các đặc tả là đầy đủ và nhất quán là một nhiệm vụ không hề dễ dàng. Bất kỳ sự thiếu sót hoặc mâu thuẫn nào trong đặc tả có thể dẫn đến kết quả kiểm chứng không chính xác.

2.2. Vượt qua Giới Hạn Của Kiểm Chứng Mô Hình với CafeOBJ

Kiểm chứng mô hình (Model Checking) là một kỹ thuật phổ biến để xác minh tính đúng đắn của các hệ thống phần mềm. Tuy nhiên, phương pháp này có một hạn chế lớn: nó chỉ có thể xử lý các hệ thống có không gian trạng thái hữu hạn. Đối với các hệ thống phức tạp như hệ thống đa tác tử, không gian trạng thái thường là vô hạn, khiến cho việc sử dụng kiểm chứng mô hình trở nên bất khả thi. CafeOBJ, với khả năng hỗ trợ chứng minh tự động, cung cấp một giải pháp thay thế hiệu quả. Bằng cách sử dụng các kỹ thuật như quy nạp và phân rã trường hợp, CafeOBJ cho phép các nhà phát triển kiểm chứng các thuộc tính của các hệ thống có không gian trạng thái vô hạn.

III. Phương Pháp Chứng Minh Tự Động Với CafeOBJ Trong QLOCK

QLOCK là một hệ thống sử dụng giao thức độc quyền truy xuất với một hàng đợi (Queue) dùng chung cho tất cả các tiến trình (processes) thỏa mãn các yêu cầu sau: Agents: không giới hạn số lượng các agents. Atomic action: khi có một action đang được thực hiện trong hàng đợi thì các hành động khác phải chờ cho đến khi hành động hiện thời kết thúc. Trạng thái ban đầu (initial state): mọi tiến trình là ở đoạn còn lại (Remainder Section) được gán nhãn là l1, và hàng đợi là rỗng. Trong bài toán QLOCK chúng ta phải sử dụng một hàng đợi để thực hiện phương thức độc quyền truy xuất cho cả hệ thống. Việc tạo ra một hàng đợi với các thuộc tính và phương thức cơ bản của một hàng đợi gồm các phương thức put đưa một thành phần vào hàng đợi, phương thức get xóa một thành phần ra khỏi hàng đợi.

3.1. Mô Hình Hóa Hệ Thống QLOCK Bằng OTS Trong CafeOBJ

Để kiểm chứng hệ thống QLOCK, hệ thống được mô hình hóa bằng hệ thống chuyển dịch tổng quan (OTS) trong CafeOBJ. Các ký số bao gồm: Sys (kiểu không gian trạng thái), Label (kiểu nhãn trạng thái), Pid (kiểu định danh tiến trình), Queue (kiểu hàng đợi). Các toán tử pc (trả về nhãn của agent) và queue (trả về hàng đợi). Hành động want (đưa về trạng thái tiếp theo khi tiến trình có nhãn l1), try (thực hiện lặp lại tiến trình có nhãn l2, nếu ở đỉnh hàng đợi thì chuyển sang cs), và exit (thực hiện tiến trình có nhãn cs). QLOCK được đặc tả như một OTS, với hai hàm queue và pc. Việc tạo ra một hàng đợi với các thuộc tính và phương thức cơ bản của một hàng đợi gồm các phương thức put đưa một thành phần vào hàng đợi, phương thức get xóa một thành phần ra khỏi hàng đợi.

3.2. Sử Dụng Quy Nạp Để Chứng Minh Thuộc Tính Bất Biến Trong QLOCK

Để chứng minh các thuộc tính bất biến trong QLOCK bằng phương pháp quy nạp, cần thực hiện các bước sau: (1) Chứng minh thuộc tính đúng với trạng thái khởi tạo (init). (2) Giả sử thuộc tính đúng tại trạng thái s. (3) Chứng minh thuộc tính đúng với mọi trạng thái tiếp theo s' có được từ s bằng các hành động want, try, exit. Nếu tất cả các bước trên trả về giá trị đúng (true), thì việc kiểm chứng các thuộc tính bất biến của hệ thống hoàn thành. Quá trình này đòi hỏi việc phân rã các trường hợp và thêm các bổ đề để giải quyết các trường hợp chưa trả ra kết quả true ngay lập tức. Các bổ đề này giúp chứng minh các thuộc tính bất biến, đảm bảo tính đúng đắn của hệ thống.

IV. Kiểm Chứng Các Thuộc Tính An Toàn Của Hệ Thống QLOCK

Để kiểm chứng các thuộc tính bất biến bằng phương pháp quy nạp trên không gian trạng thái RQLOCK, chúng ta khai báo theo mô đun được gọi là ISTEP trong CafeOBJ: 2 hằng s, s' là trạng thái của hệ thống; 5 toán tử istep1, istep2, istep3, istep4, istep5 có kiểu boolean; mỗi toán tử istep có công thức istep(I) = inv(s,I) implies inv(s',I) trong đó I là biến có kiểu Pid. Có nghĩa là để chứng minh inv(s',I)= true với giả thiết inv(S,I)=true, ta đi chứng minh istep(I) = true với mọi I.

4.1. Chứng Minh Tính Loại Trừ Lẫn Nhau Mutual Exclusion trong QLOCK

Tính loại trừ lẫn nhau là một thuộc tính an toàn quan trọng, đảm bảo rằng không có hai tiến trình nào đồng thời truy cập tài nguyên dùng chung. Để chứng minh tính chất này trong QLOCK, cần chứng minh rằng, với mọi trạng thái S và tiến trình I, J, nếu cả I và J đều ở trạng thái 'cs' (Critical Section), thì I và J phải là cùng một tiến trình. Để chứng minh cho inv1(S,I,J) = true với mọi trạng thái S và tiến trình I, J, A implies B = (A and B) xor (A xor true), do vậy A implies B = false chỉ khi A=true va B=false. Viết dƣới ngôn ngữ CafeOBJ nhƣ sau... Sau khi thực hiện như trên kết quả trả về là true, vậy trƣờng hợp này thỏa mãn.

4.2. Chứng Minh Tính Bất Biến Của Hàng Đợi trong QLOCK

Các thuộc tính liên quan đến hàng đợi cũng cần được kiểm chứng. Ví dụ, cần chứng minh rằng nếu một tiến trình ở trạng thái 'cs', thì nó phải nằm ở đầu hàng đợi. Hoặc chứng minh rằng nếu một tiến trình đang ở trong hàng đợi, thì nhãn của nó phải là 'l2' hoặc 'cs'. Chứng minh cho inv2(S,I) = true với mọi trạng thái S và tiến trình I Nhận xét: pc(s',i) = pc (want(s,k),i); top ( queue(want(s,k))) = some(k) nếu queue(s) = empty = some (k2) nếu queue(s)= k2,q. Do vậy sẽ phân rã thành các trƣờng hợp nhƣ sau: --> c-want(s,k), i = k --> c-want(s,k), ~(i = k), queue(s) = empty... Và ta chứng minh tất cả chúng là True

V. Kết Quả Và Đóng Góp Của Luận Văn Về CafeOBJ

Luận văn đã trình bày tổng quan về phương pháp đặc tả phần mềm sử dụng ngôn ngữ đại số CafeOBJ bao gồm: cấu trúc các thành phần của mô đun trong ba phần chính. Tiếp theo luận văn trình bày về phương pháp chứng minh tự động sử dụng tư tưởng qui nạp toán học để kiểm chứng các thuộc tính bất biến (invariant property). Sau đó áp dụng những kiến thức đã tìm hiểu để kiểm chứng 04 thuộc tính của hệ thống đa tác tử. Kết quả kiểm chứng cho thấy hệ thống đa tác tử thỏa mãn các thuộc tính cần kiểm tra tại mọi trạng thái của hệ thống.

5.1. Tóm Tắt Các Kết Quả Đạt Được Trong Luận Văn

Luận văn đã đạt được các kết quả sau: (1) Nắm vững phương pháp đặc tả phần mềm bằng CafeOBJ. (2) Làm chủ phương pháp chứng minh tự động bằng quy nạp toán học. (3) Áp dụng kiến thức để kiểm chứng 4 thuộc tính của hệ thống đa tác tử. Kết quả kiểm chứng cho thấy hệ thống đa tác tử thỏa mãn các thuộc tính cần kiểm tra tại mọi trạng thái của hệ thống. Cho một mô hình hệ thống vô hạn trạng thái, sẽ có rất nhiều trường hợp cho ra kết quả với giá trị không phải là “true”. Những trường hợp này sẽ trả về giá trị “true” với một vài bổ đề (lemmas).

5.2. Hướng Nghiên Cứu Phát Triển Trong Tương Lai Với CafeOBJ

Để đảm bảo tính đúng đắn của mô hình cafeOBJ sử dụng kiểm chứng bằng phương pháp tìm kiếm (searching) trạng thái, cố gắng tìm ra một trạng thái mà hệ thống đạt giá trị false. Ý tưởng khác là áp dụng phương pháp đã được đề xuất trong [10]. Nghiên cứu sâu hơn về việc tự động hóa quá trình tìm kiếm bổ đề có thể giúp giảm thiểu sự can thiệp của con người trong quá trình kiểm chứng. Nghiên cứu sâu hơn về việc tự động hóa quá trình tìm kiếm bổ đề có thể giúp giảm thiểu sự can thiệp của con người trong quá trình kiểm chứng.

24/09/2025

Trích đoạn nội dung tài liệu

Đặt vấn đề Đặc tả và kiểm chứng hình thức là một pha quan trọng nhằm nâng cao độ tin cậy và chất lƣợng của phần mềm. Có thể chia đặc tả phần mềm ra làm hai loại: đặc tả phi hình thức là đặc tả dựa trên ngôn ngữ tự nhiên và đặc tả hình thức là đặc tả dựa trên kiến trúc toán học. Đặc tả phi hình thức không đƣợc chặt chẽ bằng đặc tả hình thức nhƣng đƣợc nhiều ngƣời biết và có thể dùng để trao đổi với nhau để làm chính xác hóa các điểm chƣa rõ, chƣa thống nhất giữa các bên phát triển hệ thống. Đặc tả hình thức là đặc tả mà ở đó các từ ngữ, cú pháp, ngữ nghĩa đƣợc định nghĩa hình thức dựa vào toán học.

Đặc tả hình thức có thể coi là một phần của hoạt động đặc tả phần mềm. Trong đặc tả hình thức các đặc tả yêu cầu đƣợc phân tích chi tiết, các mô tả trừu tƣợng của các chức năng chƣơng trình có thể đƣợc tạo ra để làm rõ yêu cầu. Đặc tả phần mềm hình thức là một đặc tả đƣợc trình bày trên một ngôn ngữ bao gồm: từ vựng, cú pháp và ngữ nghĩa đƣợc định nghĩa. Định nghĩa ngữ nghĩa đảm bảo ngôn ngữ đặc tả không phải là ngôn ngữ tự nhiên mà dựa trên toán học.

Các chức năng nhận các đầu vào trả lại các kết quả. Các chức năng có thể định ra các điều kiện tiền tố và hậu tố. Điều kiện tiền tố là điều kiện cần thỏa mãn để có dữ liệu vào, điều kiện hậu tố là điều kiện cần thỏa mãn sau khi có kết quả. Có hai hƣớng tiếp cận đặc tả hình thức để phát triển các hệ thống tƣơng đối phức tạp: - Tiếp cận đại số, hệ thống đƣợc mô tả dƣới dạng các toán tử và các quan hệ - Tiếp cận mô hình, mô hình hệ thống đƣợc cấu trúc sử dụng các thực thể toán học nhƣ là các tập hợp và các thứ tự Kiểm thử một sản phẩm phần mềm là xây dựng một cách có chủ đích những tập dữ liệu và dãy thao tác nhằm đánh giá một số hoặc toàn bộ các tiêu chuẩn của sản phẩm phần mềm đó.

Thử nghiệm có hai mục đích: chỉ ra hệ thống phù hợp với đặc tả và phơi ra đƣợc các khuyết tật của hệ thống. Trong khi việc kiểm thử phần mềm (software testing) [4] chỉ có thể chỉ ra các lỗi phát hiện đƣợc nhƣng không thể chỉ ra đƣợc phần mềm hoàn toàn không có lỗi, các phƣơng pháp kiểm TIEU LUAN MOI download : skknchat@gmail.com 2 chứng có thể đảm bảo hệ thống không có lỗi sau khi đã đƣợc kiểm chứng đúng đắn. Theo hƣớng tiếp cận mô hình, chúng ta có phƣơng pháp kiểm chứng mô hình (Model checking) [3], với đầu vào là một otomat hữu hạn trạng thái và thuộc tính cần kiểm chứng, sẽ cho kết quả đầu ra là true hoặc false. Hiện nay có nhiều phƣơng pháp hỗ trợ đặc tả và kiểm chứng phần mềm theo hƣớng tiếp cận trên nhƣ SPIN [5], SMV [6], NuSMV [7].

Khác với kiểm chứng mô hình, chứng minh tự động (Theorem Proving) có thể kiểm chứng các hệ thống với mô hình là vô hạn trạng thái; CafeOBJ [2] là một ngôn ngữ hỗ trợ đặc tả và kiểm chứng theo tƣ tƣởng của chứng minh tự động. Mục đích của khóa luận là tìm hiểu về phƣơng pháp đặc tả và kiểm chứng hình thức phần mềm trong CafeOBJ. Từ mô tả của hệ thống cần kiểm chứng, chúng ta cần đặc tả hệ thống một cách hình thức bằng ngôn ngữ CafeOBJ. Các thuộc tính cần kiểm chứng của hệ thống cũng đƣợc đặc tả một cách tƣơng tự.

Sử dụng ngữ nghĩa cú pháp trong ngôn ngữ CafeOBJ để thể hiện các đặc tả hệ thống cũng nhƣ các đặc tả thuộc tính của hệ thống cần kiểm chứng dƣới dạng hình thức từ các phát biểu của ngôn ngữ tự nhiên.2 Nêu bài toán Bài toán thực hiện trong khóa luận là bài toán đặc tả và kiểm chứng hệ thống đa tác tử (MAS) sử dụng ngôn ngữ CafeOBJ. Tài liệu [1] đã giải quyết đƣợc trƣờng hợp xung đột tài nguyên, tại một thời điểm chỉ có một tiến trình (agent) đƣợc sử dụng tài nguyên dùng chung. Khóa luận của tôi sẽ tập trung vào chứng minh các thuộc tính khác của hệ thống đa tác tử bằng ngôn ngữ CafeOBJ; tƣ tƣởng chứng minh là dùng phƣơng pháp qui nạp, phân rã bài toán ra các trƣờng hợp và thêm các bổ đề vào. Tƣ tƣởng trên đã kiểm chứng đƣợc hệ thống đa tác tử (MAS) với không gian trạng thái là vô hạn.3 Kết quả Luận văn đã đạt đƣợc các kết quả sau: - Tìm hiểu và nắm rõ phƣơng pháp đặc tả phần mềm sử dụng ngôn ngữ đại số CafeOBJ.

- Nắm vững phƣơng pháp chứng minh tự động sử dụng tƣ tƣởng qui TIEU LUAN MOI download : skknchat@gmail.com 3 nạp toán học để kiểm chứng các thuộc tính bất biến (invariant property). Với phƣơng pháp này, để chứng minh một thuộc tính bất biến, chúng ta cần chứng minh nó đúng tại trạng thái khởi tạo của hệ thống. Giả sử thuộc tính đúng tại một trạng thái bất kỳ s, chúng ta phải chứng minh nó đúng với mọi trạng thái tiếp theo của s. - Áp dụng những kiến thức đã tìm hiểu để kiểm chứng 04 thuộc tính của hệ thống đa tác tử.

Trong hệ thống này, các tác tử chia sẻ một tài nguyên dùng chung. Số lƣợng tác tử trong hệ thống là vô hạn vì vậy không gian trang thái là vô hạn. Với hệ thống này, chúng ta không thể áp dụng các phƣơng pháp kiểm chứng mô hình vì lý do trên. Kết quả kiểm chứng cho thấy hệ thống đa tác tử thỏa mãn các thuộc tính cần kiểm tra tại mọi trạng thái của hệ thống.4 Cấu trúc luận văn Các phần còn lại của luận văn có cấu trúc nhƣ sau: - Chƣơng 2 trình bày tổng quan về ngôn ngữ CafeOBJ, kỹ thuật đặc tả và kiểm chứng phần mềm bằng phƣơng pháp hình thức đƣợc sử dụng trong CafeOBJ.

- Một hệ thống đa tác tử và 5 thuộc tính đƣợc đặc tả trong chƣơng 3. - Chƣơng 4 mô tả về phƣơng pháp kiểm chứng hệ thống đa tác tử bằng ngôn ngữ CafeOBJ, với tƣ tƣởng quy nạp, có thể kiểm chứng với không gian trạng thái là vô hạn. - Tóm tắt kết quả đã đạt đƣợc, kết luận, những hạn chế và hƣớng nghiên cứu phát triển trong tƣơng lai sẽ đƣợc trình bày trong chƣơng 5. TIEU LUAN MOI download : skknchat@gmail.com 4 CHƢƠNG 2 TỔNG QUAN VỀ CafeOBJ 2.1 Giới thiệu CafeOBJ là một ngôn ngữ đặc tả đại số đƣợc phát triển ở Nhật Bản dƣới sự chỉ đạo của GS Kokichi Futatsugi trong phòng thí nghiệm Language Design tại Viện khoa học và công nghệ tiên tiến Nhật Bản (JAIST).

Chúng hỗ trợ phƣơng pháp kiểm chứng dựa trên kỹ thuật đặc tả đại số và phƣơng pháp quy nạp nhằm kiểm chứng các chƣơng trình với miền trạng thái vô hạn. CafeOBJ là một ngôn ngữ thực thi dựa trên nhiều cơ sở lôgic, chủ yếu dựa trên các đại số ban đầu và đại số đƣợc suy luận. Các lôgic cơ bản của CafeOBJ bao gồm : - Lôgic đƣợc sắp xếp theo thứ tự (Order-sorted logic): một kiểu có thể là kiểu con của kiểu khác. Ví dụ: số tự nhiên là thuộc số hữu tỉ, nhƣng chúng đảm bảo tính chất hợp lệ là 3 phải bằng 6/2.

- Lôgic biến đổi (Rewriting logic): Ngoài ra để bằng nhau, các biểu thức phải hợp lệ tính đối xứng, chúng ta có thể sử dụng quan hệ bắc cầu. Đặc trƣng của quan hệ bắc cầu là rất thuận lợi để thể hiện đồng thời hoặc tính không xác định. - Các kiểu ẩn (Hidden sorts): Chúng ta có 2 loại trƣơng đƣơng. Một là tƣơng đƣơng cực tiểu (minimal equivalence) chính là đồng nhất hóa 2 vế và chúng tƣơng đƣơng khi và chỉ khi chúng giống nhau thông qua các phƣơng trình đã cho.

Kiểu tƣơng đƣơng khác dùng cho kiểu ẩn, là biến đổi 2 vế là tƣơng đƣơng khi và chỉ khi chúng ứng xử đồng nhất dựa trên bộ quan sát đã cho. Đặc tả trong CafeOBJ bao gồm các mô đun. Mỗi mô đun trong CafeOBJ đƣợc định nghĩa với cú pháp nhƣ hình 2.1, trong đó < mod_name > là tên của mô đun và mod_elements là thành phần của mô đun. mod module-name { module-elements } TIEU LUAN MOI download : skknchat@gmail.

Cú pháp của mô đun.2 đặc tả 2 mô đun là mô đun SIMPLE-NAT và mô đun NAT+, đƣợc lƣu là simple-nat.mod; mô đun SIMPLE-NAT định nghĩa hai phép toán 0 và s (next). Mô đun NAT+ kế thừa mô đun SIMPLE-NAT, định nghĩa thêm phép toán + và tính chất của phép toán 0 và s (next) bởi từ khóa eq. mod! SIMPLE-NAT { [ Nat ] op 0 : -> Nat { constr } op s : Nat -> Nat { constr } } mod! NAT+ { pr(SIMPLE-NAT) op _+_ : Nat Nat -> Nat eq 0 + M:Nat = M. Đặc tả mô đun simple-nat.

Có 3 kiểu khai báo mô đun trong CafeOBJ là mod! (Tight modules) , mod* (Loose modules ), mod. Để load mô đun simple-nat.mod ta dùng cú pháp in filename CafeOBJ> in simple-nat processing input : simple-nat.mod -- defining module! SIMPLE-NAT. -- defining module! NAT+. Đọc file simple-nat.mod trong CafeOBJ.

Với từ khóa eof trong CafeOBJ, chƣơng trình sẽ chỉ đọc file đến dòng trƣớc từ eof, ở hình 2.4 chƣơng trình sẽ chỉ đọc mod SIMPLE-NAT mà lờ đi mod NAT+ mod! SIMPLE-NAT { [ Nat ] op 0 : -> Nat { constr } op s : Nat -> Nat { constr } TIEU LUAN } MOI download : skknchat@gmail. Mô tả eof trong CafeOBJ. Định nghĩa kiểu (sort) trong CafeOBJ có cú pháp nhƣ sau: [ sort-name. sort-name ] Định nghĩa kiểu con (subsort) trong kiểu (sort) nhƣ sau: [ subsort-name < supersort-name ] Hình 2.5 sẽ mô tả kiểu số nguyên không âm là kiểu con của kiểu số nguyên, định nghĩa phép toán nhân hai số nguyên, phép chia một số nguyên cho một số nguyên không âm.

[ NzInt < Int ] op _*_ : Int Int -> Int op _/_ : Int NzInt -> Int Hình 2. Định nghĩa subsort trong sort. Các thành phần của mô đun đƣợc cấu trúc trong ba phần chính. Phần thứ nhất, imports chỉ rõ các mô đun phải đƣợc khai báo trong mô đun hiện thời, hay là sự thừa kế các mô đun đã triển khai đƣợc khai báo trong mô đun hiện thời.

Có ba dạng của việc thừa kế các mô đun: protecting (thừa kế các mô đun nhƣng không thể thay đổi chúng), extending (thừa kế các mô đun có thể mở rộng chúng, nhƣng những mô tả ban đầu còn lại không đƣợc thay đổi) và using (thừa kế các mô đun có thể mở rộng hoặc thay đổi sự mô tả ban đầu).

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ