Papers by Marko van Eekelen
Proceedings of the Seventh Symposium on Trends in Functional Programming, TFP 2006, Nottingham, UK, 19-21 april 2006, 2006
In slightly less than two decades Graphical User Interfaces (GUI) have become standard in present... more In slightly less than two decades Graphical User Interfaces (GUI) have become standard in presenting the user a pleasant and intuitive interface to software applications. Two major paradigms have contributed to this success: the desktop GUI for widget based programming on a single computer, and the World Wide Web for web applications with a multitude of client computers. Applications that are created within these paradigms are constructed in entirely different ways. Desktop applications can use the vast platform ...

Proceedings of the 10th International Workshop on Java Technologies for Real-time and Embedded Systems - JTRES '12, 2012
For real-time and embedded systems limiting the consumption of time and memory resources is often... more For real-time and embedded systems limiting the consumption of time and memory resources is often an important part of the requirements. Being able to predict bounds on the consumption of these resources during the development process of the code can be of great value. Recent research results have advanced the state of the art of resource consumption analysis. In this paper we present a tool that makes it possible to apply these research results in practice for real-time systems enabling Java developers to analyse loop bounds, bounds on heap size and bounds on stack size. We describe which theoretical additions were needed in order to achieve this. We give an overview of the capabilities of the tool ResAna that is the result of this effort. The tool can not only perform generally applicable analyses, but it also contains a part of the analysis which is dedicated to the developers' (real-time) virtual machine, such that the results apply directly to the actual development environment that is used in practice.

We study real-polynomial solutions P (x) of difference equations of the formG(P (x−τ1), . . . , P... more We study real-polynomial solutions P (x) of difference equations of the formG(P (x−τ1), . . . , P (x− τs)) +G0(x)=0, where τi are real numbers, G(x1, . . . , xs) is a real polynomial of a total degree D ≥ 2, and G0(x) is a polynomial in x. We consider the following problem: given τi, G and G0, find an upper bound on the degree d of a real-polynomial solution P (x), if exists. We reduce this problem to finding a univariate polynomial for which d is a root. We formulate a sufficient condition under which such polynomial exists. Using this condition, we can give an effective bound on d, for instance, for all difference equations G ( P (x− 1), P (x− 2), P (x− 3) ) + G0(x) = 0 with quadratic G, and all difference equations G ( P (x), P (x− τ) ) +G0(x) = 0 with G of an arbitrary degree. In the constructions we use Newton-Girard identities between elementary and power-sum symmetric polynomials.

Developing correct software remains one of the most important subjects in computer science. Bugs ... more Developing correct software remains one of the most important subjects in computer science. Bugs can be costly and annoying. One of the most secure ways to eliminate errors in computer programs is by proving them to be correct in a mathematical context. Sparkle is a proof assistant that helps programmers with constructing mathematical proofs about algorithms written in Clean or any other functional language. Proofs on programs that use one of the most important programming techniques, called recursion, usually need proof principles called inductive and co-inductive reasoning. Support for these mathematical proof steps were limited within Sparkle. In order to support for reasoning about a larger class of programs we have extended the proof techniques in Sparkle. A method that supports mutually reasoning on mutually recursive types has been added. A new method has been devised that allows for the derivation of an induction scheme from function definitions. For co-inductive reasoning, ...

ACM Transactions on Mathematical Software, 2010
On w-bit processors which are much faster at multiplying two w-bit integers than at dividing 2w-b... more On w-bit processors which are much faster at multiplying two w-bit integers than at dividing 2w-bit integers by w-bit integers, reductions of large integers by moduli M smaller than 2 w−1 are often implemented sub-optimally, leading applications to take excessive processing time. We present a modular reduction algorithm implementing division by a modulus through multiplication by a reciprocal of that modulus, a well-known method for moduli larger than 2 w−1. We show that application of this method to smaller moduli makes it possible to express certain modular sums and differences without having to compensate for word overflows. By embedding the algorithm in a loop and applying a few transformations to the loop, we obtain an algorithm for reduction of large integers by moduli up to 2 w−1. Implementations of this algorithm can run considerably faster than implementations of similar algorithms that allow for moduli up to 2 w. This is substantiated by measurements on processors with relatively fast multiplication instructions. It is notoriously hard to specify efficient mathematical algorithms on the level of abstract machine instructions in an error-free manner. In order to eliminate the chance of errors as much as possible, we have created formal correctness proofs of our algorithms, checked by a mechanized proof assistant.
Application patterns
We present a generalization of patterns as used in definitions in functional languages, called ap... more We present a generalization of patterns as used in definitions in functional languages, called application patterns. They consist of a function applied to arguments. While matchin such a pattern against an actual argument, inverse functions are used to find the binding of variables to values. Application patterns are universal in the sense that they include list, tuple, algebraic and n+k patterns.

2021 6th International Conference on Machine Learning Technologies
The harmonized system codes (HS codes) are used worldwide to categorize products in international... more The harmonized system codes (HS codes) are used worldwide to categorize products in international shipments. In its basic form HS codes come in 6 digit format, subdivided hierarchically into groups of two digits (chapters, headings and subheadings). When shipping products, it is mandatory to specify a HS code for the purpose of producing a custom declaration. Currently the process is mostly carried out by human experts who take a decision on the HS code to be assigned to a shipment depending on the item description provided by the shipper. As such the process is time consuming and prone to errors due to generic, incomplete or non-interpretable descriptions. The objective of this research is to automate the classification of HS codes in order to increase productivity to cope with extra volume in the custom classification area. For the purpose of testing the developed models, we used an anonymized data set of shipments provided by DHL. The main contribution of this paper is we applied a deep learning model which have not been tried on tackling the HS code classification problem: an attention-based neural machine translation (NMT) model with integration of hierarchical loss. The model can classify around 29% percentage of the dataset where the model's accuracy can reach 85%.
An effective proof rule for general type classes
Abstract: Type classes are a widely adopted means of abstraction for overloading in functional pr... more Abstract: Type classes are a widely adopted means of abstraction for overloading in functional programming languages. Although operating on different types, in general all instances of a class implement equivalent operations and hence have properties in common. Using formal reasoning, such a property can be proven by showing it holds for all instance definitions. This is not straightforward, however, because when instance definitions depend on each other, so will the proofs. The proof assistant ISABELLE supports single ...
Mon Notic Roy Astron Soc, 2011
Proceedings of the 12th International Conference on Formal Methods For Industrial Critical Systems, 2007
This paper reports the analysis of an industrial implementation of the session-layer of a load-ba... more This paper reports the analysis of an industrial implementation of the session-layer of a load-balancing software system. This software comprises 7.5 thousand lines of C code. It is used for distribution of the print jobs among several document processors (workers). A large part of this commercially used software system has been modeled closely and analyzed using process-algebraic techniques. Several critical issues were discovered. Since the model was close to the code, all problems that were found in the model, could be traced back to the actual code resulting in concrete suggestions for improvement of the code. All in all, the analysis significantly improved the quality of this real-life system.
Evaluation of transaction authentication methods for online banking
Future Generation Computer Systems, 2016
Proceedings of the 3rd Computer Science Education Research Conference on Computer Science Education Research
Preemption Abstraction: A Lightweight Approach to Modelling Concurrency
DSpace, Search Radboud Repository. Advanced Search. ...
Computing, or informatics as we call it in Europe, covers many areas. In this paper we will discu... more Computing, or informatics as we call it in Europe, covers many areas. In this paper we will discuss an important difference between two of these areas: software engineering and information systems. Epistemology, the study of the question: "What grounds can we justifiably have for believing the truth of assertions about reality?", is complex in informatics. This question has different answers, depending on the area we investigate. Curricula in informatics do not discuss this difference explicitly. In our opinion, they should.

Verification of Medical Guidelines
ABSTRACT This research has resulted in a general framework for the verification of medical guidel... more ABSTRACT This research has resulted in a general framework for the verification of medical guideline with respect to properties following from medical background knowledge. The framework has been applied to guidelines for the treatment of diabetes and breast cancer and has been found suitable for the verification of specified quality criteria. We were able to automate many steps of the verification process. Besides using theorem proving we have also looked at other verification tools (e.g., model checking (6,7)) for verifying criteria. Fur- thermore, various tasks have been studied in which formal models of guidelines may be helpful (e.g., critiquing the treatment plan of a physician (3)). Background Health care is in a phase of transition. The role of basic biological sciences in health care, for example, has increased considerably. Furthermore, there is a mounting pressure on health care organisations to improve the efficacy and cost-effectiveness, without sacrificing the quality of care. Information Technology is and will be a major factor in steering these developments.
Eekelen. Polynomial size analysis of first-order functions

We propose a static size analysis procedure that combines term-rewriting and type checking to aut... more We propose a static size analysis procedure that combines term-rewriting and type checking to automatically obtain output-oninput size dependencies for first-order functions. Attention is restricted to functions for which the size of the result is strictly polynomial, not necessarily monotonous, in the sizes of the arguments. To infer a size dependency, the procedure generates hypotheses for increasing degrees of polynomials. For each degree, to define a hypothetical polynomial one needs to know its values on a finite collection of points (subject to some geometrical condition). To compute the value of a size polynomial in a certain point we use a term-rewriting system generated by a standard size-annotations inference procedure. We have proven that if a function with a given input terminates at runtime on a meaningful stack and heap then the static ('compile-time') term rewriting system of the size inference also terminates, on the integers representing the sizes of the corresponding inputs. The term rewriting system may terminate at compile-time when the underlying function definition does not at run-time. This makes the theoretical applicability of the proposed approach larger than the previous state-of-the-art, where run-time testing was used to generate hypothetical polynomials. Also, the practical applicability is improved due to increased efficiency since the term rewriting system at compile time abstracts from many computations that are done at run-time.
An Exercise Assistant For Practical Networking Courses
E-cient and Formally Proven Reduction of Large Integers by Small Moduli
Uploads
Papers by Marko van Eekelen