Chú thích Well-formedness

Một phần của tài liệu Nghiên cứu về separation logic và ứng dụng vào hệ thống kiểm định tự động (Trang 45 - 47)

Nhưđã trình bày, một công thức táchcó thể được sử dụng trong các khai báo tiền điều kiện/hậu điều kiện và những định nghĩa vị từ Shape. Để có thể thao tác chúng một cách chính xác mà không thao tác trên các Heap Node dư thừa, ngôn ngữ đặc tảyêu cầu mỗi ràng buộc tách thuộc dạng well-formed, thông qua các định nghĩa như dưới đây.

Định nghĩa Accessible: Một biến được coi là accessible nếu nó là một tham số hoặc là biến đặc biệt root hay res.

Định nghĩa Reachable: Có ràng buộc và ràng buộc con trỏ , thì tập các Heap Node trong được gọi là reachable từ tập các con trỏ S được tính toán như sau:

Biểu thứcIsPtr(v)kiểm tra xem v có là thuộc kiểu con trỏ hay không.

Định nghĩa Well-Formed: Một công thức được gọi là Well-Formed nếu thỏa mãn,

-Nó thỏa mãn là một công thức tách thông thường ,

trong đó là công thức Heap-part và phần là công thức Pure-part.

-Mọi Heap Node đều thỏa mãn reachable từ tập các biến accessible S.

Đặc tả cũng cần đảm bảo rằng, con trỏ root chỉ xuất hiện trong phần thân của vị từ, và con trỏ res chỉ xuất hiện trong hậu điều kiện. Định nghĩa well-formed đảm

bảo cho thủ tục kiểm tra suy diễn là chính xác, khi thực hiện việc việc match Node

của phần kết luận (consequent) với các Node trong phần tiền đề (antecedent) trong một quan hệ suy diễn (entailment) sẽ được trình bày trong phần sau của luận văn.

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang46

Những quan hệ Shape khai báo đệ quy có thể ảnh hưởng tới tính dừng trong suy diễn unfold/fold. Để tránh ảnh hưởng này, framework trong hệ thống đề cập trong luận văn còn sử dụng khái niệm về những vị từ Well-Founded.

Định nghĩa vị từ Well-Founded: Một vị từ được gọi là well-founded nếu nó thỏa mãn các điều kiện sau:

-Phần thân của nó là công thức thỏa mãn well-formed

- Tất cả các Heap Node đều phải xuất hiện trong phần thân (body)

của đặc tả, trong đó c là tên của kiểu dữ liệu và p=root.

Một ví dụ về vị từ well-founded đặc tả cây nhị phân AVL gần cân bằng như sau:

Xem xét 3 ví dụ sau không thỏa mãn đặc tả well-founded:

Trong ví dụ vị từ foo thì con trỏ root không thỏa mãn duyệt tới toàn bộ các Heap Node; Trong ví dụ goo thì con trỏ được trỏ bởi q không thỏa mãn reachable từ con trỏ root; Trong ví dụ too là sự mở rộng dữ liệu Node không bao hàm bởi biến root. Ví dụ đầu tiên có thể dẫn tới việc unfolding vô hạn, ví dụ thứ hai minh họa cho một Heap Node unreachable trong thủ tục suy diễn. Trong khi đó ví dụ cuối cùng ảnh hưởng tới tính dừng của thủ tục suy diễn chứng minh, thay vào đó ta có thể viết lại:

Học viên thực hiện: Nguyễn Đức Cường – Lớp 11BCNTT Trang47

Trong đó tmp là một vị từ được thêm vào nhằm thỏa mãn điều kiện well- founded.

Ngoài ra trong ngôn ngữ đặc tả đề cập tới trong luận văn còn sử dụng những thuộc tính Bag trong việc đặc tả các vị từ và thủ tục, sự mở rộng này sẽ được đề cập trong mục tiếp theo trình bày dưới đây.

Một phần của tài liệu Nghiên cứu về separation logic và ứng dụng vào hệ thống kiểm định tự động (Trang 45 - 47)