基本介紹
- 中文名:程式邏輯
- 定義:描述和論證程式行為的邏輯
- 別稱:霍爾邏輯
- 兩者關係:程式和邏輯有著本質的聯繫
簡介
程式是在機器中執行的,程式中每個語句的執行導致機器狀態的變化,因此程式的執行又可以由機器狀態變化的序列表達。數理邏輯中的模態邏輯正是描述動態變元變化的一種邏輯,因此以模態邏輯為基礎也可揭示邏輯與程式間的深刻聯繫。
歷史發展
基本方法
在公式{P}S{Q}中邏輯表達式P和Q實際上只是當作語句S的注釋使用的,對邏輯公式{P}S{Q}不能進行邏輯運算,例如蘊含公式{P1}S1{Q1}→{P2}S2{Q2}就沒有意義,因此霍爾邏輯還沒有徹底把程式和邏輯統一起來。解決的方法之一就是使用動態邏輯,它是一種模態邏輯。在動態邏輯中除了通常的命題連線詞墯,∨,∧,→及作用於非動態變元的量詞和凬外,還可以引入動態連線詞,例如【 】,【S】Q表示當S終止時Q為真。這樣墯【S】Q,【S1】P→【S2】Q等就都是有意義的邏輯公式,如果進一步令〈 〉表示墯【 】墯,則S>Q表示存在一個時刻S終止且Q為真。程式S的部分正確性問題就可以表示為
霍爾邏輯的基本思想是用邏輯描述程式的執行結果,與之對應的另一種方法是用邏輯刻畫程式的全部行為,即把程式的執行過程看成機器狀態的一個變化序列。自70年代中期,並髮式程式設計逐漸成為程式理論的重要課題後,這種觀點就顯得十分必要,因為刻畫在程式執行過程中,各任務之間的同步和信息交換常常是不可少的。時態邏輯是關於隨著時間而不斷改變其值的動態變元(叫作時序變元)的一種模態邏輯。因此它自然地被引入到程式邏輯中。時態邏輯以當前時間為基本出發點,除使用常用邏輯連線詞及作用於非時序變元的量詞外,還可以用引入時態連線詞的辦法刻畫更複雜的動態性質。例如,可以引入連線詞◇及□:
◇P表示在將來某一時刻P真,
□P表示P從此以後永真。
使用時態邏輯可以對每個程式構造出它所對應的一個邏輯系統,並可以在此系統中刻畫終止(記作STOP)及無死鎖等概念。而程式S的部分正確性問題就可以表示為
套用
現代軟體工程的一個重要方法是在程式設計之前,必須把程式要達到的目標即功能描述交待清楚。功能描述應當簡潔明瞭,而不必關心執行細節,因此可以使用邏輯語言的全部公式。
程式設計的任務就是編製程序使其滿足描述。程式邏輯的研究表明,程式和邏輯都可以作為邏輯系統的邏輯公式,所不同的是程式只出現在一部分特定的邏輯公式中。因此設計程式使之滿足描述的過程,從邏輯演算角度看,就是如何將表示功能描述的邏輯公式轉化成表示程式的邏輯公式問題,因此程式邏輯的研究又為軟體工程中自動化設計提供了有力工具。
