7,862 research outputs found
A Certified Refactoring Engine
The paper surveys how software tools such as refactoring systems can be validated, and introduces a new mechanism, namely the extraction of a refactoring engine for a functional programming language from an Isabelle/HOL theory in which it is verified. This research is a first step in a programme to construct certified programming tools from verified theories. We also provide some empirical evidence of how refactoring can be of significant benefit in reshaping automatically-generated program code for use in larger systems
South Thompson Planning Report
The South Thompson River Basin is a major sub-regional area of the Thompson-Nicola Regional District. The South Thompson serves as a pathway for major salmon runs, a corridor for rail and highway transportation, a recreational resource for the Kamloops/Shuswap population, a scenic treasure, an agricultural base, a reservoir of flat land, and a clean water supply. It contains a priceless record of our archaeological and historical past. At the same time, it is obvious that this area is a delicate and vulnerable ecological and aesthetic system. Haphazard or random residential sprawl, ill considered industrial development, or inappropriate land use of any type could endanger and destroy this resource permanently. A policy statement indicating the desired directions in which the Regional District should permit development to proceed is imperative. This document, then, is a statement of policy.Not peer reviewedPlanning documentInterim Repor
South Thompson Settlement Strategy: Policy Document
The purpose of the South Thompson Settlement Strategy (STSS) is to strike a balance between anticipated settlement pressures and the many other important values in the South Thompson valley.Not peer reviewedPlanning documen
South Thompson Valley and Pinantan official settlement plan.
The recommended policies contained in this plan provide the Thompson-Nicola Regional District with the means to protect and enhance the agricultural economic base, regulate the supply and location of rural residential growth, guide commercial and industrial development and satisfy the historical, recreational, social and environmental concerns of the settlement plan area.Not peer reviewedPlanning documen
Verification of Refactorings in Isabelle/HOL
Refactorings are source-to-source behaviour-preserving program transformations that are used for improving program structure. Programmers refactor code to adapt it when new functionality is added or when the code is being repaired -- refactoring serves to keep the code ``clean'' and more maintainable. Refactoring can also be used as an exploratory technique for understanding source code. The process of refactoring has been automated through the implementation of tools; these tools assist programmers by handling the consistent application of behaviour-preserving changes to the code. It is desirable that the implementations of refactorings are correct: bugs might otherwise be introduced in refactored programs. The correctness, i.e. behaviour-preservation, of refactoring is traditionally probed by testing the refactored program and not the refactoring implementation directly. Recently, automated testing techniques have been used to test implementations of refactorings directly, but the coverage of testing is partial at best. The verification of refactorings is more challenging but determines whether a refactoring is behaviour-preserving for all possible programs. We study the verification of refactorings using the proof assistant Isabelle/HOL for untyped and typed lambda-calculi. Some of the issues encountered during verification are technical rather than purely theoretical: they relate to the embedding of the programming language in the proof environment. The reasons for our choice of techniques are discussed. We also discuss other practical considerations such as the readability of mechanised refactorings, and the avoidance of computationally expensive refactorings
Mountain landscape
This unidentified mountain landscape in the Great Smoky Mountains National Park was photographed by Jim Thompson. This image is from the collection of the Smoky Mountains Hiking Club, a group formed in the fall of 1924 after a group of outdoor enthusiasts hiked up to Mount LeConte. Enjoying the spectacular views, they decided to form a hiking club. The club was formally organized in Knoxville, Tennessee. Early club members included Carlos Campbell; Paul Adams, builder of Mount LeConte Lodge; author Laura Thornborough; Paul Fink, who served on the Park’s nomenclature committee; and Albert “Dutch” Roth. Jim Thompson was their “official” photographer
Laura Thornborough
A native of Tennessee, Laura Thornborough (born Laura Thornburgh, 1885-1973) was the author of several books; her most well-known work is “The Great Smoky Mountains.” In this 1937 publication, Thornborough describes the mountains and surrounding communities and provides a first-hand history of the park’s formation. James E. (Jim) Thompson (1880-1976) was a noted photographer, hiker, and outdoor enthusiast who played a major role in promoting a national park in the Southern Appalachians. In the 1920s, up to the park’s dedication in 1940, Thompson was often referred to as the “Official Photographer of the Great Smokies National Park Movement.” His work was reproduced in brochures and reports promoting the idea of a park and many of his photographs depict the landscape before park construction
Mechanical Verification of Refactorings
In this paper we describe the formal verification of refactorings for untyped and typed lambda-calculi. This verification is performed in the proof assistant Isabelle/HOL. Refactorings are program transformations applied to improve the design of source code. Well-structured source code is easier and cheaper to maintain, and this motivates the use of refactoring. These transformations have been implemented as programmer tools and, as with other metaprogramming tools, it is desirable that implementations of refactorings are correct. For a refactoring to be correct the refactored program must be identical in behaviour to the original program. Since refactorings are source-to-source transformations, concrete program information matters: for example, names (of variables, procedures, etc) and program layout should also be preserved by refactoring. This is a particular characteristic of refactorings since general program transformations operate over machine representations of programs, rather than readable source code. The paper describes the formalisation adopted, and the alternatives explored. It also reflects on some of the difficulties of performing such formalisations, the interaction between refactoring and phases such as type-checking and parsing, and the generation of correct implementations from mechanised proofs
Miranda in Isabelle
This paper describes our experience in formalising arguments about the Miranda functional programming language in Isabelle. After explaining some of the problems of reasoning about Miranda, we explain our two different approaches to encoding Miranda in Isabelle. We conclude by discussing some shorter examples and a case study of reasoning about hardware. Miranda 1 [Turner, 1990, Thompson, 1995b] is a modern functional programming language, allowing type polymorphism and higher-order functions in a similar way to ML[Milner et al., 1990]. It differs from ML in being lazy --- arguments to functions are only evaluated when and to the extent that they are needed --- and in being side-effect free. It has long been an article of faith in the functional programming community that languages like this are ideal candidates for program verification because of their `declarative' nature. This is clearly true for idealised languages, but real languages like Miranda bring their own complexities wh..
- …
