128,646 research outputs found
Practical Datatype Specializations with Phantom Types and Recursion Schemes
Datatype specialization is a form of subtyping that captures program
invariants on data structures that are expressed using the convenient and
intuitive datatype notation. Of particular interest are structural invariants
such as well-formedness. We investigate the use of phantom types for describing
datatype specializations. We show that it is possible to express
statically-checked specializations within the type system of Standard ML. We
also show that this can be done in a way that does not lose useful programming
facilities such as pattern matching in case expressions.Comment: 25 pages. Appeared in the Proc. of the 2005 ACM SIGPLAN Workshop on
M
An adaptive stigmergy-based system for evaluating technological indicator dynamics in the context of smart specialization
Regional innovation is more and more considered an important enabler of
welfare. It is no coincidence that the European Commission has started looking
at regional peculiarities and dynamics, in order to focus Research and
Innovation Strategies for Smart Specialization towards effective investment
policies. In this context, this work aims to support policy makers in the
analysis of innovation-relevant trends. We exploit a European database of the
regional patent application to determine the dynamics of a set of technological
innovation indicators. For this purpose, we design and develop a software
system for assessing unfolding trends in such indicators. In contrast with
conventional knowledge-based design, our approach is biologically-inspired and
based on self-organization of information. This means that a functional
structure, called track, appears and stays spontaneous at runtime when local
dynamism in data occurs. A further prototyping of tracks allows a better
distinction of the critical phenomena during unfolding events, with a better
assessment of the progressing levels. The proposed mechanism works if
structural parameters are correctly tuned for the given historical context.
Determining such correct parameters is not a simple task since different
indicators may have different dynamics. For this purpose, we adopt an
adaptation mechanism based on differential evolution. The study includes the
problem statement and its characterization in the literature, as well as the
proposed solving approach, experimental setting and results.Comment: mail: [email protected]
Finite Countermodel Based Verification for Program Transformation (A Case Study)
Both automatic program verification and program transformation are based on
program analysis. In the past decade a number of approaches using various
automatic general-purpose program transformation techniques (partial deduction,
specialization, supercompilation) for verification of unreachability properties
of computing systems were introduced and demonstrated. On the other hand, the
semantics based unfold-fold program transformation methods pose themselves
diverse kinds of reachability tasks and try to solve them, aiming at improving
the semantics tree of the program being transformed. That means some
general-purpose verification methods may be used for strengthening program
transformation techniques. This paper considers the question how finite
countermodels for safety verification method might be used in Turchin's
supercompilation method. We extract a number of supercompilation sub-algorithms
trying to solve reachability problems and demonstrate use of an external
countermodel finder for solving some of the problems.Comment: In Proceedings VPT 2015, arXiv:1512.0221
Framework for Product Lifecycle Management integration in Small and Medium Enterprises networks
In order to improve the performance of extended enterprises, Small and Medium Enterprises (SMEs) must be integrated into the extended networks. This integration must be carried out on several levels which are mastered by the Product Lifecycle Management (PLM). But, PLM is underdeveloped in SMEs mainly because of the difficulties in implementing information systems. This paper aims to propose a modeling framework to facilitate the implementation of PLM systems in SMEs. Our approach proposes a generic model for the creation of processes and data models. These models are explained, based on the scope and framework of the modeling, in order to highlight the improvements provided
Fast and Lean Immutable Multi-Maps on the JVM based on Heterogeneous Hash-Array Mapped Tries
An immutable multi-map is a many-to-many thread-friendly map data structure
with expected fast insert and lookup operations. This data structure is used
for applications processing graphs or many-to-many relations as applied in
static analysis of object-oriented systems. When processing such big data sets
the memory overhead of the data structure encoding itself is a memory usage
bottleneck. Motivated by reuse and type-safety, libraries for Java, Scala and
Clojure typically implement immutable multi-maps by nesting sets as the values
with the keys of a trie map. Like this, based on our measurements the expected
byte overhead for a sparse multi-map per stored entry adds up to around 65B,
which renders it unfeasible to compute with effectively on the JVM.
In this paper we propose a general framework for Hash-Array Mapped Tries on
the JVM which can store type-heterogeneous keys and values: a Heterogeneous
Hash-Array Mapped Trie (HHAMT). Among other applications, this allows for a
highly efficient multi-map encoding by (a) not reserving space for empty value
sets and (b) inlining the values of singleton sets while maintaining a (c)
type-safe API.
We detail the necessary encoding and optimizations to mitigate the overhead
of storing and retrieving heterogeneous data in a hash-trie. Furthermore, we
evaluate HHAMT specifically for the application to multi-maps, comparing them
to state-of-the-art encodings of multi-maps in Java, Scala and Clojure. We
isolate key differences using microbenchmarks and validate the resulting
conclusions on a real world case in static analysis. The new encoding brings
the per key-value storage overhead down to 30B: a 2x improvement. With
additional inlining of primitive values it reaches a 4x improvement
- …