Compilers that Preserve and Enforce Invariants and Proofs
Compilers that Preserve and Enforce Invariants and Proofs
批准号:
RGPIN-2019-04207
负责人:
Bowman, William
金额:
$2.4万
依托单位国家:
加拿大
项目类别:
Discovery Grants Program - Individual
财政年份:
2022
资助国家:
加拿大
项目状态:
已结题
起止时间:
2022-01-01 至 2023-12-31
中文摘要
点击翻译按钮获取中文摘要
英文摘要
The goal of this program is to make software more reliable by designing new software development tools that provide guarantees about the machine code used to implement all programs. We rely on software to control everything from spacecraft to pacemakers. This means even simple software errors, such as mistaking a number in imperial units for a number in metric, cause millions of dollars in damages and cost lives. The field of high-assurance software seeks to prevent software errors, but the process is costly and time consuming. This research program will simplify high-assurance software development by creating new tools that automatically rule out whole classes of errors in machine code. Machine code is usually generated from programming languages that simplify software development by hiding the details of how computers execute 0s and 1s. For example, we think about numbers in decimal, the digit 0--9, while computers represent numbers as sequences of 0 and 1 such as "101" (the number "5"). A compiler is a program generates machine code, e.g., translates "5" into "101". Languages often provide tools for reasoning about invariants---properties of a program that must always be true for the program to be correct. For example, some languages can prevent a program from using the imperial unit "5 ft" when a metric unit "5 m" is expected (which would have prevented the Mars Climate Orbiter disaster and saved $300 million). In these languages, the compiler checks that the invariant holds before trying to generate machine code. A few languages, such as so-called dependently typed languages, allow the programmer to encode program invariants and proofs of correctness. Writing invariants and proofs requires extra work at first, but allows the programmer to prove that their program is safe, secure, and correct. This is necessary since, in general, we cannot automatically check arbitrary invariants, but we can check programmer provided proofs. Unfortunately, compilers for dependently typed languages do not preserve all the invariants programmers can express. So for example, while "5 ft" and "5 m" are different, the compiler will translate both to "101", allowing errors like "5 ft + 5 m = 10" even in a "proven correct" program. This research program will design and develop new compilers that translate dependently typed programs into machine code while preserving invariants and proofs. By making compilers preserve more of what a programmer is thinking, we improve the reliability of all programs. In the short-term, this research can reduce the cost of high-assurance software, such as the software running in cars and medical devices, by providing tools to automatically rule out classes of errors. In the long-term, this work can reduce the cost and improve the performance of a broad range of software, from games to scientific computations, by allowing developers to better communicate with the compiler as it generates efficient machine code.
期刊论文(0)
专著(0)
科研奖励(0)
会议论文
Compilers that Preserve and Enforce Invariants and Proofs
-
批准号:RGPIN-2019-04207
-
项目类别:Discovery Grants Program - Individual
-
资助金额:$2.4万
-
财政年份:2021
-
负责人:Bowman, William
-
依托单位:
Compilers that Preserve and Enforce Invariants and Proofs
-
批准号:RGPIN-2019-04207
-
项目类别:Discovery Grants Program - Individual
-
资助金额:$2.4万
-
财政年份:2020
-
负责人:Bowman, William
-
依托单位:
Compilers that Preserve and Enforce Invariants and Proofs
-
批准号:RGPIN-2019-04207
-
项目类别:Discovery Grants Program - Individual
-
资助金额:$2.4万
-
财政年份:2019
-
负责人:Bowman, William
-
依托单位:
Compilers that Preserve and Enforce Invariants and Proofs
-
批准号:DGECR-2019-00061
-
项目类别:Discovery Launch Supplement
-
资助金额:$0.91万
-
财政年份:2019
-
负责人:Bowman, William
-
依托单位:
海外基金