ความแตกต่างระหว่าง LTL และ CTL คืออะไร?


12

ฉันได้อ่านตัวอย่างของสูตรใน CTL แต่ไม่ได้อยู่ใน LTL และทางกลับกัน แต่ฉันมีปัญหาในการดึงดูดความเข้าใจจิตสูตร LTL และจริงๆสิ่งที่หัวใจคือความแตกต่าง


1
จำนวนของบันทึกใน interwebs จัดการกับปัญหานี้ มี googled สำหรับ "ความแตกต่างระหว่าง LTL และ CTL" หรือไม่
Dave Clarke

1
ลองเขียนสูตรง่าย ๆ และประเมินความหมายของพวกเขาในโครงสร้าง Kripke
วีเจย์ D

คำตอบ:


21

เพื่อให้เข้าใจความแตกต่างระหว่าง LTL และ CTL จริงๆคุณต้องศึกษาความหมายของทั้งสองภาษา สูตร LTL แสดงถึงคุณสมบัติที่จะตีความในแต่ละการดำเนินการของโปรแกรม สำหรับการประมวลผลที่เป็นไปได้แต่ละครั้ง (การรัน) ซึ่งสามารถเห็นได้ว่าเป็นลำดับของเหตุการณ์หรือสถานะในบรรทัด - และนี่คือสาเหตุที่มีชื่อ "เวลาเชิงเส้น" - ความน่าเชื่อถือถูกตรวจสอบในการวิ่งโดยไม่มีความเป็นไปได้ ระหว่างการตรวจสอบ บนมืออื่น ๆ , CTL ความหมายการตรวจสอบสูตรวิ่งไปได้ทั้งหมดและจะพยายามอย่างใดอย่างหนึ่งวิ่งไปได้ทั้งหมด ( ดำเนินการ) หรือเพียงหนึ่งวิ่ง ( Eผู้ประกอบการ) เมื่อหันหน้าไปสาขา

ในทางปฏิบัติหมายความว่าสูตรบางอย่างของแต่ละภาษาไม่สามารถระบุในภาษาอื่นได้ ตัวอย่างเช่นคุณสมบัติการรีเซ็ต (คุณสมบัติความสามารถเข้าถึงได้ที่สำคัญสำหรับการออกแบบวงจร) ระบุว่ามีความเป็นไปได้ที่รัฐจะสามารถเข้าถึงได้ในระหว่างการวิ่งแม้ว่าจะไม่ถึงจริง ๆ (การรีเซ็ต AG EF ) LTL สามารถระบุได้ว่าถึงสถานะรีเซ็ตจริงหรือไม่และไม่สามารถเข้าถึงได้

บนมืออื่น ๆ , สูตร LTL ไม่สามารถแปลเป็น CTL สูตรนี้หมายถึงคุณสมบัติของความมั่นคงในการทำงานของโปรแกรมแต่ละsในที่สุดก็จะเป็นจริงจนกว่าจะสิ้นสุดของโปรแกรม (หรือตลอดไปถ้าโปรแกรมไม่เคยหยุด) CTL สามารถให้สูตรที่เข้มงวดเกินไป ( AF AG s ) หรือได้รับอนุญาต ( AF EG s ) เท่านั้น อย่างที่สองคือผิดอย่างชัดเจน มันไม่ตรงไปตรงมาสำหรับครั้งแรก แต่AF AGนั้นผิดพลาด พิจารณาระบบที่วนรอบA1สามารถไปจากA1ถึงBแล้วไปที่A2sในการย้ายครั้งต่อไป จากนั้นระบบจะอยู่ในสถานะA2ตลอดไป จากนั้นระบบ "ในที่สุดก็จะอยู่ในของรัฐ" เป็นทรัพย์สินของประเภทที่ s เป็นที่ชัดเจนว่าคุณสมบัตินี้มีอยู่ในระบบ อย่างไรก็ตามAF AGไม่สามารถจับภาพคุณสมบัตินี้ได้เนื่องจากตรงกันข้ามเป็นจริง: มีการรันซึ่งระบบจะอยู่ในสถานะที่การรันในสภาวะที่ไม่ใช่สถานะA ในที่สุดs

ฉันไม่รู้ว่านี่เป็นคำตอบสำหรับคำถามของคุณหรือไม่ แต่ฉันต้องการเพิ่มความคิดเห็น

มีการอภิปรายกันมากมายเกี่ยวกับตรรกะที่ดีที่สุดในการแสดงคุณสมบัติสำหรับการตรวจสอบซอฟต์แวร์ ... แต่การถกเถียงที่แท้จริงนั้นเป็นที่อื่น LTL สามารถแสดงคุณสมบัติที่สำคัญสำหรับการสร้างแบบจำลองระบบซอฟต์แวร์ (ความเป็นธรรม) เมื่อ CTL ต้องมีซีแมนทิกส์ใหม่ (ความสัมพันธ์ที่น่าพอใจใหม่) เพื่อแสดง แต่อัลกอริทึม CTL มักจะมีประสิทธิภาพมากกว่าและสามารถใช้อัลกอริทึมที่ใช้ BDD ดังนั้น ... ไม่มีทางออกที่ดีที่สุด มีเพียงสองแนวทางเท่านั้น

หนึ่งในผู้แสดงความคิดเห็นแนะนำกระดาษ Vardi ของ"Branching เมื่อเทียบกับเส้นเวลา: ครั้งสุดท้าย"


ดูการสนทนาเกี่ยวกับ LTL vs CTL โดย Vardi: "Branching vs. Linear Time: Showdown ครั้งสุดท้าย"
Guy

ขอบคุณมัดนั่นคือความเข้าใจที่ฉันกำลังมองหา!
ขี้ขลาดนิรนาม

1

หากได้รับหนึ่งวัตถุ (เช่นการติดตามในกรณีของ LTL) คุณจะพิจารณาเพียงหนึ่งอนาคตสำหรับทุกจุดในเวลาใน CTL คุณมีมากมายเหลือเฟือ

โดยเฉพาะอย่างยิ่งnextให้การกระทำที่ไม่ซ้ำกันใน LTL แต่ (อาจ) ทั้งชุดใน CTL


6
แต่โดยทั่วไปแล้วคุณจะใช้สูตร LTL กับทุกการทำงานของระบบแทนที่จะเป็นสูตรเดียวดังนั้นจึงเป็นการปิดช่องว่างระหว่างปัญหาในอนาคตหนึ่ง / หลายฉบับ มันจะมีความแม่นยำมากขึ้นในการบอกว่า LTL เกี่ยวข้องกับเวลาเชิงเส้นในขณะที่ CTL เกี่ยวข้องกับเวลาของการแตกแขนง
Dave Clarke

4
การพูดใน LTL คุณคิดว่าอนาคตหนึ่งเปรียบเสมือนการพูดใน CTL คุณจะพิจารณาสถานะหนึ่ง ความพึงพอใจถูกกำหนดด้วยวิธีนี้ มันไม่เกี่ยวกับจำนวนฟิวเจอร์ส แต่เป็นโครงสร้างของอนาคต ในหนึ่งมันเป็นร่องรอยในอื่น ๆ ต้นไม้
วีเจย์ D

@Vijay - โครงสร้างมีความสำคัญ เช่นคุณไม่สามารถใช้สูตร LTL แปลงเป็น FGp -> AF AG p และรับสูตร CTL ที่เทียบเท่า (สูตรทั้งสองนี้ไม่เทียบเท่ากันนอกจากนี้ FGp ไม่สามารถแสดงได้ใน CTL และ AF AG p ไม่สามารถแสดงได้ใน LTL )
jkff

ฉันสันนิษฐานว่า OP คุ้นเคยกับคำจำกัดความที่เป็นทางการและขอสัญชาติญาณบางอย่างดังนั้นฉันจึงลอง คำตอบนี้สามารถกู้ได้โดยพูดว่า "หนึ่งอนาคตต่อรุ่น"
Raphael

ฉันไม่สามารถบอกได้ว่า OP คุ้นเคยกับอะไร ตัวอย่างเช่นมันชัดเจนกับพวกเขาว่าแบบจำลองนั้นมีอยู่ในแต่ละกรณีหรือไม่?
วีเจย์ D
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.