Assembling simulation software along with the associated tools and utilities
is a challenging endeavor, particularly when the components are distributed
across multiple source code versioning systems. It is problematic for
researchers compiling and running the software across many different
supercomputers, as well as for novices in a field who are often presented with
a bewildering list of software to collect and install. In this paper, we
describe a language (CRL) for specifying software components with the details
needed to obtain them from source code repositories.
We report on a transformation from Sequential Function Charts of the IEC
61131-3 standard to BIP. Our presentation features a description of formal
syntax and semantics representation of the involved languages and
transformation rules. Furthermore, we present a formalism for describing
invariants of IEC 61131-3 systems and establish a notion of invariant
preservation between the two languages. For a subset of our transformation
rules we sketch a proof showing invariant preservation during the
transformation of IEC 61131-3 to BIP and vice versa.
There are many programming languages in the world today.Each language has
their advantage and disavantage. In this paper, we will discuss ten programming
languages: C++, C#, Java, Groovy, JavaScript, PHP, Schalar, Scheme, Haskell and
AspectJ. We summarize and compare these ten languages on ten different
criterion. For example, Default more secure programming practices, Web
applications development, OO-based abstraction and etc. At the end, we will
give our conclusion that which languages are suitable and which are not for
using in some cases.
Comparison of programming languages is a common topic of discussion among
software engineers. Few languages ever become sufficiently popular that they
are used by more than a few people or find their niche in research or
education; but professional programmers can easily use dozens of different
languages during their career. Multiple programming languages are designed,
specified, and implemented every year in order to keep up with the changing
programming paradigms, hardware evolution, etc.
With the advent of numerous languages it is difficult to realize the edge of
one language in a particular scope over another one. We are making an effort,
realizing these few issues and comparing some main stream languages like Java,
Scala, C++, Haskell, VB .NET, AspectJ, Perl, Ruby, PHP and Scheme keeping in
mind some core issues in program development.
scriptJ(TM) is a general purpose programming language for implementing
discretionary, adaptive concurrency that manages resources and demand. It is
differentiated from other concurrent languages by the following: - Universality
o Everything in the language is accomplished using message passing including
the very definition of scriptJ itself. o Directly express discretionary push
and pull concurrency o Functional and Logic Programming are integrated into
general concurrent programming.
Previous deforestation and supercompilation algorithms may introduce
accidental termination when applied to call-by-value programs. This hides
looping bugs from the programmer, and changes the behavior of a program
depending on whether it is optimized or not. We present a supercompilation
algorithm for a higher-order call-by-value language and prove that the
algorithm both terminates and preserves termination properties. This algorithm
utilizes strictness information to decide whether to substitute or not and
compares favorably with previous call-by-name transformations.
The Actor model is a mathematical theory that treats "Actors" as the
universal primitives of concurrent digital computation. The model has been used
both as a framework for a theoretical understanding of concurrency, and as the
theoretical basis for several practical implementations of concurrent systems.
Page switching is a technique that increases the memory in microcontrollers
without extending the address buses. This technique is widely used in the
design of 8-bit MCUs. In this paper, we present an algorithm to reduce the
overhead of page switching. To pursue small code size, we place the emphasis on
the allocation of functions into suitable pages with a heuristic algorithm,
thereby the cost-effective placement of page selection instructions. Our
experimental results showed the optimization achieved a reduction in code size
of 13.2 percent.
Testing is a vital part of the software development process. Test Case
Generation (TCG) is the process of automatically generating a collection of
test cases which are applied to a system under test. White-box TCG is usually
performed by means of symbolic execution, i.e., instead of executing the
program on normal values (e.g., numbers), the program is executed on symbolic
values representing arbitrary values.
In the context of Service-Oriented Computing, applications can be developed
following the REST (Representation State Transfer) architectural style. This
style corresponds to a resource-oriented model, where resources are manipulated
via CRUD (Create, Request, Update, Delete) interfaces. The diversity of CRUD
languages due to the absence of a standard leads to composition problems
related to adaptation, integration and coordination of services.
An important issue towards a broader acceptance of answer-set programming
(ASP) is the deployment of tools which support the programmer during the coding
phase. In particular, methods for debugging an answer-set program are
recognised as a crucial step in this regard. Initial work on debugging in ASP
mainly focused on propositional programs, yet practical debuggers need to
handle programs with variables as well. In this paper, we discuss a debugging
technique that is directly geared towards non-ground programs.
We identify a class of programs manipulating lists of data items for which
checking functional equivalence and pre/post verification conditions is
decidable. Lists are modeled as data words, (unbounded) sequences of data
values, tagged with symbols from a finite set, over a potentially infinite data
domain that supports only the operations of equality and ordering. First, we
introduce streaming data-word transducers that map input data words to output
data words in a single left-to-right pass in linear time.
Context-free approaches to static analysis gain precision over classical
approaches by perfectly matching returns to call sites---a property that
eliminates spurious interprocedural paths. Vardoulakis and Shivers's recent
formulation of CFA2 showed that it is possible (if expensive) to apply
context-free methods to higher-order languages and gain the same boost in
precision achieved over first-order programs.
PRISM is an extension of Prolog with probabilistic predicates and built-in
support for expectation-maximization learning. Constraint Handling Rules (CHR)
is a high-level programming language based on multi-headed multiset rewrite
rules.
Development of distributed systems is a difficult task. Declarative
programming techniques hold a promising potential for effectively supporting
programmer in this challenge. While Datalog-based languages have been actively
explored for programming distributed systems, Prolog received relatively little
attention in this application area so far. In this paper we present a
Prolog-based programming system, called DAHL, for the declarative development
of distributed systems. DAHL extends Prolog with an event-driven control
mechanism and built-in networking procedures.
Static analysis is a powerful technique for automatic verification of
programs but raises major engineering challenges when developing a full-fledged
analyzer for a realistic language such as Java. This paper describes the Sawja
library: a static analysis framework fully compliant with Java 6 which provides
OCaml modules for efficiently manipulating Java bytecode programs.
The lambda calculus, subject to typing restrictions, provides a syntax for
the internal language of cartesian closed categories. This paper establishes a
parallel result: staging annotations, subject to named level restrictions,
provide a syntax for the internal language of (the codomain of) a functor which
preserves a premonoidal enrichment. Such functors are uniquely determined by
functors from an {\it enriching} category to an {\it enriched} category. An
equational axiomatization for the latter form is given, and Arrows are shown to
constitute a special case.
Lecture notes for the Comparative Studies of Programming Languages course,
COMP6411, taught at the Department of Computer Science and Software
Engineering, Faculty of Engineering and Computer Science, Concordia University,
Montreal, QC, Canada. These notes include a compiled book of primarily related
articles from the Wikipedia, the Free Encyclopedia, as well as Comparative
Programming Languages book and other resources, including our own. The original
notes were compiled by Dr. Paquet.
This volume contains the proceedings of the Eighth Workshop on Quantitative
Aspects of Programming Languages (QAPL 2010), held in Paphos, Cyprus, on March
27-28, 2010. QAPL 2010 is a satellite event of the European Joint Conferences
on Theory and Practice of Software (ETAPS 2010).
The work presented in this thesis seeks to improve programmer productivity in
the following ways:
- by reducing the amount of code that has to be written to construct an
application;
- by increasing the reliability of the code written; and
The social and economic importance of large bodies of programs and data that
are potentially long-lived has attracted much attention in the commercial and
research communities. Here we concentrate on a set of methodologies and
technologies called persistent programming. In particular we review programming
language support for the concept of orthogonal persistence, a technique for the
uniform treatment of objects irrespective of their types or longevity.
Static analysis by abstract interpretation aims at automatically proving
properties of computer programs. To do this, an over-approximation of program
semantics, defined as the least fixpoint of a system of semantic equations,
must be computed. To enforce the convergence of this computation, widening
operator is used but it may lead to coarse results. We propose a new method to
accelerate the computation of this fixpoint by using standard techniques of
numerical analysis. Our goal is to automatically and dynamically adapt the
widening operator in order to maintain precision.
A novel language system has given rise to promising alternatives to standard
formal and processor network models of computation. An interstring linked with
a abstract machine environment, shares sub-expressions, transfers data, and
spatially allocates resources for the parallel evaluation of dataflow. Formal
models called the a-Ram family are introduced, designed to support interstring
programming languages (interlanguages). Distinct from dataflow, graph
rewriting, and FPGA models, a-Ram instructions are bit level and execute in
situ.
A parametric analysis is an analysis whose input and output are parametrized
with a number of parameters which can be instantiated to abstract properties
after analysis is completed. This paper proposes to use Cousot and Cousot's
Cardinal power domain to capture functional dependencies of analysis output on
its input and obtain a parametric analysis by parametrizing a non-parametric
base analysis. We illustrate the method by parametrizing a $\pos$ based
groundness analysis of logic programs to a parametric groundness analysis.
Every algorithm which can be executed on a computer can at least in principle
be realized in hardware, i.e. by a discrete physical system. The problem is
that up to now there is no programming language by which physical systems can
constructively be described. Such tool, however, is essential for the compact
description and automatic production of complex systems. This paper introduces
a programming language, called Akton-Algebra, which provides the foundation for
the complete description of discrete physical systems.
We discuss a programming language for real-time audio signal processing that
is embedded in the functional language Haskell and uses the Low-Level Virtual
Machine as back-end. With that framework we can code with the comfort and type
safety of Haskell while achieving maximum efficiency of fast inner loops and
full vectorisation. This way Haskell becomes a valuable alternative to special
purpose signal processing languages.
We present a new programming paradigm which can be useful, in particular, for
implementing window interfaces and parallel algorithms. This paradigm allows a
user to define operators which can contain nested operators. The new paradigm
is called operator-oriented. One of the goals of this paradigm is to escape the
complexity of objects definitions inherent in many object-oriented languages
and to move to transparent algorithms definitions.
Garbage collectors are notoriously hard to verify, due to their low-level
interaction with the underlying system and the general difficulty in reasoning
about reachability in graphs. Several papers have presented verified
collectors, but either the proofs were hand-written or the collectors were too
simplistic to use on practical applications. In this work, we present two
mechanically verified garbage collectors, both practical enough to use for
real-world C# benchmarks.
Refinement Types are a promising approach for checking behavioral properties
of programs written using advanced language features like higher-order
functions, parametric polymorphism and recursive datatypes. The main limitation
of refinement type systems to date is the requirement that the programmer
provides the types of all functions, after which the type system can check the
types and hence, verify the program. In this paper, we show how to
automatically infer refinement types, using existing abstract interpretation
tools for imperative programs.
The dependency core calculus (DCC), a simple extension of the computational
lambda calculus, captures a common notion of dependency that arises in many
programming language settings. This notion of dependency is closely related to
the notion of information flow in security; it is sensitive not only to data
dependencies that cause explicit flows, but also to control dependencies that
cause implicit flows. In this paper, we study variants of DCC in which the data
and control dependencies are decoupled.
The classical technique for proving termination of a generic sequential
computer program involves the synthesis of a ranking function for each loop of
the program. Linear ranking functions are particularly interesting because many
terminating loops admit one and algorithms exist to automatically synthesize
it.
The design of embedded control systems is mainly done with model-based tools
such as Matlab/Simulink. Numerical simulation is the central technique of
development and verification of such tools. Floating-point arithmetic, that is
well-known to only provide approximated results, is omnipresent in this
activity. In order to validate the behaviors of numerical simulations using
abstract interpretation-based static analysis, we present, theoretically and
with experiments, a new relational abstract domain dedicated to floating-point
variables.
This volume contains the proceedings of RULE 2009: the tenth International
Workshop on Rule-Based Programming. It took place in June 28th 2009, Brasilia,
Brazil, as a satellite event of RDP 2009. The first Rule workshop was held in
Montreal in 2000, and subsequent editions took place in Firenze, Pittsburgh,
Valencia, Aachen, Nara, Seattle, Paris, and Hagenberg.
The call-by-need lambda calculus provides an equational framework for
reasoning syntactically about lazy evaluation. This paper examines its
operational characteristics.
By a series of reasoning steps, we systematically unpack the standard-order
reduction relation of the calculus and discover a novel abstract machine
definition which, like the calculus, goes "under lambdas." We prove that
machine evaluation is equivalent to standard-order evaluation.
The Resource Description Framework (RDF) is a semantic network data model
that is used to create machine-understandable descriptions of the world and is
the basis of the Semantic Web. This article discusses the application of RDF to
the representation of computer software and virtual computing machines. The
Semantic Web is posited as not only a web of data, but also as a web of
programs and processes.
This article presents a complete scheme for the development of Critical
Embedded Systems with Multiple Real-Time Constraints. The system is programmed
with a language that extends the synchronous approach with high-level real-time
primitives. It enables to assemble in a modular and hierarchical manner several
locally mono-periodic synchronous systems into a globally multi-periodic
synchronous system. It also allows to specify flow latency constraints. A
program is translated into a set of real-time tasks.
The C Object System (Cos) is a small C library which implements high-level
concepts available in Clos, Objc and other object-oriented programming
languages: uniform object model (class, meta-class and property-metaclass),
generic functions, multi-methods, delegation, properties, exceptions, contracts
and closures. Cos relies on the programmable capabilities of the C programming
language to extend its syntax and to implement the aforementioned concepts as
first-class objects.
The SPaCIFY project, which aims at bringing advances in MDE to the satellite
flight software industry, advocates a top-down approach built on a
domain-specific modeling language named Synoptic. In line with previous
approaches to real-time modeling such as Statecharts and Simulink, Synoptic
features hierarchical decomposition of application and control modules in
synchronous block diagrams and state machines. Its semantics is described in
the polychronous model of computation, which is that of the synchronous
language Signal.
NASA's new age of space exploration augurs great promise for deep space
exploration missions whereby spacecraft should be independent, autonomous, and
smart. Nowadays NASA increasingly relies on the concepts of autonomic
computing, exploiting these to increase the survivability of remote missions,
particularly when human tending is not feasible. Autonomic computing has been
recognized as a promising approach to the development of self-managing
spacecraft systems that employ onboard intelligence and rely less on control
links.
The Second International Workshop on Programming Language Approaches to
Concurrency and Communication-cEntric Software (PLACES) was co-located with
ETAPS 2009 in the city of York, England. The workshop took place on Sunday 22nd
March 2009. The workshop focused on the challenges raised by the changing
landscape of computer software. Traditionally, most software was written for a
single computer with one CPU.
The CLP scheme uses Horn clauses and SLD resolution to generate multiple
constraint satisfaction problems (CSPs). The possible CSPs include rational
trees (giving Prolog) and numerical algorithms for solving linear equations and
linear programs (giving CLP(R)). In this paper we develop a form of CSP for
interval constraints. In this way one obtains a logic semantics for the
efficient floating-point hardware that is available on most computers.
Parser generators generate translators from language specifications. In many
cases, such specifications contain semantic actions written in the same
language as the generated code. Since these actions are subject to little
static checking, they are usually a source of errors which are discovered only
when generated code is compiled.
We present a unified framework for the declarative analysis of structured
communications. By relying on a (timed) concurrent constraint programming
language, we show that in addition to the usual operational techniques from
process calculi, the analysis of structured communications can elegantly
exploit logic-based reasoning techniques. We introduce a declarative
interpretation of the language for structured communications proposed by Honda,
Vasconcelos, and Kubo.
This paper investigates session programming and typing of benchmark examples
to compare productivity, safety and performance with other communications
programming languages. Parallel algorithms are used to examine the above
aspects due to their extensive use of message passing for interaction, and
their increasing prominence in algorithmic research with the rising
availability of hardware resources such as multicore machines and clusters.
We previously developed a polymorphic type system and a type checker for a
multithreaded lock-based polymorphic typed assembly language (MIL) that ensures
that well-typed programs do not encounter race conditions. This paper extends
such work by taking into consideration deadlocks. The extended type system
verifies that locks are acquired in the proper order. Towards this end we
require a language with annotations that specify the locking order.
Transactional events (TE) are an extension of Concurrent ML (CML), a
programming model for synchronous message-passing. Prior work has focused on
TE's formal semantics and its implementation. This paper considers programming
idioms, particularly those that vary unexpectedly from the corresponding CML
idioms. First, we solve a subtle problem with client-server protocols in TE.
Second, we argue that CML's wrap and guard primitives do not translate well to
TE, and we suggest useful workarounds. Finally, we discuss how to rewrite CML
protocols that use abort actions.
Sensor networks are rather challenging to deploy, program, and debug. Current
programming languages for these platforms suffer from a significant semantic
gap between their specifications and underlying implementations. This fact
precludes the development of (type-)safe applications, which would potentially
simplify the task of programming and debugging deployed networks. In this paper
we define a core calculus for programming sensor networks and propose to use it
as an assembly language for developing type-safe, high-level programming
languages.
A challenge for programming language research is to design and implement
multi-threaded low-level languages providing static guarantees for memory
safety and freedom from data races. Towards this goal, we present a concurrent
language employing safe region-based memory management and hierarchical locking
of regions. Both regions and locks are treated uniformly, and the language
supports ownership transfer, early deallocation of regions and early release of
locks in a safe manner.
In this paper, we present a method and a tool for deriving a skeleton of an
ontology from XML schema files. We first recall what an is ontology and its
relationships with XML schemas. Next, we focus on ontology building methodology
and associated tool requirements. Then, we introduce Janus, a tool for building
an ontology from various XML schemas in a given domain. We summarize the main
features of Janus and illustrate its functionalities through a simple example.
Finally, we compare our approach to other existing ontology building tools.
This volume contains selected papers presented at the 9th International
Workshop on Reduction Strategies in Rewriting and Programming, WRS2009, which
was held in Brasilia on the 28th June 2009, associated to RTA 2009 (the 20th
International Conference on Rewriting Techniques and Applications) at RDP, the
Federated Conference on Rewriting, Deduction and Programming. Reduction
strategies define which (sub)expression(s) should be selected for evaluation
and which rule(s) should be applied.
PRholog is an experimental extension of logic programming with strategic
conditional transformation rules, combining Prolog with Rholog calculus. The
rules perform nondeterministic transformations on hedges. Queries may have
several results that can be explored on backtracking. Strategies provide a
control on rule applications in a declarative way. With strategy combinators,
the user can construct more complex strategies from simpler ones. Matching with
four different kinds of variables provides a flexible mechanism of selecting
(sub)terms during execution.
In this report, we show how to use the Simple Fluent Calculus (SFC) to
specify generic tracers, i.e. tracers which produce a generic trace. A generic
trace is a trace which can be produced by different implementations of a
software component and used independently from the traced component. This
approach is used to define a method for extending a java based CHRor platform
called CHROME (Constraint Handling Rule Online Model-driven Engine) with an
extensible generic tracer.
LXG is a simple Pascal-like language. It is a functional programming language
developed for studying compiler design and implementation. The language
supports procedure and variable declarations, but no classes. This paper
reports the design and implementation of an LXG compiler. Test results are
presented as well.
In this paper we introduced an algebraic semantics for process algebra in
form of abstract data types. For that purpose, we developed a particular type
of algebra, the seed algebra, which describes exactly the behavior of a process
within a labeled transition system. We have shown the possibility of
characterizing the bisimulation of two processes with the isomorphism of their
corresponding seed algebras. We pointed out that the traditional concept of
isomorphism of algebra does not apply here, because there is even no one-one
correspondence between the elements of two seed algebras.
Topological collections allow to consider uniformly many data structures in
programming languages and are handled by functions defined by pattern matching
called transformations. We present two type systems for languages with
topological collections and transformations. The first one is a strong type
system \`a la Hindley/Milner which can be entirely typed at compile time. The
second one is a mixed static and dynamic type system allowing to handle
heterogeneous collections, that is collections which contain values with
different types.
Pattern-matching programming is an example of a rule-based programming style
developed in functional languages. This programming style is intensively used
in dialects of ML but is restricted to algebraic data-types. This restriction
limits the field of application. However, as shown by Giavitto and Michel at
RULE'02, case-based function definitions can be extended to more general data
structures called topological collections. We show in this paper that this
extension retains the benefits of the typed discipline of the functional
languages.
Our goal is to study the feasibility of porting termination analysis
techniques developed for one programming paradigm to another paradigm. In this
paper, we show how to adapt termination analysis techniques based on polynomial
interpretations - very well known in the context of term rewrite systems (TRSs)
- to obtain new (non-transformational) ter- mination analysis techniques for
definite logic programs (LPs). This leads to an approach that can be seen as a
direct generalization of the traditional techniques in termination analysis of
LPs, where linear norms and level mappings are used.
Pure Lucid programs are concurrent with very fine granularity. Sequential
Threads (STs) are functions introduced to enlarge the grain size; they are
passed from server to workers by Communication Procedures (CPs) in the General
Intensional Programming System (GIPSY). A JLucid program combines Java code for
the STs with Lucid code for parallel control. Thus first, in this thesis, we
describe the way in which the new JLucid compiler generates STs and CPs. JLucid
also introduces array support.
Step-indexed semantic interpretations of types were proposed as an
alternative to purely syntactic proofs of type safety using subject reduction.
The types are interpreted as sets of values indexed by the number of
computation steps for which these values are guaranteed to behave like proper
elements of the type. Building on work by Ahmed, Appel and others, we introduce
a step-indexed semantics for the imperative object calculus of Abadi and
Cardelli.
A unit test is a method for verifying the accuracy and the proper functioning
of a portion of a program. This work consists to study the relation and the
approaches to test Object-Oriented Programming (OOP) programs and to propose a
metamodel that enables the programmer to write the tests while writing the
source code to be tested by exploiting the key features of OOP programming
languages such as inheritance, polymorphism, etc.
The JSC language is a superset of JavaScript designed to ease the development
of large web applications. This language extends JavaScripts own object system
by isolating code in a class declaration, simplifying multiple inheritance and
using method implementation agreements.
ActorScript is a general purpose programming language for implementing
massive local and nonlocal concurrency. It is differentiated from other
concurrent languages by the following: * Identifiers (names) in the language
are referentially transparent, i.e., in a given scope an identifier always
refers to the same thing. * Everything in the language is accomplished using
message passing including the very definition of ActorScript itself. * Binary
XML and JSON are fundamental, being used for structuring both data and
messages.
We (re)define session types as projections of process behaviors with respect
to the communication channels they use. In this setting, we give session types
a semantics based on fair testing. The outcome is a unified theory of
behavioral types that shares common aspects with conversation types and that
encompass features of both dyadic and multi-party session types.
This thesis concerns the implementation of Lambda Prolog, a higher-order
logic programming language that supports the lambda-tree syntax approach to
representing and manipulating formal syntactic objects. Lambda Prolog achieves
its functionality by extending a Prolog-like language by using typed lambda
terms as data structures that it then manipulates via higher-order unification
and some new program-level abstraction mechanisms. These additional features
raise new implementation questions that must be adequately addressed for Lambda
Prolog to be an effective programming tool.
The most successful unfolding rules used nowadays in the partial evaluation
of logic programs are based on well quasi orders (wqo) applied over (covering)
ancestors, i.e., a subsequence of the atoms selected during a derivation.
Ancestor (sub)sequences are used to increase the specialization power of
unfolding while still guaranteeing termination and also to reduce the number of
atoms for which the wqo has to be checked. Unfortunately, maintaining the
structure of the ancestor relation during unfolding introduces significant
overhead.
Coding standards and good practices are important for all software projects,
whatever programming languages they employ. Arguably, Prolog programming can
benefit from a disciplined approach more than programming in other languages.
Despite this, no widely accepted standards and practices seem to have emerged
up to now. The present paper aims at being a first step towards filling this
gap.
Interaction with services provided by an execution environment forms part of
the behaviours exhibited by instruction sequences under execution. Mechanisms
related to the kind of interaction in question have been proposed in the
setting of thread algebra. Like thread, service is an abstract behavioural
concept. The concept of a functional unit is similar to the concept of a
service, but more concrete. A state space is inherent in the concept of a
functional unit, whereas it is not inherent in the concept of a service.
A great variety of static analyses that compute safety properties of
single-thread programs have now been developed. This paper presents a
systematic method to extend a class of such static analyses, so that they
handle programs with multiple POSIX-style threads. Starting from a pragmatic
operational semantics, we build a denotational semantics that expresses
reasoning a la assume-guarantee. The final algorithm is then derived by
abstract interpretation. It analyses each thread in turn, propagating
interferences between threads, in addition to other semantic information.
We propose a method for encoding iterators (and recursion operators in
general) using interaction nets (INs). There are two main applications for
this: the method can be used to obtain a visual nota- tion for functional
programs; and it can be used to extend the existing translations of the
lambda-calculus into INs to languages with recursive types.
Software products evolve over time. Sometimes they evolve by adding new
features, and sometimes by either fixing bugs or replacing outdated
implementations with new ones. When software engineers fail to anticipate such
evolution during development, they will eventually be forced to re-architect or
re-build from scratch. Therefore, it has been common practice to prepare for
changes so that software products are extensible over their lifetimes.
Matrix languages, including MATLAB and Octave, are established standards for
applications in science and engineering. They provide interactive programming
environments that are easy to use due to their script languages with matrix
data types. Current implementations of matrix languages do not fully utilize
high-performance, special-purpose chip architectures such as the IBM PowerXCell
processor (Cell), which is currently used in the fastest computer in the world.
We present a new framework that extends Octave to harvest the computational
power of the Cell.
We propose a method for automatically generating abstract transformers for
static analysis by abstract interpretation. The method focuses on linear
constraints on programs operating on rational, real or floating-point variables
and containing linear assignments and tests. In addition to loop-free code, the
same method also applies for obtaining least fixed points as functions of the
precondition, which permits the analysis of loops and recursive functions. Our
algorithms are based on new quantifier elimination and symbolic manipulation
techniques.
We define focus-method interfaces and some connections between such
interfaces and instruction sequences, giving rise to instruction sequence
components. We provide a flexible and practical notation for interfaces using
an abstract datatype specification comparable to that of basic process algebra
with deadlock. The structures thus defined are called progression rings. We
also define thread and service components. Two types of composition of
instruction sequences or threads and services (called `use' and `apply') are
lifted to the level of components.
Game semantics has been used with considerable success in formulating fully
abstract semantics for languages with higher-order procedures and a wide range
of computational effects. Recently, nominal games have been proposed for
modelling functional languages with names. These are ordinary, stateful games
cast in the theory of nominal sets developed by Pitts and Gabbay. Here we take
nominal games one step further, by developing a fully abstract semantics for a
language with nominal general references.
Instruction sequences with direct and indirect jump instructions are as
expressive as instruction sequences with direct jump instructions only. We show
that, in the case where the number of instructions is not bounded, there exist
instruction sequences of the former kind from which elimination of indirect
jump instructions is possible without a super-linear increase of their maximal
internal delay on execution only at the cost of a super-linear increase of
their length.
We propose a methodology for the automatic verification of safety properties
of controllers based on dynamical systems, such as those typically used in
avionics. In particular, our focus is on proving stability properties of
software implementing linear and some non-linear controllers. We develop an
abstract interpretation framework that follows closely the Lyapunov methods
used in proofs at the model level and describe the corresponding abstract
domains, which for linear systems consist of ellipsoidal constraints.
This article introduces Object-Oriented Intensional Programming (OO-IP), a
new hybrid language between Object-Oriented and Intensional Programming
Languages in the sense of the latest evolutions of Lucid.
The NETCONF con?guration protocol of the IETF Network Work- ing Group
provides mechanisms to manipulate the con?guration of network devices. YANG is
the language currently under consideration within the IETF to specify the data
models to be used in NETCONF . This report describes the design and development
of a syntax and semantics parser for YANG in java.