3,682 research outputs found

    A Refinement Calculus for Logic Programs

    Get PDF
    Existing refinement calculi provide frameworks for the stepwise development of imperative programs from specifications. This paper presents a refinement calculus for deriving logic programs. The calculus contains a wide-spectrum logic programming language, including executable constructs such as sequential conjunction, disjunction, and existential quantification, as well as specification constructs such as general predicates, assumptions and universal quantification. A declarative semantics is defined for this wide-spectrum language based on executions. Executions are partial functions from states to states, where a state is represented as a set of bindings. The semantics is used to define the meaning of programs and specifications, including parameters and recursion. To complete the calculus, a notion of correctness-preserving refinement over programs in the wide-spectrum language is defined and refinement laws for developing programs are introduced. The refinement calculus is illustrated using example derivations and prototype tool support is discussed.Comment: 36 pages, 3 figures. To be published in Theory and Practice of Logic Programming (TPLP

    A synchronous program algebra: a basis for reasoning about shared-memory and event-based concurrency

    Full text link
    This research started with an algebra for reasoning about rely/guarantee concurrency for a shared memory model. The approach taken led to a more abstract algebra of atomic steps, in which atomic steps synchronise (rather than interleave) when composed in parallel. The algebra of rely/guarantee concurrency then becomes an instantiation of the more abstract algebra. Many of the core properties needed for rely/guarantee reasoning can be shown to hold in the abstract algebra where their proofs are simpler and hence allow a higher degree of automation. The algebra has been encoded in Isabelle/HOL to provide a basis for tool support for program verification. In rely/guarantee concurrency, programs are specified to guarantee certain behaviours until assumptions about the behaviour of their environment are violated. When assumptions are violated, program behaviour is unconstrained (aborting), and guarantees need no longer hold. To support these guarantees a second synchronous operator, weak conjunction, was introduced: both processes in a weak conjunction must agree to take each atomic step, unless one aborts in which case the whole aborts. In developing the laws for parallel and weak conjunction we found many properties were shared by the operators and that the proofs of many laws were essentially the same. This insight led to the idea of generalising synchronisation to an abstract operator with only the axioms that are shared by the parallel and weak conjunction operator, so that those two operators can be viewed as instantiations of the abstract synchronisation operator. The main differences between parallel and weak conjunction are how they combine individual atomic steps; that is left open in the axioms for the abstract operator.Comment: Extended version of a Formal Methods 2016 paper, "An algebra of synchronous atomic steps

    A Modified Agar Test Method for Wood Preservatives

    Get PDF
    There are two possible methods by which wood could be protected from the attack of saprophytic fungus growth. Either the conditions can be so controlled as to be unfavorable for the growth of the attacking organism, or the wood can be permeated with a poisonous substance which will in some way disrupt the vital processes of the fungus. It is the obvious that the first suggested preventative would not at all be practical due to the wide geographical range over which wood is used and to the various types of weather conditions to which it may be subjected. Consequently, the latter approach to the problem has been the one followed by the wood preservation industry and by scientific investigators in the field

    A modified agar test method for wood preservatives

    Get PDF
    The principal criteria for a good wood preservative involves the following considerations 1. The preservative must be sufficiently toxic to curb the action of the wood rotting fungi and wood attacking insects 2. The preservative must not attack wood 3. The preservative must not undergo a chemical or physical change brought upon by contact with the wood cells so as to render the chemical agent non-toxic or less toxic 4. The preservative must not be a substance which will attack metals 5. The preservative must be of such a nature as to make it easily injected into wood 6. The volatility, chemical stability, penetrability, cleanliness, cost, toxicity to human beings and other similar factors must conform to the practical conditions under which the preservative is to be used. Although all of the above mentioned conditions are of high importance, the fact remains that the first consideration in selecting a wood preservative must be given to its ability to kill or to vitally inhibit the biological organisms which attack the wood. “Biological organisms” can be correctly construed as pertaining to both plants and animals. However, this discussion will be confined purely to the harmful effects of fungi upon spermatophytic plants and to the means by which the toxic action of chemical agents upon the saprophytic growth can be studied
    corecore