4 research outputs found

    On a Connection between Procedural and Applicative Languages

    Get PDF
    This paper reports on the connection between procedural and applicative languages. It presents features, notions and methods derived from abstract data type theory that in our judgement are helpful and necessary for multi-level software engineering environments in general, and especially for the treatment of verification issues there. Reference is made to an existing software engineering system and exemplary languages of it. A denotational semantics based on algebraic structures is introduced and employed. Since object-orientedness is looked at as one of the most important properties of such environments the notion of correctness is applied to objects and object relations. Finally a realistic semi-automatic method for the check of correctness criteria is given, accompanied by remarks on our existing implementation

    GP 2: Efficient Implementation of a Graph Programming Language

    Get PDF
    The graph programming language GP (Graph Programs) 2 and its implementation is the subject of this thesis. The language allows programmers to write visual graph programs at a high level of abstraction, bringing the task of solving graph-based problems to an environment in which the user feels comfortable and secure. Implementing graph programs presents two main challenges. The first challenge is translating programs from a high-level source code representation to executable code, which involves bridging the gap from a non-deterministic program to deterministic machine code. The second challenge is overcoming the theoretically impractical complexity of applying graph transformation rules, the basic computation step of a graph program. The work presented in this thesis addresses both of these challenges. We tackle the first challenge by implementing a compiler that translates GP 2 graph programs directly to C code. Implementation strategies concerning the storage and access of internal data structures are empirically compared to determine the most efficient approach for executing practical graph programs. The second challenge is met by extending the double-pushout approach to graph transformation with root nodes to support fast execution of graph transformation rules by restricting the search to the local neighbourhood of the root nodes in the host graph. We add this theoretical construct to the GP 2 language in order to support rooted graph transformation rules, and we identify a class of rooted rules that are applicable in constant time on certain classes of graphs. Finally, we combine theory and practice by writing rooted graph programs to solve two common graph algorithms, and demonstrate that their execution times are capable of matching the execution times of tailored C solutions

    Correctly Communicating Software: Distributed, Asynchronous, and Beyond (extended version)

    Full text link
    Much of the software we use in everyday life consists of distributed components (running on separate cores or even computers) that collaborate through communication (by exchanging messages). It is crucial to develop robust methods that can give reliable guarantees about the behavior of such message-passing software. With a focus on session types as communication protocols and their foundations in logic, this thesis revolves around the following question: How can we push the boundaries of the logical foundations of session types (binary and multiparty), extending their expressiveness and applicability, while preserving fundamental correctness properties? In this context, this thesis studies several intertwined aspects of message-passing.Comment: PhD thesi
    corecore