3,888 research outputs found
Inversive Meadows and Divisive Meadows
Inversive meadows are commutative rings with a multiplicative identity
element and a total multiplicative inverse operation whose value at 0 is 0.
Divisive meadows are inversive meadows with the multiplicative inverse
operation replaced by a division operation. We give finite equational
specifications of the class of all inversive meadows and the class of all
divisive meadows. It depends on the angle from which they are viewed whether
inversive meadows or divisive meadows must be considered more basic. We show
that inversive and divisive meadows of rational numbers can be obtained as
initial algebras of finite equational specifications. In the spirit of
Peacock's arithmetical algebra, we study variants of inversive and divisive
meadows without an additive identity element and/or an additive inverse
operation. We propose simple constructions of variants of inversive and
divisive meadows with a partial multiplicative inverse or division operation
from inversive and divisive meadows. Divisive meadows are more basic if these
variants are considered as well. We give a simple account of how mathematicians
deal with 1 / 0, in which meadows and a customary convention among
mathematicians play prominent parts, and we make plausible that a convincing
account, starting from the popular computer science viewpoint that 1 / 0 is
undefined, by means of some logic of partial functions is not attainable.Comment: 18 pages; error corrected; 29 pages, combined with arXiv:0909.2088
[math.RA] and arXiv:0909.5271 [math.RA
Superposition as a logical glue
The typical mathematical language systematically exploits notational and
logical abuses whose resolution requires not just the knowledge of domain
specific notation and conventions, but not trivial skills in the given
mathematical discipline. A large part of this background knowledge is expressed
in form of equalities and isomorphisms, allowing mathematicians to freely move
between different incarnations of the same entity without even mentioning the
transformation. Providing ITP-systems with similar capabilities seems to be a
major way to improve their intelligence, and to ease the communication between
the user and the machine. The present paper discusses our experience of
integration of a superposition calculus within the Matita interactive prover,
providing in particular a very flexible, "smart" application tactic, and a
simple, innovative approach to automation.Comment: In Proceedings TYPES 2009, arXiv:1103.311
Transformational derivation of programs using the Focus system
A program derivation support system called Focus is being constructed. It will formally derive programs using the paradigm of program transformation. The following issues are discussed: (1) the integration of validation and program derivation activities in the Focus system; (2) its tree-based user interface; (3) the control of search spaces in program derivation; and (4) the structure and organization of program derivation records. The inference procedures of the system are based on the integration of functional and logic programming principles. This brings about a synthesis of paradigms that were heretofore considered far apart, such as logical and executable specifications and constructive and transformational approaches to program derivation. A great emphasis has been placed, in the design of Focus, on achieving small search spaces during program derivation. The program manipulation operations such as expansion, simplification and rewriting were designed with this objective. The role of operations that are expensive in search spaces, such as folding, has been reduced. Program derivations are documented in Focus in a way that the high level descriptions of derivations are expressed only using program level information. All the meta-level information, together with dependencies between derivations of program components, is automatically recorded by the system at a lower level of description for its own use in replay
Verifying procedural programs via constrained rewriting induction
This paper aims to develop a verification method for procedural programs via a transformation into Logically Constrained Term Rewriting Systems (LCTRSs). To this end, we extend transformation methods based on integer TRSs to handle arbitrary data types, global variables, function calls and arrays, as well as encode safety checks. Then we adapt existing rewriting induction methods to LCTRSs and propose a simple yet effective method to generalize equations. We show that we can automatically verify memory safety and prove correctness of realistic functions. Our approach proves equivalence between two implementations, so in contrast to other works, we do not require an explicit specification in a separate specification language
Program transformations using temporal logic side conditions
This paper describes an approach to program optimisation based on transformations, where temporal logic is used to specify side conditions, and strategies are created which expand the repertoire of transformations and provide a suitable level of abstraction. We demonstrate the power of this approach by developing a set of optimisations using our transformation language and showing how the transformations can be converted into a form which makes it easier to apply them, while maintaining trust in the resulting optimising steps. The approach is illustrated through a transformational case study where we apply several optimisations to a small program
- ā¦