Corpus ID: 226306723

Guiding user annotations for units-of-measure verification

  title={Guiding user annotations for units-of-measure verification},
  author={Dominic A. Orchard and Mistral Contrastin and Matthew Danish and Andrew C. Rice},
This extended abstract reports on previous work of the CamFort project in which we developed an external units-of-measure type system for Fortran code, targeted at scientists. Our approach can guide the programmer in adding specifications (type annotations) to existing code, with the aim of easing adoption on legacy code. Pertinent to the topics of the HATRA workshop, we discuss the human-aspects of the tool here. CamFort is open-source and freely available online. 

Figures from this paper


Quantity Correctness in Fortran Programs
It is shown that unit-checking is insufficient to detect all quantity errors, and that kind-of-quantity also needs to be verified. Expand
Evolving Fortran types with inferred units-of-measure
The design and implementation of a units-of-measure system for Fortran, provided as a pre-processor, designed to aid adding units to existing code base and introduced a technique for reporting to the user a set of critical variables which should be explicitly annotated with units. Expand
Units-of-Measure Correctness in Fortran Programs
The authors argue that they can increase confidence in Fortran programs with unit annotations and CamFort units-of-measure analysis by improving the quality of the analysis. Expand
Types for Units-of-Measure: Theory and Practice
In science and engineering, dimensional and unit consistency provides a first check on the correctness of an equation or formula, just as in programming the validation of a program by the type-checker eliminates one possible reason for failure. Expand
Lightweight detection of physical unit inconsistencies without program annotations
A lightweight static analysis approach focused on physical unit inconsistency detection that requires no end-user program annotation, modification, or migration is presented, capitalizing on existing shared libraries that handle standardized physical units to link class attributes of shared libraries to physical units. Expand
Cascade: A Universal Programmer-Assisted Type Qualifier Inference Tool
Cascade is an interactive type qualifier inference tool that is easy to implement and universal (i.e., it can work for any type qualifier system for which a checker is implemented) and shows that qualifier inference can achieve better results by involving programmers rather than relying solely on automation. Expand
Supporting Software Sustainability with Lightweight Specifications
Two examples of lightweight specifications for numerical code are given: units-of-measure types which specify the physical units of numerical quantities in a program; and stencil specifications which describe the pattern of data access used in array computations. Expand
Verifying spatial properties of array computations
A lightweight declarative specification language capturing the majority of array access patterns via a small set of combinators, and detail a semantic model, and the design and implementation of a verification tool for the specification language, which both checks and infers specifications. Expand
Osprey: a practical type system for validating dimensional unit correctness of C programs
This paper presents a type system to automatically detect potential errors involving measurement units, which is constraint-based: it model units as types and flow of units as constraints and scales to large programs. Expand
Programming languages and dimensions
This thesis investigates the extension of programming languages to support the notion of physical dimension by presenting a type system similar to that of the programming language ML but extended with polymorphic dimension types. Expand