Professional Documents
Culture Documents
Formal Aspects of Component Software 15th International Conference FACS 2018 Pohang South Korea October 10 12 2018 Proceedings Kyungmin Bae
Formal Aspects of Component Software 15th International Conference FACS 2018 Pohang South Korea October 10 12 2018 Proceedings Kyungmin Bae
https://textbookfull.com/product/theoretical-aspects-of-
computing-ictac-2018-15th-international-colloquium-stellenbosch-
south-africa-october-16-19-2018-proceedings-bernd-fischer/
https://textbookfull.com/product/provable-security-12th-
international-conference-provsec-2018-jeju-south-korea-
october-25-28-2018-proceedings-joonsang-baek/
https://textbookfull.com/product/formal-aspects-of-component-
software-10th-international-symposium-facs-2013-nanchang-china-
october-27-29-2013-revised-selected-papers-1st-edition-jose-luiz-
fiadeiro/
https://textbookfull.com/product/smart-blockchain-first-
international-conference-smartblock-2018-tokyo-japan-
december-10-12-2018-proceedings-meikang-qiu/
https://textbookfull.com/product/software-business-9th-
international-conference-icsob-2018-tallinn-estonia-
june-11-12-2018-proceedings-krzysztof-wnuk/
https://textbookfull.com/product/smart-computing-and-
communication-third-international-conference-smartcom-2018-tokyo-
japan-december-10-12-2018-proceedings-meikang-qiu/
https://textbookfull.com/product/modeling-decisions-for-
artificial-intelligence-15th-international-conference-
mdai-2018-mallorca-spain-october-15-18-2018-proceedings-vicenc-
Kyungmin Bae
Peter Csaba Ölveczky (Eds.)
LNCS 11222
Formal Aspects
of Component Software
15th International Conference, FACS 2018
Pohang, South Korea, October 10–12, 2018
Proceedings
123
Lecture Notes in Computer Science 11222
Commenced Publication in 1973
Founding and Former Series Editors:
Gerhard Goos, Juris Hartmanis, and Jan van Leeuwen
Editorial Board
David Hutchison
Lancaster University, Lancaster, UK
Takeo Kanade
Carnegie Mellon University, Pittsburgh, PA, USA
Josef Kittler
University of Surrey, Guildford, UK
Jon M. Kleinberg
Cornell University, Ithaca, NY, USA
Friedemann Mattern
ETH Zurich, Zurich, Switzerland
John C. Mitchell
Stanford University, Stanford, CA, USA
Moni Naor
Weizmann Institute of Science, Rehovot, Israel
C. Pandu Rangan
Indian Institute of Technology Madras, Chennai, India
Bernhard Steffen
TU Dortmund University, Dortmund, Germany
Demetri Terzopoulos
University of California, Los Angeles, CA, USA
Doug Tygar
University of California, Berkeley, CA, USA
Gerhard Weikum
Max Planck Institute for Informatics, Saarbrücken, Germany
More information about this series at http://www.springer.com/series/7408
Kyungmin Bae Peter Csaba Ölveczky (Eds.)
•
Formal Aspects
of Component Software
15th International Conference, FACS 2018
Pohang, South Korea, October 10–12, 2018
Proceedings
123
Editors
Kyungmin Bae Peter Csaba Ölveczky
Pohang University of Science University of Oslo
and Technology Oslo, Norway
Pohang
South Korea
This Springer imprint is published by the registered company Springer Nature Switzerland AG
The registered company address is: Gewerbestrasse 11, 6330 Cham, Switzerland
Preface
This volume contains the proceedings of the 15th International Conference on Formal
Aspects of Component Software (FACS 2018), held at Pohang University of Science
and Technology (POSTECH), Korea, during October 10–12, 2018.
Component-based software development proposes sound engineering principles and
techniques to cope with the complexity of present-day software systems. However,
many challenging conceptual and technological issues remain in component-based
software development theory and practice. Furthermore, the advent of service-oriented
and cloud computing, cyber-physical systems, and the Internet of Things has brought to
the fore new dimensions, such as quality of service and robustness to withstand faults,
which require revisiting established concepts and developing new ones.
The FACS series of events addresses the application of formal methods in all aspects
of software components and services. Formal methods have provided foundations for
component-based software through research on mathematical models for components,
composition and adaptation, and rigorous approaches to verification, deployment,
testing, and certification.
FACS 2018 received 32 regular and tool paper submissions. All but four submis-
sions were reviewed by at least three reviewers. Based on the reviews and extensive
discussions, the program committee decided to accept 12 regular papers and two tool
papers. This volume contains those 14 papers, an invited paper by Edward A. Lee, and
an abstract of an invited talk by Grigore Rosu.
Many colleagues and friends contributed to FACS 2018. We thank Edward A. Lee
and Grigore Rosu for accepting our invitations to give invited talks, and the authors
who submitted their work to FACS 2018. We are grateful to the members of the
program committee for providing timely and insightful reviews as well as for their
involvement in the post-reviewing discussions. We also thank the members of the
FACS steering committee for their useful suggestions. Finally, we thank Saron Kim
and Moonhyeon Jung for their assistance in organizing FACS 2018, and acknowledge
financial support from the Brain Korea 21 Plus program and the POSTECH Basic
Science Research Institute.
Program Chairs
Kyungmin Bae Pohang University of Science and Technology, Korea
Peter Csaba Ölveczky University of Oslo, Norway
Steering Committee
Farhad Arbab CWI and Leiden University, The Netherlands
Luís Barbosa INESC TEC and University of Minho, Portugal
José Luiz Fiadeiro Royal Holloway, University of London, UK
Ramtin Khosravi University of Tehran, Iran
Olga Kouchnarenko FEMTO-ST and University of Franche-Comté, France
Zhiming Liu Southwest University, China
Markus Lumpe Swinburne University of Technology, Australia
Eric Madelaine (Chair) Inria and University of Côte d’Azur, Sophia Antipolis,
France
Peter Csaba Ölveczky University of Oslo, Norway
José Proença University of Minho, Portugal
Program Committee
Farhad Arbab CWI and Leiden University, The Netherlands
Cyrille Artho KTH Royal Institute of Technology, Sweden
Kyungmin Bae Pohang University of Science and Technology, Korea
Luís Barbosa INESC TEC and University of Minho, Portugal
Simon Bliudze Inria Lille, France
Roberto Bruni University of Pisa, Italy
Zhenbang Chen National University of Defense Technology, China
Yunja Choi Kyungpook National University, Korea
José Luiz Fiadeiro Royal Holloway, University of London, UK
Xudong He Florida International University, USA
Sung-Shik Jongmans The Open University, The Netherlands
Yunho Kim KAIST, Korea
Olga Kouchnarenko FEMTO-ST and University of Franche-Comté, France
Ivan Lanese University of Bologna/Inria, Italy
Axel Legay Inria Rennes, France
Shaoying Liu Hosei University, Japan
Zhiming Liu Southwest University, China
Markus Lumpe Swinburne University of Technology, Australia
Eric Madelaine Inria and University of Côte d’Azur, Sophia Antipolis,
France
VIII Organization
Additional Reviewers
Grigore Rosu1,2
1
University of Illinois at Urbana-Champaign, USA
grosu@illinois.edu
http://fsl.cs.illinois.edu/grosu
2
Runtime Verification, Inc., USA
grigore.rosu@runtimeverification.com
Abstract. Many of the recent cryptocurrency bugs and exploits are due to flaws
or weaknesses of the underlying blockchain programming languages or virtual
machines. The usual post-mortem approach to formal language semantics and
verification, where the language is firstly implemented and used in production
for many years before a need for formal semantics and verification tools natu-
rally arises, simply does not work anymore. New blockchain languages or
virtual machines are proposed at an alarming rate, followed by new versions
of them every few weeks, together with programs (or smart contracts) in these
languages that are responsible for financial transactions of potentially significant
value. Formal analysis and verification tools are therefore needed immediately
for such languages and virtual machines. We present recent academic and
commercial results in developing blockchain languages and virtual machines
that come directly equipped with formal analysis and verification tools. The
main idea is to generate all these automatically, correct-by-construction from a
formal specification. We demonstrate the feasibility of the proposed approach by
applying it to two blockchains, Ethereum and Cardano.
Links
Supported in part by NSF grant CCF-1421575, NSF grant CNS-1619275, and an IOHK
(http://iohk.io) gift.
X G. Rosu
Invited Paper
Regular Papers
Using Coloured Petri Nets for Resource Analysis of Active Objects . . . . . . . 156
Anastasia Gkolfi, Einar Broch Johnsen, Lars Michael Kristensen,
and Ingrid Chieh Yu
Tool Papers
Abstract. Models are central to engineering. They are used for anal-
ysis, synthesis, and communication between humans. A given artifact
or process may have multiple models with different purposes, modeling
different aspects, or modeling at varying levels of abstraction. In this
paper, we give a general overview of how models are used, with the goal
of making the concepts clearer for different communities. We focus on
the domain of track-based flow management of automated systems, and
identify two different modeling styles, Eulerian and Lagrangian. Eule-
rian models focus on regions of space, whereas Lagrangian models focus
on entities moving through space. We discuss how the features of the
system, like having centralized or decentralized control or the ability
to install fixed infrastructure, influence the choice between these styles.
Although the choice between modeling styles is rarely made consciously,
it affects modeling efficiency, and one style may be far better suited
for certain modeling problems than another. For problems with a more
global nature concerning the physical space, an Eulerian model is likely
to be a better match. For problems that concern the moving objects
specifically, where the identity of the individual objects is important, a
Lagrangian view is the one to choose. In many cases, combining the two
styles is the most effective approach. We illustrate the two styles using
an example of an automated quarry.
1 Introduction
We are now in the era of cyber-physical systems, the Internet of Things, and
smart applications. For building such systems we need a team of experts with
various domains of expertise, including computer science, software engineering,
computer networking, control and communication engineering, robotics, and
artificial intelligence. Although all these experts have the experience of work-
ing with models, they use different terminologies and very different modeling
languages. Models are used differently in different contexts, and for people with
varying backgrounds, this may create confusion. With the increasing need for
people with different backgrounds to work together, communication is becoming
a crucial obstacle. To tackle this obstacle, in this paper we provide an over-
all view of modeling in the contexts of science and engineering, with different
c Springer Nature Switzerland AG 2018
K. Bae and P. C. Ölveczky (Eds.): FACS 2018, LNCS 11222, pp. 3–31, 2018.
https://doi.org/10.1007/978-3-030-02146-7_1
4 E. A. Lee and M. Sirjani
For example, in a network on chip (NoC), we have to deal with a faulty router,
and in air traffic control systems (ATC), we have to avoid storms. But perhaps
the most interesting insight derived from our experience is that two very dif-
ferent and complementary modeling styles can be used for flow management
problems. These two styles are called Eulerian and Lagrangian, after a simi-
lar dichotomy of modeling styles in fluid mechanics. Eulerian models focus on
regions of space, whereas Lagrangian models focus on entities moving through
space. When building actor-based models, an actor represents a region of space
in an Eulerian model and a moving object in a Lagrangian model. Although the
choice between modeling styles is rarely made consciously, it affects modeling
efficiency, and one style may be far better suited for certain modeling problems
than another.
2 Modeling
A model is any description of a system that is not the thing-in-itself (das ding
an sich in Kantian philosophy). By this definition, every human conception of
a system external to herself is a model. In this paper, we focus on modeling
a system that includes human-made artifacts and processes, not just naturally
occurring systems. In other words, we are focused on engineering, not natural
science.
In the automated quarry, the haulers and their controllers, for example, are
human-made artifacts. But these artifacts are subject to natural laws, and there-
fore have properties and behaviors that are not human-made. Hence, our models
will need to reflect both physical realities and design intent.
A naive approach to modeling such a system is to build a single ever-more-
detailed model of its physicality. Such models quickly become unwieldy and
6 E. A. Lee and M. Sirjani
For scientific models, validation is checking how much the model reflects the
existing system being modeled, or, equivalently, how faithful the model is. Here,
scientists rely on the scientific method to approximately validate models. Specif-
ically, they design experiments that have the potential to expose mismatches
between the behavior of the model and that of the thing-in-itself. That is, the
experiment has the potential to falsify the model. Failure to falsify a model is
the best available validation of a scientific model. On the other hand, for verifi-
cation, you need two models to compare. For verification of both scientific and
engineering models, you assume that the specification (which is as a reference
model) is correct (valid) and verify that the other models that you build based
on that are refinements.
Note that no scientific model is perfectly faithful to any physical system
unless it is the physical system itself. Hence, it is not necessarily a mistake to
fail to reflect behaviors of the system being modeled. All scientific models do
that, in that some behaviors are ignored or abstracted away. It is a mistake to
fail to reflect behaviors of interest, behaviors that the model was intended to
explore. A scientific model can therefore be viewed as projection of a system
onto a subspace of behaviors of interest.
For example in our automated Quarry, the customer has a safety and progress
requirement that if the hauler faces an unpredicted obstacle, it has to avoid the
obstacle (safety), but the system should not completely shut down (liveness).
This requirement is then formulated mathematically, for example as a set of
temporal logic formulas. The formulas must be written in a concrete way, for
example in terms of the data received by the hauler from its sensors and cameras
and commands issued to its actuators. For example, a temporal logic formula
may specify that the machine halts if an obstacle is sensed, and that this halt-
ing state is temporary. Checking whether this formula is correctly capturing the
customer requirements is a validation process. The formula is now a specification
of the system. When the controller program of the hauler is being developed,
the behavior of the hauler executing this program is verified against this speci-
fication.
the intent of the program while preserving behaviors specified by the program.
If this is done correctly, the machine code will not exhibit any behaviors that are
prohibited by the program. Note that the machine code is still not an implemen-
tation. It is another model, specifying behaviors that a silicon implementation
of a processor is expected to exhibit. Since it is a model, not a thing-in-itself, the
machine code can be formally verified, proven to not exhibit behaviors prohib-
ited by the program. The thing-in-itself, of course, will always be able to exhibit
behaviors prohibited by the program, if it is immersed in salt water for example.
Compilers that can be trusted to produce correct machine code have proven
to be a spectacularly powerful engineering tool. Spurred in part by this success,
software engineers continue to try to push up the level of abstraction at which
systems are specified and develop correct-by-construction synthesis techniques
that work from those more abstract models. These efforts have met with limited
success. A commonly used alternative to correct-by-construction synthesis is to
treat a model, such as a program, as a pre-existing artifact, and to construct
an abstraction, a scientific model of the program. This model can be used for
analysis. In some cases, the abstract model can be constructed automatically,
using for example abstract interpretation [10]. We could call such a process
“correct-by-construction abstraction.”
For example, instead of synthesizing a computer program from a more
abstract specification, say in UML, we may write a program by hand and build
an abstract model of that program to analyze its behaviors. The more abstract
model is, effectively, a scientific model of an engineering model. For example,
a nondeterministic automaton could model a computer program. We can then
perform model checking [11], which formally checks that the automaton is a
refinement of a still more abstract specification model, given for example as
a set of temporal logic formulas. If the automaton is a sound abstraction of
the program (ideally, it is because it was built using correct-by-construction
abstraction), and the automaton is a refinement of the specification (checked
using model checking), then the program is a refinement of the specification.
Model checking, simulation, and building physical prototypes can all be used
as methods for analysis. Simulation, which is the execution of an executable
model, reveals one possible behavior of a model with one set of inputs. Model
checking reveals all possible behaviors of a model over a family of inputs.
Different communities may prefer one technique over others. Some prac-
titioners, for example, prefer physical prototypes over simulation, saying that
“simulation is doomed to succeed.” Rodney Brooks, for example, writing about
robotics, says “there is a vast difference (which is not appreciated by people who
have not used real robots) between simulated robots and physical robots and
their dynamics of interaction with the environment” [12].
Indeed, simulation can be misused. A simulation of a robot may be the exe-
cution of an engineering model, a specification. If the specification is valid, then
the simulation is indeed doomed to succeed. The model should not be misinter-
preted as a scientific model that reveals unknown or unexpected behaviors of
the thing-in-itself.
What Good are Models? 11
3 Actors
A component is a chunk of functionality that can be composed with other chunks
of functionality to yield a new chunk of functionality. In software engineering,
different classes of component models have evolved. In imperative languages, for
example, a component is a procedure, and a program is a sequential execution
of a top-level procedure that can call other procedures. Components are com-
posed by procedure calls, a temporary transfer of the flow of control from one
procedure to another. Object-oriented languages are organizations of impera-
tive programs with information hiding. In functional languages, a component
is a stateless function (free of side effects), and components are composed by
function composition. In actor languages, components are concurrently execut-
ing programs called “actors” that send messages to one another over streaming
channels. Actor languages have proved very effective for modeling concurrent
and distributed systems, so we focus on those here.
The term “actor” was introduced in the 1970s by Hewitt to describe the
concept of autonomous reasoning agents [14]. The term evolved through the
work of Agha and others to describe a formalized model of concurrency [15].
Agha’s actors each have an independent thread of control and communicate via
asynchronous message passing. Each actor has a single input queue on which it
receives messages, and it handles messages in order of their arrival. Rebeca [16,
17], for example, is a software framework that realizes Agha’s actors, matching
asynchronous and event-driven domains. It has proven particularly suitable for
modeling and analyzing network protocols and applications [18–20].
The term “actor” has also been used for dataflow models of computation.
Three major variants of dataflow models have emerged in the literature: Kahn
12 E. A. Lee and M. Sirjani
process networks [21], Dennis dataflow [22], and dataflow synchronous languages
[23]. In all three, as with Hewitt actors, a program is a network of intercon-
nected actors. Unlike Hewitt actors, dataflow actors have explicit input and out-
put ports, and rather than referencing a remote actor to send a message to it,
dataflow actors send messages to output ports and the network handles routing
that message to one or more destinations. Since actors do not have references to
one another, dataflow actors tend to be more modular and reusable than Hewitt
actors. The same actor can be instantiated in multiple contexts.
In Dennis dataflow, program execution is a sequence of atomic actor firings,
where each firing consumes input tokens (chunks of data) and produces output
tokens. In Kahn networks, each actor is a sequential program that reads from
input ports and writes to output ports. In the original Kahn-MacQueen variant
[24], a read from an input port will block until an input token is available and
writes to output ports are nonblocking, sending data with no constraints. Various
generalizations allow richer input-output semantics, for example to allow for
nondeterministic merging of streams, and various specializations constrain the
execution, for example to prevent unbounded buildup of unconsumed tokens
in queues. Dennis dataflow can be viewed as a special case of Kahn process
networks [25]. Dataflow synchronous languages differ from both of these in that,
semantically, all actors in a program fire simultaneously and instantaneously.
The inputs and outputs of the actors are defined by a fixed point of the function
defined by the composition of actors.
The Ptolemy II framework [26,27] generalizes actors to embrace any model
of computation (MoC) where a program is either a static or dynamic graph of
components with ports, where the components are concurrent, and where the
ports are connected through communication channels. In a Ptolemy II model, the
execution of such a graph is governed by a director, a coordinator that realizes
the specific MoC. Directors have been realized for Kahn process networks, sev-
eral flavors of dataflow, and dataflow synchronous models. In addition, directors
are available for MoCs that do not traditionally fall within the purview of actor
models, but which share essential features with actor models. These include a
discrete-event (DE) model, where communication is via time-stamped events,
a rendezvous MoC, where concurrent components communicate by rendezvous,
and a continuous-time MoC, where the communications between components
are semantically continuous-time signals. Ptolemy II DE models are similar to
many simulation frameworks such as DEVS [28] and hardware description lan-
guages such as Verilog and VHDL. Ptolemy II rendezvous models are similar to
Reo [29] and realize a semantics similar to communicating sequential processes
(CSP) [30]. The continuous-time models of Ptolemy II are similar to those in
modeling languages such as Simulink (from The MathWorks) and Modelica [31].
A key innovation in Ptolemy II is that many of these MoCs can be hierarchically
combined in the same model by leveraging an actor abstract semantics [32].
In any framework that supports composition of communicating actors, the
specific semantics of the interaction between actors, the MoC, is a meta-model,
a model of a family of models [33]. The MoC is an essential part of any modeling
What Good are Models? 13
Fig. 3. Eulerian model of a piece of the automated quarry of Fig. 1 built in Ptolemy
II.
Fig. 4. Nondeterministic state machine actor built in Ptolemy II that merges streams
with simultaneous messages nondeterministically into one stream.
Om die zelfde anansi-tori’s heb ik een man eens een pak slaag
gegeven. Luister:
Ik deed alsof ik het niet hoorde, en ging verder. Doch al weêr viel de
man mij in de rede:
„Ik kan me niet begrijpen, hoe jelui je door dien man voor den gek
kunt laten houden; weet je dan niet, dat hij u maar wat zit voor te
liegen?” 71
„Jij mag naar mijn mond kijken, maar jou mondje moet je houden,
vriend, want anansi-tori’s moet je nog gaan leeren”.
Toen sprong ik voor de tweede maal op, en gaf hem een zóó harden
mep, dat hij met zijn koffie en beschuiten op den grond tuimelde.
Voor de tweede maal sloeg ik een mal figuur, want de gasten
hadden plezier en lachten mij uit.
Ik zuchtte, gaf den man twee sigaren, en o, wonder! toen kwam hij
los en begon hij mij door tal van voorbeelden op het gevaar te
wijzen, waaraan men zich door het vertellen van anansi-tori’s
blootstelt.
Hij vertelde mij o.a. dat hij, sedert hij die klappen in het sterfhuis had
uitgedeeld, pijn aan zijn arm gekregen had en niet zoo goed meer
werken kon. [250]
„Die man moet bepaald een gevaarlijke inenting hebben gehad, want
door hem ben ik ziek geworden en sukkel ik voortdurend. Daarom,
meneer, geloof mij, waar ik ook ben, als er anansi-tori’s verteld
worden, ga ik heen, want steeds mi han de kisi anansi; 76 en, pikien
mass’ra 77 als ik U een raad mag geven, dan is het deze: hoor ze ook
niet aan, want dat zijn dingen, die den mensch kwaad kunnen doen”.
Onder het gesprek kwam onze waschvrouw binnen, die ik als nog
veel bijgelooviger dan den gouddelver had leeren kennen. Zij was ter
kerke geweest, en na ons gegroet te hebben, kwam ze bij ons zitten.
Doch niet zoodra had zij vernomen, over welk onderwerp wij het
hadden, of ze wilde opstaan en weggaan.
Mijn zuster, die ook tegenwoordig was, had schik in den angst harer
oude waschvrouw en kon niet laten te zeggen:
„Jij kent Gods weg niet, anders zou jij, zoo’n oude man, den Zondag
niet bederven met die dwaasheden”. [251]
„Je bent driftig”, zei ik, „anansi-tori’s zijn immers slechts sprookjes,
die door de Afrikanen en hunne kinderen vervaardigd zijn en die hier
al 2 à 300 jaar bestaan”.
„Hm, meneer, een Azéman is een geest, die de gedaante van een
neger kan aannemen”.
„Dat is het niet wat ik bedoel, je moet er mij eens een beschrijven”.
[252]
„Meneer, joe no moe haksi alla sanni so fini-fini en joe wanni go dipi
nanga mi”. 82
Doch toen hij zag, dat ik niet tevreden was, zei hij:
„Wel”, zei de vrouw, „de Azéman verdooft de plek met zijn lippen en
zuigt daarna het bloed uit. De tong van zoo’n Azéman is als
chloroform, meneer!”
Hij had zijn vel onder een matta-mátta 87 gelegd in de keuken. Twee
rijpe mannen hebben het opgenomen en in pekel gelegd; daarna
plaatsten zij het weêr onder de mat. Toen de Azéman terugkwam,
kon hij zijn mantel niet meer aantrekken, daar hij in de pekel
gekrompen was.
Men zeide, dat het de zwager was van den bastiaan Kofi”.
„Dat kan niet zijn”, merkte de waschvrouw op, „de léba is een soort
joroká; des nachts om twaalf uur zijn er te vinden op spaan-hoekoe.
Raakt de léba iemand aan, dan gaat diens ziekte op hem over.
Máss’ra, ’sanì de! 93 De blanken weten het heel goed, maar ze
spreken het tegen, om de menschen er niet aan te doen gelooven.
„Bij alles wat heilig is”, zoo ging zij met zachte stem voort, „zoo
verzeker ik U, dat alles wat ik nu vertellen zal, waarheid is, omdat
blanken er niet aan gelooven willen, en maar steeds volhouden, dat
het bijgeloof is.
„Welnu dan, ik heb bijgewoond, toen men winti* danste, dat een man
een gloeiend kapmes, dat een half uur in het vuur was geweest,
heeft afgelikt, totdat het ijzer geheel bekoeld was. De man kreeg niet
het minste letsel. Daarna nam de wintiman een scheermes en sneed
verschillende anderen de tong af. Van een vrouw sneed hij die
geheel af, en legde haar op een wit bord met spiritus, om haar
daarna weêr aan het stuk, dat nog in den mond was blijven zitten,
vast te lijmen. Geen mensch die zien kon, waar de tong afgesneden
was geweest!
„Mass’ra, u gelooft zeker ook niet aan wísi 100 maar het bestaat hoor!
Ze hebben moeite gedaan, om mij van kant te maken, maar mi
akrâ 101 is sterker dan het hunne”.
„A móro bétre wi kiri tàki” 102 merkte de waschvrouw op, „sribi de kíli
mi”. 103
Gran tàngi foe dem bakrà di opo dem sóema hai di men’ tàpoe 104
dacht ik, en teleurgesteld, dat ik heden geen anansi-tori’s had
mogen hooren, zocht ook ik mijn legerstede op. [258]
[Inhoud]
Kameraden, luistert!
In overoude tijden had Spin aan den Gouverneur gevraagd, of hij nog
een half dorp meer onder zijn gezag wilde hebben.
„Excellentie, indien U het maar aan mij wilt overlaten, antwoord dan ja,
dan zal ik U toonen, dat ik een half dorp voor U zal machtig worden,
mits Uwe Excellentie mij een oude uniformjas, een steek, een sabel en
twee haantjes geeft”.
Spin trok de uniformjas aan, zette den steek op, hing den sabel om en
vertrok, doch vooraf ging hij van moeder de vrouw, ’ M a A k o e b a 105,
afscheid nemen, haar op het hart drukkend, vooral aan niemand te
vertellen, waar hij [259]heen ging, uit vrees dat anderen zich met zijn
zaken zouden gaan bemoeien.
Spin nam zijn parel (pagaai), sprong in een tjoewa-tjoewa 107, zette de
twee haantjes in de boot en zong al voortpagaaiende:
Heer Spin, die onvermoeid voortpagaaide, kwam na een paar uren aan
een dorp, waar hij de gansche bevolking aan den oever vergaderd
vond, om heer Spin te begroeten en hem naar het stadhuis te
begeleiden.
„Gouverneur Spin, kom aan wal”, riep men hem van alle kanten toe,
waarop Spin antwoordde:
Dadelijk begon hij te spreken over de twee haantjes, die, zooals hij den
man, die ze van hem aannam, toevoegde, niet bij kippen, doch wel bij
ganzen willen blijven.
Nadat aan zijn wensch voldaan was en de haantjes bij de ganzen waren
gebracht, werd Spin door alle ingezetenen, voorafgegaan door den
Gouverneur, met muziek naar het stadhuis geleid, waar te zijner eere
een groot feest werd gegeven.
Des avonds werd er een bal gegeven, waaraan Spin tot laat in den
nacht deelnam.
Tegen drie uur in den morgen verwijderde heer Spin zich, trad heimelijk
het ganzenhok in, draaide de beide haantjes den nek om en keerde
daarna weder naar de balzaal terug.
Vroeg in den morgen, reeds te zes uur, maakte Spin zich tot het vertrek
gereed, daar het gunstig getij juist was ingetreden. Hij vroeg om de
haantjes en tot groote ontsteltenis van alle dorpelingen werden ze door
een der officieren dood naar boven gebracht.
Ja, sâbi diri”. 108 De omstanders waren dood verlegen, men sprak heer
Spin vertroostend aan, doctoren werden gehaald, Spin werd nat
gemaakt en eindelijk kwam hij tot bedaren.
„Mijn waarde heer Spin”, zoo sprak de Gouverneur, „wees toch niet zoo
droevig; U kunt van mij twee andere haantjes krijgen”.
Spin liet zich ten slotte overhalen en trad in zijn uniform met de twee
ganzen aan wal, zeggende:
„Odi mi granmán 109 ik heb twee ganzen, die niet bij ganzen, doch wel bij
varkens willen blijven en die bestemd zijn voor een vriend van mijn
Gouverneur”.
Een der adjudanten nam de ganzen van Spin over en bracht ze in het
varkenshok. Alweder was het feest te zijner eere. Op allerlei wijze werd
zijn komst bekend gemaakt; de grond dreunde van de schoten der
kanonnen.
En, hm!… weder verwijderde heer Spin zich in het middernachtelijk uur
uit de balzaal, sloop hij heimelijk in het varkenshok, om de beide
ganzen te dooden.
Met het aanbreken van den dag, toen Spin wilde vertrekken, vroeg hij
om de beide ganzen, die hem onmiddellijk werden gebracht; doch toen
hij zag, dat zij dood waren, begon hij nog erger dan de vorige maal te
schreeuwen en schandaal te maken.
„Wákkaman si jorokà. 110 Is het niet mijn eigen schuld wat mij overkomen
is? Was ik maar doorgegaan! Ja, sabi diri. In vredesnaam, ten gelieve
der bevolking moet mijn hoofd zonder uitstel van den romp”. [262]
Maar het dorpshoofd trad op heer Spin toe, hem verzoekende twee
andere ganzen in de plaats te willen aannemen. Hij antwoordde:
Een algemeene stilte volgde, totdat men met twee varkens voor heer
Spin kwam aandragen, die hij in zijn tjoewa tjoewa plaatste.
Hij greep zijn parel en vertrok, in zich zelf mompelend „een ezel stoot
zich geen tweemaal aan denzelfden steen”. Zoo geruimen tijd
voortparelend, kwam hij alweder aan een dorp, waar men nog meer
moeite moest doen, om Spin aan wal te krijgen. Het gelukte den
inwoners eindelijk, en met nog grooter praal werd hij ontvangen.
Heer Spin kwam met de twee varkens aandragen, die, naar hij hem, die
ze overnam, mededeelde, niet bij varkens wilden blijven, doch wel bij
koeien.
Voor het dorpsbestuur was het een dag van groote vreugde; een groot
feest werd gegeven; al weder werd des avonds gedanst, heer Spin
deed flink zijn best, doch vergat de varkens niet.
Toen de morgen aanbrak, wilde heer Spin zijn reis voortzetten en vroeg
hij om de twee varkens, doch de knecht keerde terug en deelde hem
mede, dat zij vermoord waren.
Al weder ving heer Spin een akelig geschreeuw aan, dat de omstanders
door merg en been ging; hij verwenschte zich zelf en overlaadde de
dorpelingen met verwijten. [263]
„O, neen, daar moet ik niets van hebben; een flinke koe, dat zou nog
gaan, maar anders niet”.
Aan het verzoek werd voldaan en Spin kreeg de verlangde koe en trok
in zijn tjoewa-tjoewa verder.
Omstreeks vier uur was hij weder bij een dorp aangekomen, waar juist
de lijkstatie van een kind voorbij ging. Heer Spin, die met aandacht het
droevige tooneel volgde, vergat de koe, die te water raakte en verdronk.
Wat moest hij doen? Naar een nieuwe drijfveer zoeken, om den tocht
voort te zetten.
Hij bedacht zich een oogenblik, ging aan wal, dolf het kinderlijk op, nam
het uit de kist, plaatste het vooraan in zijn tjoewa-tjoewa en parelde
verder.
Vroeg in den morgen van den anderen dag landde hij aan een groot
dorp, waar hij op hartelijke wijze ontvangen werd.
Als gewoonlijk nam heer Spin zijn intrek bij het dorpshoofd, wien hij om
stilte verzocht, zeggende, dat het kind hevige koorts had.
De vrouw van het dorpshoofd kwam dadelijk met een groote kom met
gongotè-páppa 111 voor het kind aandragen en liet Spin met de zieke
alleen.
Toen hij gereed was, bracht hij de kom terug en zeide, dat het kind
mevrouw liet bedanken. [264]
Na een uur klopte de vrouw van het hoofd weêr aan de deur en zei, op
Spin toetredend:
„O, zeker, dat moet wel, want het kind moet toch eten”.
De vrouw ging weg en bracht na eenigen tijd een bord met tája brafoe 113
voor het kind.
„Dank U, het kind slaapt op het oogenblik, maar als het wakker wordt,
zal ik het geven”.
De vrouw ging weg en Spin at zijn bekomst, doch toen hij gereed was,
begon hij hevig te gillen.
„O hemel, kijk wat mij overkomen is. De vrouw van het dorpshoofd heeft
het kind krassi taja brafoe 114 gegeven en het kind is overleden. Ik
rampzalige!” waarna heer Spin in onmacht viel.
„Slaven?”
„Geen denken aan, als je nooit voor den rechter bent geweest, dan
zullen jij en je vrouw nu voorgebracht worden en wegens moord zullen
jelui beiden de gerechte straf ondergaan”.
Spin wilde er echter eerst niets van weten, doch toen de Gouverneur
riep:
„Vraag wat U wilt, U kunt desnoods een half dorp krijgen” spitste anansi
de ooren en vroeg: