49,862 research outputs found

    Theoretical aspects of the syntax and semantics of the Java language.

    Get PDF
    This thesis investigates two theoretical aspects of the formal definition of programming languages, using case studies in Java. First, we define modular grammars which can be used to decompose large grammars. Modular grammars allow the modular definition of formal languages. They provide concepts of component and architecture for grammars and languages. We show that this modular method can be used to define a modem practical language like Java. Second, we describe recent general work on the definition of interfaces and interface definition languages (IDLs). In Rees, Stephenson and Tucker [2003], there is an analysis of the idea of interfaces and an algebraic model of a general IDL. We apply these ideas to analyzing aspects of interfaces in Java. The thesis is comprised of five chapters together with an appendix. Chapter 1 consists of an introduction to the thesis. The second chapter reports on object-oriented programming and the Java programming language with particular emphasis on a mathematical theory of its definition. Chapter 3 deals with a modular decomposition of Java syntax and grammars. In Chapter 4, we expound a theory of the modular definitions of interfaces within any programming language. One important feature of the general account is the process of flattening the hierarchical structure produced by modularity. In Chapter 5, we attempt to implement the results of research into the Interface Definition Language discussed in Chapter 4. We define 'Little Java', a subset of the programming language Java, and endeavour to provide a series of translations from 'Little Java'' to an abstract object-oriented interface definition language OO-IDL and thence to an interface definition language AS-IDL for abstract data types. In the Appendix, we review the history of the Java language

    Abstract State Machines 1988-1998: Commented ASM Bibliography

    Get PDF
    An annotated bibliography of papers which deal with or use Abstract State Machines (ASMs), as of January 1998.Comment: Also maintained as a BibTeX file at http://www.eecs.umich.edu/gasm

    ProSLAM: Graph SLAM from a Programmer's Perspective

    Full text link
    In this paper we present ProSLAM, a lightweight stereo visual SLAM system designed with simplicity in mind. Our work stems from the experience gathered by the authors while teaching SLAM to students and aims at providing a highly modular system that can be easily implemented and understood. Rather than focusing on the well known mathematical aspects of Stereo Visual SLAM, in this work we highlight the data structures and the algorithmic aspects that one needs to tackle during the design of such a system. We implemented ProSLAM using the C++ programming language in combination with a minimal set of well known used external libraries. In addition to an open source implementation, we provide several code snippets that address the core aspects of our approach directly in this paper. The results of a thorough validation performed on standard benchmark datasets show that our approach achieves accuracy comparable to state of the art methods, while requiring substantially less computational resources.Comment: 8 pages, 8 figure

    RSA Cryptosystem: An Analysis And Python Simulator

    Get PDF
    This project involves an exploration of the RSA cryptosystem and the mathematical concepts embedded within it. The first goal is to explain what the cryptosystem consists of, and why it works. Additional goals include detailing some techniques for primality testing, discussing integer factorization, modular exponentiation, and digital signatures, and explaining the importance of these topics to the security and efficiency of the RSA cryptosystem. The final goal is to implement all of these components into a full simulation of the entire RSA cryptosystem using the Python programming language

    Towards MKM in the Large: Modular Representation and Scalable Software Architecture

    Full text link
    MKM has been defined as the quest for technologies to manage mathematical knowledge. MKM "in the small" is well-studied, so the real problem is to scale up to large, highly interconnected corpora: "MKM in the large". We contend that advances in two areas are needed to reach this goal. We need representation languages that support incremental processing of all primitive MKM operations, and we need software architectures and implementations that implement these operations scalably on large knowledge bases. We present instances of both in this paper: the MMT framework for modular theory-graphs that integrates meta-logical foundations, which forms the base of the next OMDoc version; and TNTBase, a versioned storage system for XML-based document formats. TNTBase becomes an MMT database by instantiating it with special MKM operations for MMT.Comment: To appear in The 9th International Conference on Mathematical Knowledge Management: MKM 201

    A robust algebraic framework for high-level music writing and programming

    Get PDF
    International audienceIn this paper, we present a new algebraic model for music programming : tiled musical graphs. It is based on the idea that the definition of musical objects : what they are, and the synchronization of these objects : when they should be played, are two orthogonal aspects of music programming that should be kept separate although handled in a combined way. This leads to the definition of an algebra of music objects : tiled music graphs, which can be combined by a single operator : the tiled product, that is neither sequential nor parallel but both. From a mathematical point of view, this algebra is known to be especially robust since it is an inverse monoid. Various operators such as the reset and the coreset projections derive from these algebra and turned out to be fairly useful for music modeling. From a programming point of view, it provide a high level domain specific language (DSL) that is both hierarchical and modular. This language is currently under implementation in the functional programming language Haskell. From an applicative point of view, various music modeling examples are provided to show how notes, chords, melodies, musical meters and various kind of interpretation aspects can easily and robustly be encoded in this formalism

    Formal Reasoning Using an Iterative Approach with an Integrated Web IDE

    Full text link
    This paper summarizes our experience in communicating the elements of reasoning about correctness, and the central role of formal specifications in reasoning about modular, component-based software using a language and an integrated Web IDE designed for the purpose. Our experience in using such an IDE, supported by a 'push-button' verifying compiler in a classroom setting, reveals the highly iterative process learners use to arrive at suitably specified, automatically provable code. We explain how the IDE facilitates reasoning at each step of this process by providing human readable verification conditions (VCs) and feedback from an integrated prover that clearly indicates unprovable VCs to help identify obstacles to completing proofs. The paper discusses the IDE's usage in verified software development using several examples drawn from actual classroom lectures and student assignments to illustrate principles of design-by-contract and the iterative process of creating and subsequently refining assertions, such as loop invariants in object-based code.Comment: In Proceedings F-IDE 2015, arXiv:1508.0338

    Facilitating modular property-preserving extensions of programming languages

    Get PDF
    We will explore an approach to modular programming language descriptions and extensions in a denotational style. Based on a language core, language features are added stepwise on the core. Language features can be described separated from each other in a self-contained, orthogonal way. We present an extension semantics framework consisting of mechanisms to adapt semantics of a basic language to new structural requirements in an extended language preserving the behaviour of programs of the basic language. Common templates of extension are provided. These can be collected in extension libraries accessible to and extendible by language designers. Mechanisms to extend these libraries are provided. A notation for describing language features embedding these semantics extensions is presented
    corecore