Chuyển đến nội dung chính

Logic cây tính toán - Wikipedia


Logic cây tính toán (CTL) là logic thời gian phân nhánh, nghĩa là mô hình thời gian của nó là một cấu trúc giống như cây trong đó tương lai không được xác định; có những con đường khác nhau trong tương lai, bất kỳ một trong số đó có thể là một con đường thực tế được nhận ra. Nó được sử dụng để xác minh chính thức các tạo phẩm phần mềm hoặc phần cứng, thường là bởi các ứng dụng phần mềm được gọi là trình kiểm tra mô hình xác định xem một tạo phẩm cụ thể có thuộc tính an toàn hoặc độ bền không. Ví dụ: CTL có thể chỉ định rằng khi một số điều kiện ban đầu được thỏa mãn (ví dụ: tất cả các biến chương trình là dương hoặc không có ô tô trên đường cao tốc đi hai làn), thì tất cả các thực thi có thể của chương trình sẽ tránh một số điều kiện không mong muốn (ví dụ: chia số cho không hoặc hai chiếc xe va chạm trên đường cao tốc). Trong ví dụ này, thuộc tính an toàn có thể được xác minh bởi trình kiểm tra mô hình khám phá tất cả các chuyển đổi có thể ra khỏi trạng thái chương trình thỏa mãn điều kiện ban đầu và đảm bảo rằng tất cả các thực thi đó thỏa mãn thuộc tính. Logic cây tính toán nằm trong một lớp logic thời gian bao gồm logic thời gian tuyến tính (LTL). Mặc dù có các thuộc tính chỉ có thể biểu thị trong CTL và các thuộc tính chỉ có thể biểu thị bằng LTL, nhưng tất cả các thuộc tính có thể biểu thị theo logic cũng có thể được biểu thị bằng CTL *.

CTL lần đầu tiên được đề xuất bởi Edmund M. Clarke và E. Allen Emerson vào năm 1981, người đã sử dụng nó để tổng hợp cái gọi là bộ xương đồng bộ hóa i.e .

Cú pháp của CTL [ chỉnh sửa ]

Ngôn ngữ của các công thức được hình thành tốt cho CTL được tạo bởi ngữ pháp sau:

trong đó nằm trong một tập hợp các công thức nguyên tử . Không cần thiết phải sử dụng tất cả các kết nối - ví dụ: bao gồm một bộ kết nối hoàn chỉnh và những cái khác có thể được xác định bằng cách sử dụng chúng.

  • có nghĩa là 'dọc theo tất cả các đường dẫn' (chắc chắn)
  • có nghĩa là 'dọc theo ít nhất (có tồn tại) một đường dẫn' (có thể)

Ví dụ, sau đây là một giếng hình thành công thức CTL:

)

Sau đây không phải là tốt công thức CTL định dạng:

Vấn đề với chuỗi này là chỉ có thể xảy ra khi được ghép nối với hoặc . Nó sử dụng các đề xuất nguyên tử làm các khối xây dựng của nó để đưa ra tuyên bố về các trạng thái của một hệ thống. CTL sau đó kết hợp các đề xuất này thành các công thức bằng cách sử dụng các toán tử logic và logic thời gian.

Toán tử [ chỉnh sửa ]

Toán tử logic [ chỉnh sửa ]

Toán tử logic là những toán tử thông thường: ¬, ∨,, Và. Cùng với các toán tử này, các công thức CTL cũng có thể sử dụng các hằng số boolean đúng và sai.

Toán tử tạm thời [ chỉnh sửa ]

Các toán tử tạm thời như sau:

  • Bộ định lượng trên các đường dẫn
    • A φ - A ll: φ phải giữ trên tất cả các con đường bắt đầu từ trạng thái hiện tại.
    • E φ - E xist: tồn tại ít nhất một đường dẫn bắt đầu từ trạng thái hiện tại nơi giữ.
    • X φ - Ne x t: φ phải giữ ở trạng thái tiếp theo (toán tử này đôi khi được ghi chú của X ).
    • G φ - G lobally: φ phải giữ trên toàn bộ con đường tiếp theo. F φ - F inally: cuối cùng phải giữ (ở đâu đó trên con đường tiếp theo).
    • φ U ψ - U ntil: phải giữ ít nhất là cho đến khi tại một vị trí nào đó . Điều này ngụ ý rằng ψ sẽ được xác minh trong tương lai.
    • φ W ψ - W eak cho đến khi: phải giữ cho đến khi giữ. Sự khác biệt với U là không có gì đảm bảo rằng sẽ được xác minh. Toán tử W đôi khi được gọi là "trừ khi".

Trong CTL *, các toán tử tạm thời có thể được trộn lẫn tự do. Trong CTL, toán tử phải luôn được nhóm thành hai: toán tử một đường dẫn theo sau là toán tử trạng thái. Xem các ví dụ dưới đây. CTL * hoàn toàn biểu cảm hơn CTL.

Tập hợp toán tử tối thiểu [ chỉnh sửa ]

Trong CTL có một tập hợp toán tử tối thiểu. Tất cả các công thức CTL có thể được chuyển đổi để chỉ sử dụng các toán tử đó. Điều này rất hữu ích trong việc kiểm tra mô hình. Một nhóm toán tử tối thiểu là: {true, ∨,, EG EU EX }.

Một số phép biến đổi được sử dụng cho toán tử tạm thời là:

  • EF φ == E [true U ( φ ]] (bởi vì ] φ == [true U ( φ )])
  • AX == ¬ EX φ )
  • AG φ == ¬ EF φ ) == ¬ đúng U φ )]
  • AF φ == A [true U ] == EG φ )
  • A [ φ U ψ ( E [(¬ ψ ) U ¬ ( φ ψ ] ∨ ))

Ngữ nghĩa của CTL [ chỉnh sửa ]

Định nghĩa [ ]]

Công thức CTL được diễn giải trên Hệ thống chuyển tiếp. Một hệ thống chuyển đổi là một bộ ba trong đó là một tập hợp các trạng thái, là một mối quan hệ chuyển tiếp, được coi là nối tiếp, tức là mọi trạng thái đều có ít nhất một người kế vị và là một chức năng ghi nhãn, gán các chữ cái mệnh đề cho các trạng thái. Đặt là một mô hình chuyển tiếp như vậy

với trong đó F là tập hợp của wffs trên ngôn ngữ của .

Sau đó, mối quan hệ của ngữ nghĩa đòi hỏi được định nghĩa đệ quy trên :