Page 34 - profile2012.indd
P. 34
Research Laboratories 研究群
程式語言與形式方法實驗室
Programming Languages
and Formal Methods Laboratory
研究人員
王柏堯 Bow-Yaw Wang 莊庭瑞 Tyng-Ruey Chuang 陳郁方 Yu-Fang Chen 穆信成 Shin-Cheng Mu
Associate Research Fellow Associate Research Fellow Assistant Research Fellow Assistant Research Fellow
研究群介紹
程式語言與形式方法實驗室發展保證程式正確性之技術。 統表達能力上之限制,這些實現仍然遠遠落後於現在理論 對一般的程式開發者而言,由於缺乏訓練,運用形式化技術可能並不切
我們在程式語言方面的研究,著重於發展正確程式之語 上之發展。我們計劃將會話型別嵌入到 Agda ķ 一個具有 實際。然而,愈來愈多的並行程式正由一般的程式開發者所發展。並行
法、語意、及實務上之議題;在形式方法方面的研究,強 豐富的依賴型別系統之程式語言。希望建立一個程式開發 程式之驗證工具無疑地將幫助程式開發者提高他們的生產力。現有並行
調分析真實程式中演算法、計算、以及實際方面之課題。 者寫作Agda/Haskell程式之綜合性環境,並使用型別系統 程式的一大部分,是由 C++ 和 Java 等現代程式語言所編寫而成。為
我們應用數學及形式技術,以探討我們的研究問題。我們 以保證正確性及終止性。 了這些現有的程式,我們還打算開發自動驗證方法,以保證其正確性。 為了幫助程式開發者充分
亦致力於發展工具及方法論,以幫助程式開發者寫作正確 準確地說,我們打算開發並行軟體模型檢測方法。而模型檢測之核心技 利用並行處理器之計算能
程式。 我們對於以「證明即程式」方式達到程式正確性要求的程 術,則是高效率地探索欲驗證程式的狀態空間。
式設計方法與工具(如jCoq),深感到興趣,將探究這 力,本實驗室致力於並行
多核處理器現在被廣泛使用於桌上電腦、筆記型電腦、甚 類工具的細節、功能以及限制。我們選定了三項應用領域 對並行程式而言,由於各個線程交織之行為,造成要被探索之狀態空間
至是智慧型手機。程式開發者自然想要利用並行性,以提 的題目為作為研習的標的:一、正規表達式的導數,二、 非常之大。為了有效地探索狀態空間,採用抽象技術是必須的。我們計 程式之語言與驗證技術。
昇應用程式之效率。但是並行程 結構化內容的轉換,三、軟體元件 劃結合現有並行程式之抽象化技術。例如,線程模組化抽象以簡化控制
式寫作卻相當困難。就算是有經 間的互動。這三項應用領域內的題 部分,而謂詞抽象以簡化數據部分。我們的目標是規模化並行軟體模型
驗的程式開發者,也會在寫作並 目,與一般應用程式的開發與正確 檢測,以驗證無法以現有方式處理之程式。
行程式時出錯。因此,雖然並行 性,有相當關聯。例如,網頁程式
電腦已廣為普及,並行程式之數 是否能安全執行、正確輸出、以及 除了我們的研究活動外,我們同時也奉獻顯著的資源於教育。為了介紹
量仍非常地有限。為了要幫助程 良好互動,分別和以上一、二、三 我們的研究給學生,我們自2007年以來,每年舉辦「台灣邏輯,語言和
式開發者利用現今處理器之計算 項應用領域中的一些問題相關。 計算暑期學校(FLOLAC)」。藉由FLOLAC,鼓勵越來越多的台灣學生至
能力,程式語言與形式方法實驗 程式語言和形式方法此一領域,學習並進行研究。
室故致力於並行程式之語言與驗 模型檢測是一種指認程式設計錯誤
證技術。 之 技 術 。 給 定 一 個 有 關 設 計 的 屬
性,模型檢測工具藉由搜索設計行
型別系統已廣泛地應用於現代程 為,以決定性地驗證給定之屬性。
式語言,以確保型別安全。舉例 對 並 行 系 統 而 言 , 設 計 的 行 為 與
而言,一個型別不良運算式可能會將數字0和字元’0’相加, 設計組件之數量成指數增長。這是眾所周知的狀態爆炸問
而產生一個不正確的結果。型別系統允許程式開發者,在 題。局部推理是一種為減緩在驗證並行系統中狀態爆炸問
編譯時就能指認此類型別錯誤。並行程式寫作易出錯已廣 題,所發展之組合分析技術。異於探索全局之狀態,此組
為人知。而程式開發者的挑戰,在現今由數百甚至數千交 合技術合成局部屬性,並在設計組件中驗證這些屬性。除
互溝通線程所組成之程式下,更形艱鉅。現代程式語言便 了古典有限並行程式,局部推理亦被用來分析參數系統。
採用型別系統,以保證程式中某類性質。
局部屬性之合成,是局部推理成功的關鍵。傳統上,局部
「會話型別」是一個為傳遞消息並行系統所發展之型別系 屬性乃由定點計算獲得。然而,迭代計算可能是不必要的
統,它能確保線程之間的溝通遵循某些協議。較先進的變 昂貴。我們計劃將演算式學習,應用於在局部推理中之合
化也能保證無死鎖。現在已做了些努力,藉由嵌入到現有 成問題。當有很多可行的局部屬 性,演算式學習可以有效
程式語言,以實現會話型別。不過,由於宿主語言型別系 率地推斷出其中之一。除此之外,學習型合成演算法在推
斷屬性之形式上,給我們更多彈性。這些彈性將幫助我們
了解有關程式之局部屬性。
研究群
34 Research Laboratories
35