Page 38 - profile2014.indd
P. 38

Programming Languages


                                                   and Formal Methods Lab

                 Lab




                Research Faculty
                Bow-Yaw Wang                      The Programming Languages and Formal Methods research group develops tech-
                Research Fellow                    niques for ensuring program correctness. Our researches in programming languag-
                                                   es focus on the syntactic, semantic, and pragmatic issues in the development of
                Yu-Fang Chen
                Associate Research Fellow          correct programs. The researches in formal methods emphasize on the algorithmic,
                                                   computational, practical aspects in the analysis of realistic programs.  We apply
                Tyng-Ruey Chuang                   mathematical and formal techniques in the investigation of our research problems.
                Associate Research Fellow
                                                  We also aim to develop tools and methodologies to help developers writing correct
                Shin-Cheng Mu                      codes.
                Associate Research Fellow
                                                   Multi-core processors are now widely used in desktop computers, notebooks, and
                                                   even smart phones. Developers certainly would like to exploit concurrency to im-
                                                   prove the efficiency of applications. Yet concurrent programming is known to be
                                                   difficult. Even experienced developers may make mistakes in writing concurrent
                                                   programs. Subsequently, there are still a very  limited  number of concurrent pro-
                                                   grams despite of the prevalence of concurrent computer systems. In order to help
                                                   developers exploit the computational power in modern processors, the Program-
                                                   ming Languages and Formal Methods research group are currently working on lan-
                                                   guage and verification techniques for concurrent programs.

                                                  Type systems are widely deployed in modern programming languages to ensure
                                                   type safety. For example an ill-typed expression may add the number 0 to a charac-
                                                   ter ‘0’ and evaluate to an incorrect result. Type systems allow developers to identify
                                                   such type errors at the compile time. Concurrent programming is known to be er-
                                                   ror-prone, and the challenge of programmers is even made harder when a modern
                                                   program often consists of hundreds or even thousands of threads communicating
                                                   to each other. Modern programming languages adopt expressive type systems to
                                                   guarantee certain properties of programs.

                                                  “Session type” is a type system for message-passing concurrent programs that en-
                                                   sures that communication between threads follow certain protocol. More advanced
                                                  variations also guarantee deadlock-freeness. Some efforts were made to implement
                                                   session type systems by embedding them to existing languages. Those implement-
                                                   ed, however, are still far behind those existing on paper, due to inexpressiveness of
                                                   the type system in the host language. We plan to embed session type into Agda, a
                                                   language with an expressive dependent type system, hoping to build an integrated
                                                   environment in which programmers may program in Agda/Haskell, and use the type
                                                   system to guarantee correctness and termination.
                                                  We also plan to investigate the “proofs-as-programs” approach to program correct-
                                                   ness as embodied in proof assistants such as Coq and their program extraction
                                                   mechanisms, and to familiarize ourselves with the details of these tools so as to
                                                   understand their capacities and limitations. We have selected three application do-
                                                   mains to work on: 1) Derivatives of regular expressions, 2) Transformations of struc-
                                                   tural contents, and 3) Interactions of software components. The problems dealt with
                                                   in the above three domains can often be related to those encountered in general
                                                   application development. For example, Web application scripts shall process all user
                                                   inputs correctly (and avoiding common security pitfalls e.g. those caused by SQL






          38    研究群 Research Laboratories
   33   34   35   36   37   38   39   40   41   42   43