ฉันได้อ่านตัวอย่างของสูตรใน CTL แต่ไม่ได้อยู่ใน LTL และทางกลับกัน แต่ฉันมีปัญหาในการดึงดูดความเข้าใจจิตสูตร LTL และจริงๆสิ่งที่หัวใจคือความแตกต่าง
ฉันได้อ่านตัวอย่างของสูตรใน CTL แต่ไม่ได้อยู่ใน LTL และทางกลับกัน แต่ฉันมีปัญหาในการดึงดูดความเข้าใจจิตสูตร LTL และจริงๆสิ่งที่หัวใจคือความแตกต่าง
คำตอบ:
เพื่อให้เข้าใจความแตกต่างระหว่าง LTL และ CTL จริงๆคุณต้องศึกษาความหมายของทั้งสองภาษา สูตร LTL แสดงถึงคุณสมบัติที่จะตีความในแต่ละการดำเนินการของโปรแกรม สำหรับการประมวลผลที่เป็นไปได้แต่ละครั้ง (การรัน) ซึ่งสามารถเห็นได้ว่าเป็นลำดับของเหตุการณ์หรือสถานะในบรรทัด - และนี่คือสาเหตุที่มีชื่อ "เวลาเชิงเส้น" - ความน่าเชื่อถือถูกตรวจสอบในการวิ่งโดยไม่มีความเป็นไปได้ ระหว่างการตรวจสอบ บนมืออื่น ๆ , CTL ความหมายการตรวจสอบสูตรวิ่งไปได้ทั้งหมดและจะพยายามอย่างใดอย่างหนึ่งวิ่งไปได้ทั้งหมด ( ดำเนินการ) หรือเพียงหนึ่งวิ่ง ( Eผู้ประกอบการ) เมื่อหันหน้าไปสาขา
ในทางปฏิบัติหมายความว่าสูตรบางอย่างของแต่ละภาษาไม่สามารถระบุในภาษาอื่นได้ ตัวอย่างเช่นคุณสมบัติการรีเซ็ต (คุณสมบัติความสามารถเข้าถึงได้ที่สำคัญสำหรับการออกแบบวงจร) ระบุว่ามีความเป็นไปได้ที่รัฐจะสามารถเข้าถึงได้ในระหว่างการวิ่งแม้ว่าจะไม่ถึงจริง ๆ (การรีเซ็ต AG EF ) LTL สามารถระบุได้ว่าถึงสถานะรีเซ็ตจริงหรือไม่และไม่สามารถเข้าถึงได้
บนมืออื่น ๆ , สูตร LTL ไม่สามารถแปลเป็น CTL สูตรนี้หมายถึงคุณสมบัติของความมั่นคงในการทำงานของโปรแกรมแต่ละsในที่สุดก็จะเป็นจริงจนกว่าจะสิ้นสุดของโปรแกรม (หรือตลอดไปถ้าโปรแกรมไม่เคยหยุด) CTL สามารถให้สูตรที่เข้มงวดเกินไป ( AF AG s ) หรือได้รับอนุญาต ( AF EG s ) เท่านั้น อย่างที่สองคือผิดอย่างชัดเจน มันไม่ตรงไปตรงมาสำหรับครั้งแรก แต่AF AGนั้นผิดพลาด พิจารณาระบบที่วนรอบA1สามารถไปจากA1ถึงBแล้วไปที่A2ในการย้ายครั้งต่อไป จากนั้นระบบจะอยู่ในสถานะA2ตลอดไป จากนั้นระบบ "ในที่สุดก็จะอยู่ในของรัฐ" เป็นทรัพย์สินของประเภทที่◊ ◻ s เป็นที่ชัดเจนว่าคุณสมบัตินี้มีอยู่ในระบบ อย่างไรก็ตามAF AGไม่สามารถจับภาพคุณสมบัตินี้ได้เนื่องจากตรงกันข้ามเป็นจริง: มีการรันซึ่งระบบจะอยู่ในสถานะที่การรันในสภาวะที่ไม่ใช่สถานะA ในที่สุด
ฉันไม่รู้ว่านี่เป็นคำตอบสำหรับคำถามของคุณหรือไม่ แต่ฉันต้องการเพิ่มความคิดเห็น
มีการอภิปรายกันมากมายเกี่ยวกับตรรกะที่ดีที่สุดในการแสดงคุณสมบัติสำหรับการตรวจสอบซอฟต์แวร์ ... แต่การถกเถียงที่แท้จริงนั้นเป็นที่อื่น LTL สามารถแสดงคุณสมบัติที่สำคัญสำหรับการสร้างแบบจำลองระบบซอฟต์แวร์ (ความเป็นธรรม) เมื่อ CTL ต้องมีซีแมนทิกส์ใหม่ (ความสัมพันธ์ที่น่าพอใจใหม่) เพื่อแสดง แต่อัลกอริทึม CTL มักจะมีประสิทธิภาพมากกว่าและสามารถใช้อัลกอริทึมที่ใช้ BDD ดังนั้น ... ไม่มีทางออกที่ดีที่สุด มีเพียงสองแนวทางเท่านั้น
หนึ่งในผู้แสดงความคิดเห็นแนะนำกระดาษ Vardi ของ"Branching เมื่อเทียบกับเส้นเวลา: ครั้งสุดท้าย"
หากได้รับหนึ่งวัตถุ (เช่นการติดตามในกรณีของ LTL) คุณจะพิจารณาเพียงหนึ่งอนาคตสำหรับทุกจุดในเวลาใน CTL คุณมีมากมายเหลือเฟือ
โดยเฉพาะอย่างยิ่งnext
ให้การกระทำที่ไม่ซ้ำกันใน LTL แต่ (อาจ) ทั้งชุดใน CTL