Sự khác biệt giữa LTL và CTL là gì?


12

Tôi đã đọc các ví dụ về các công thức trong CTL nhưng không phải trong LTL và ngược lại, nhưng tôi gặp khó khăn trong việc nắm bắt tinh thần về các công thức LTL và thực sự , điều cốt lõi là sự khác biệt.


1
Vô số ghi chú trên các interwebs giải quyết vấn đề này. Bạn đã googled cho "sự khác biệt giữa LTL và CTL"?
Dave Clarke

1
Hãy thử viết ra các công thức đơn giản và đánh giá ngữ nghĩa của chúng trên các cấu trúc Kripke.
Vijay D

Câu trả lời:


21

Để thực sự hiểu sự khác biệt giữa LTL và CTL, bạn phải nghiên cứu ngữ nghĩa của cả hai ngôn ngữ. Các công thức LTL biểu thị các thuộc tính sẽ được diễn giải trên mỗi lần thực hiện chương trình. Đối với mỗi lần thực hiện có thể (một lần chạy), có thể được xem như một chuỗi các sự kiện hoặc trạng thái trên một dòng - và đây là lý do tại sao nó được đặt tên là "thời gian tuyến tính" - sự thỏa mãn được kiểm tra khi chạy mà không có khả năng chuyển sang chạy khác trong quá trình kiểm tra Mặt khác, ngữ nghĩa CTL kiểm tra một công thức trên tất cả các lần chạy có thể và sẽ thử tất cả các lần chạy có thể ( Một toán tử) hoặc chỉ một lần chạy ( toán tử E ) khi đối mặt với một nhánh.

Trong thực tế điều này có nghĩa là một số công thức của mỗi ngôn ngữ không thể được nêu trong ngôn ngữ khác. Ví dụ, thuộc tính thiết lập lại (một thuộc tính có thể tiếp cận quan trọng đối với thiết kế mạch) nói rằng luôn có khả năng có thể đạt được trạng thái trong khi chạy, ngay cả khi nó không bao giờ thực sự đạt được ( thiết lập lại AG EF ). LTL chỉ có thể nói rằng trạng thái thiết lập lại thực sự đạt được và không thể đạt được.

ss

Tôi không biết nếu câu trả lời này cho câu hỏi của bạn, nhưng tôi muốn thêm một số ý kiến.

Có rất nhiều cuộc thảo luận về logic tốt nhất để thể hiện các thuộc tính để xác minh phần mềm ... nhưng cuộc tranh luận thực sự ở một nơi khác. LTL có thể biểu thị các thuộc tính quan trọng cho mô hình hệ thống phần mềm (tính công bằng) khi CTL phải có một ngữ nghĩa mới (một mối quan hệ thỏa mãn mới) để thể hiện chúng. Nhưng thuật toán CTL thường hiệu quả hơn và có thể sử dụng thuật toán dựa trên BDD. Vì vậy, ... không có giải pháp tốt nhất. Chỉ có hai cách tiếp cận khác nhau, cho đến nay.

Một trong những người bình luận cho rằng bài viết của Vardi "Phân nhánh so với thời gian tuyến tính: Cuộc tranh chấp cuối cùng" .


xem một cuộc thảo luận về LTL vs CTL của Vardi: "Phân nhánh so với thời gian tuyến tính: Cuộc tranh chấp cuối cùng"
Guy

cảm ơn rất nhiều, đó chính xác là cái nhìn sâu sắc mà tôi đang tìm kiếm!
Kẻ hèn nhát vô danh

1

Nếu được cung cấp một đối tượng (ví dụ: theo dõi trong trường hợp LTL), bạn chỉ xem xét một tương lai cho mọi thời điểm, trong CTL, bạn có rất nhiều đối tượng.

Cụ thể, nextđưa ra một hành động duy nhất trong LTL nhưng (có khả năng) toàn bộ trong CTL.


6
Nhưng bạn thường áp dụng công thức LTL cho tất cả các lần chạy của hệ thống, thay vì chỉ một, do đó sẽ thu hẹp khoảng cách giữa một / nhiều vấn đề trong tương lai. Sẽ chính xác hơn khi nói rằng LTL xử lý thời gian tuyến tính, trong khi CTL xử lý thời gian phân nhánh.
Dave Clarke

4
Nói rằng, trong LTL bạn coi một tương lai cũng giống như nói trong CTL bạn xem xét một trạng thái. Sự hài lòng được định nghĩa theo cách này. Đó không phải là về bao nhiêu tương lai, mà là cấu trúc của tương lai. Trong một cái đó là một dấu vết, trong cái kia, một cái cây.
Vijay D

@Vijay - thực sự, cấu trúc quan trọng. Ví dụ: bạn không thể sử dụng công thức LTL, chuyển đổi nó như FGp -> AF AG p và nhận công thức CTL tương đương (hai công thức này không tương đương; hơn nữa FGp không thể biểu thị trong CTL và AF AG p không thể biểu thị bằng LTL ).
jkff

Tôi cho rằng OP đã quen thuộc với định nghĩa chính thức và yêu cầu một loại trực giác nào đó, do đó tôi cố gắng. Câu trả lời này có thể được cứu vãn bằng cách nói "một tương lai cho mỗi mô hình" không?
Raphael

Tôi không thể biết OP quen thuộc với cái gì. Ví dụ, rõ ràng cho họ biết một mô hình trong mỗi trường hợp là gì?
Vijay D
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.