Công thức cập nhật

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu kỹ thuật giải thích trừu tượng 10 (Trang 65 - 67)

3.3. Thuật toán sinh hệ ràng buộc Coerce và thuật toán giải hệ ràng buộc

3.3.5 Công thức cập nhật

Tác dụng của ngữ nghĩa hoạt động với câu lệnh được mô tả bởi một tập các bản cập nhật công thức xác định giá trị của mỗi vị từ sau hành động của câu lệnh đó. Định lý nhúng cho phép ta đánh giá lại các các công thức trong các cấu trúc trừu tượng và cho biết kết quả cung cấp là một ngữ nghĩa trừu tượng bảo tồn. Nếu khơng có cơng thức cập nhật được quy định cho một vị từ, thì nó được giữ ngun bởi các hành động.

Trong hình 3.8, hiệu quả của các action Get_Next_L(x=x->n) được tính bằng cách sử dụng cơng thức cập nhật sau đây: (i) ( ) = ∃ 1: ( 1) ∧

( 1, ), (ii) [ , ]( ) = [ , ]( ) ∧ ( [ ]( ) ∨ ¬ ( )). Cơng thức cập nhật (i) biến là phần tử tiếp theo với gốc là . Công thức (ii) cập nhật thơng tin về những nút có thể truy cập từ sau mỗi action.

Một nút là có thể đạt từ sau hành động nếu nó là có thể đạt từ trước hành động , trừ trường hợp các nút trực tiếp được trỏ đến bởi (trừ khi

xuất hiện trên một chu trình n, trong trường hợp các nút được trỏ đến bởi x là

vẫn có thể truy cập mặc dù chúng ta tiến đến phần tử kế tiếp của nó). Đối

với Sf2, công thức cập nhật cho x được gán giá trị là 1 cho v→ u.1 và 0 đối với tất cả các nút khác so với u.1. Do đó, sau action các kết quả cấu trúc So2 có thể là ( . 1) = 1 nhưng ( . 0) = 0 và ( 0) = 0.

Giai đoạn cuối cùng của việc tính tốn là hoạt động Coerce, trong đó sử dụng một tập các quy tắc phi mâu thuẫn để làm cho cấu trúc chính xác hơn bằng cách loại bỏ các giá trị vô hạn không cần thiết và loại bỏ các cấu trúc không khả thi. Tập hợp các quy tắc phi mâu thuẫn được sử dụng là độc lập với hành động hiện tại đang được thực hiện. Trong phần 3..3.6 cho một mơ tả chi tiết về các thuật tốn Coerce được sử dụng trong TVLA và cách TVLA tự động tạo ra các quy tắc phi mâu thuẫn từ các vị từ đo và các hàm thuộc tính của các vị từ.

Ví dụ, hình 3.8 cho thấy cách thức vận hành Coerce để cải thiện độ

chính xác. Cấu trúc So0 là khơng khả thi bởi vì các nút u phải được truy cập từ y (khi [ , ] ( ) = 1) và đây không phải là trường hợp của So0. Trong cấu

trúc So1, u khơng cịn là một nút tóm tắt bởi vì x là duy nhất; u của vòng lặp được loại bỏ bởi vì u đã có trường n trỏ đến và nó khơng đại diện cho một

phần danh sách chia sẻ ( [ ] ( ) = 0).

Tương tự như vậy, trong cấu trúc So2, u.1 khơng cịn là một nút tóm tắt; Ngồi ra, các phần tử danh sách đại diện bởi u.1 đã có một trường n trỏ đến

và nó khơng được chia sẻ ( [ ] ( . 1) = 0), do đó u.1 được xóa bỏ. Tương

tự ta cũng có, cạnh vơ hạn n từ u.0 tới u.1 được xóa bỏ.

Để đảm bảo rằng việc phân tích là dừng đối với chương trình có chứa vịng lặp thì đối với mỗi phân tích, chúng ta chọn một tập các vị từ đơn

nguyên được gọi là vị từ trừu tượng. Trong cấu trúc bị chặn, hai nút u1, u2 được trộn với nhau nếu pS(u1) = pS(u2) cho mỗi vị từ trừu tượng p.

Khi các nút được trộn, các giá trị vị từ cho vị từ không trừu tượng của chúng sẽ được tham gia (tức là, kết quả là 1/2 nếu giá trị của chúng là khác

nhau). Các hoạt động của việc tính tốn loại cấu trúc này được gọi là bị chặn mờ (Blur). Sự lựa chọn của các vị trừu tượng là rất quan trọng đối với sự cân bằng giữa không gian bộ nhớ và độ chính xác. TVLA cho phép người dùng lựa chọn các vị từ trừu tượng. Theo mặc định, tất cả các vị đơn nguyên là vị từ trừu tượng, như trong ví dụ trong phần 3.2.5.

Ví dụ trong hình 3.7, các nút u0 và u được phân biệt bởi thực tế là

( ) = 1, trong khi ( ) = 0 (tất cả vị từ khác là 0.) Nếu x không phải

là một vị từ trừu tượng, thì các cấu trúc bị chặn thích hợp S’4 sẽ có một nút duy nhất, khi đó ta nói rằng u với ( ) = 1/2 và ( , ) = 1/2 .

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu kỹ thuật giải thích trừu tượng 10 (Trang 65 - 67)

Tải bản đầy đủ (PDF)

(90 trang)