You are on page 1of 54

Functional and Logic Programming:

14th International Symposium, FLOPS


2018, Nagoya, Japan, May 9–11, 2018,
Proceedings John P. Gallagher
Visit to download the full and correct content document:
https://textbookfull.com/product/functional-and-logic-programming-14th-international-s
ymposium-flops-2018-nagoya-japan-may-9-11-2018-proceedings-john-p-gallagher/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...

Functional and Logic Programming: 14th International


Symposium, FLOPS 2018, Nagoya, Japan, May 9–11, 2018,
Proceedings John P. Gallagher

https://textbookfull.com/product/functional-and-logic-
programming-14th-international-symposium-flops-2018-nagoya-japan-
may-9-11-2018-proceedings-john-p-gallagher/

Functional and Logic Programming 15th International


Symposium FLOPS 2020 Akita Japan September 14 16 2020
Proceedings Keisuke Nakano

https://textbookfull.com/product/functional-and-logic-
programming-15th-international-symposium-flops-2020-akita-japan-
september-14-16-2020-proceedings-keisuke-nakano/

Knowledge and Systems Sciences 19th International


Symposium KSS 2018 Tokyo Japan November 25 27 2018
Proceedings Jian Chen

https://textbookfull.com/product/knowledge-and-systems-
sciences-19th-international-symposium-kss-2018-tokyo-japan-
november-25-27-2018-proceedings-jian-chen/

Search Based Software Engineering 10th International


Symposium SSBSE 2018 Montpellier France September 8 9
2018 Proceedings Thelma Elita Colanzi

https://textbookfull.com/product/search-based-software-
engineering-10th-international-symposium-ssbse-2018-montpellier-
france-september-8-9-2018-proceedings-thelma-elita-colanzi/
Ubiquitous Networking 4th International Symposium UNet
2018 Hammamet Tunisia May 2 5 2018 Revised Selected
Papers Noureddine Boudriga

https://textbookfull.com/product/ubiquitous-networking-4th-
international-symposium-unet-2018-hammamet-tunisia-
may-2-5-2018-revised-selected-papers-noureddine-boudriga/

Information Search Integration and Personalization 12th


International Workshop ISIP 2018 Fukuoka Japan May 14
15 2018 Revised Selected Papers Dimitris Kotzinos

https://textbookfull.com/product/information-search-integration-
and-personalization-12th-international-workshop-
isip-2018-fukuoka-japan-may-14-15-2018-revised-selected-papers-
dimitris-kotzinos/

Leveraging Applications of Formal Methods Verification


and Validation Verification 8th International Symposium
ISoLA 2018 Limassol Cyprus November 5 9 2018
Proceedings Part II Tiziana Margaria
https://textbookfull.com/product/leveraging-applications-of-
formal-methods-verification-and-validation-verification-8th-
international-symposium-isola-2018-limassol-cyprus-
november-5-9-2018-proceedings-part-ii-tiziana-margaria/

Programming Languages and Systems 16th Asian Symposium


APLAS 2018 Wellington New Zealand December 2 6 2018
Proceedings Sukyoung Ryu

https://textbookfull.com/product/programming-languages-and-
systems-16th-asian-symposium-aplas-2018-wellington-new-zealand-
december-2-6-2018-proceedings-sukyoung-ryu/

Smart Blockchain First International Conference


SmartBlock 2018 Tokyo Japan December 10 12 2018
Proceedings Meikang Qiu

https://textbookfull.com/product/smart-blockchain-first-
international-conference-smartblock-2018-tokyo-japan-
december-10-12-2018-proceedings-meikang-qiu/
John P. Gallagher
Martin Sulzmann (Eds.)
LNCS 10818

Functional and
Logic Programming
14th International Symposium, FLOPS 2018
Nagoya, Japan, May 9–11, 2018
Proceedings

123
Lecture Notes in Computer Science 10818
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/7407
John P. Gallagher Martin Sulzmann (Eds.)

Functional and
Logic Programming
14th International Symposium, FLOPS 2018
Nagoya, Japan, May 9–11, 2018
Proceedings

123
Editors
John P. Gallagher Martin Sulzmann
Roskilde University Karlsruhe University of Applied Sciences
Roskilde Karlsruhe
Denmark Germany

and

IMDEA Software Institute


Madrid
Spain

ISSN 0302-9743 ISSN 1611-3349 (electronic)


Lecture Notes in Computer Science
ISBN 978-3-319-90685-0 ISBN 978-3-319-90686-7 (eBook)
https://doi.org/10.1007/978-3-319-90686-7

Library of Congress Control Number: 2018941546

LNCS Sublibrary: SL1 – Theoretical Computer Science and General Issues

© Springer International Publishing AG, part of Springer Nature 2018


This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the
material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation,
broadcasting, reproduction on microfilms or in any other physical way, and transmission or information
storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now
known or hereafter developed.
The use of general descriptive names, registered names, trademarks, service marks, etc. in this publication
does not imply, even in the absence of a specific statement, that such names are exempt from the relevant
protective laws and regulations and therefore free for general use.
The publisher, the authors and the editors are safe to assume that the advice and information in this book are
believed to be true and accurate at the date of publication. Neither the publisher nor the authors or the editors
give a warranty, express or implied, with respect to the material contained herein or for any errors or
omissions that may have been made. The publisher remains neutral with regard to jurisdictional claims in
published maps and institutional affiliations.

Printed on acid-free paper

This Springer imprint is published by the registered company Springer International Publishing AG
part of Springer Nature
The registered company address is: Gewerbestrasse 11, 6330 Cham, Switzerland
Preface

This volume contains the proceedings of the 14th International Symposium on Func-
tional and Logic Programming – FLOPS 2018 – held in Nagoya, Japan, May 9–11,
2018.
FLOPS brings together practitioners, researchers, and implementers of declarative
programming, to discuss mutually interesting results and common problems: theoret-
ical advances, their implementations in language systems and tools, and applications
of these systems in practice. The scope includes all aspects of the design, semantics,
theory, applications, implementations, and teaching of declarative programming.
FLOPS specifically aims to promote cross-fertilization between theory and practice and
among different styles of declarative programming.
The call for papers attracted 41 submissions. Each submission was reviewed by at
least three reviewers, either members of the Program Committee (PC) or external
referees. After careful and thorough discussions, the PC accepted 17 papers. The
program also includes three invited talks by William Byrd, Cédric Fournet, and
Zhenjiang Hu.
The award for best paper was made by the PC to Makoto Hamana for the paper
“Polymorphic Computation Rules: Automated Confluence, Type Inference, and
Instance Validation.”
We would like to thank all invited speakers and authors for their contributions. We
are grateful to the PC and external reviewers for their hard work and the help of the
EasyChair conference management system for making our work of organizing FLOPS
2018 much easier. We thank the general chair, Makoto Tatsuta, for his support
throughout the process and taking on many administrative responsibilities. The local
chair, Koji Nakazawa, and the local Organizing Committee did an excellent job in
setting up the conference and making sure everything ran smoothly.
Finally, we would like to thank our sponsor, Japan Society for Software Science and
Technology (JSSST), Special Interest Group on Programming and Programming
Languages (SIG-PPL), for their continuing support. We acknowledge the cooperation
of ACM SIGPLAN.

March 2018 John P. Gallagher


Martin Sulzmann
Organization

Program Committee
María Alpuente Universitat Politècnica de València, Spain
Nikolaj Bjørner Microsoft, USA
Joachim Breitner University of Pennsylvania, USA
Michael Codish Ben-Gurion University of the Negev, Israel
Carsten Fuhs Birkbeck, University of London, UK
John P. Gallagher Roskilde University, Denmark and IMDEA Software
Institute, Spain
Maria Garcia Monash University, Australia
De La Banda
Jacques Garrigue Nagoya University, Japan
Samir Genaim Universidad Complutense de Madrid, Spain
Robert Glück University of Copenhagen, Denmark
Siau Cheng Khoo National University of Singapore, Singapore
Naoki Kobayashi The University of Tokyo, Japan
Michael Leuschel University of Düsseldorf, Germany
Kenny Zhuo Ming Lu School of Information Technology, Nanyang Polytechnic,
Singapore
Jan Midtgaard University of Southern Denmark, Denmark
Jorge A. Navas SRI International, USA
Atsushi Ohori Tohoku University, Japan
Bruno C. D. S. Oliveira The University of Hong Kong, SAR China
Andreas Rossberg Google, Germany
Didier Rémy Inria, France
Chungchieh Shan Indiana University, Bloomington, USA
Martin Sulzmann Karlsruhe University of Applied Sciences, Germany
Harald Søndergaard The University of Melbourne, Australia
Kazunori Ueda Waseda University, Japan
Meng Wang University of Kent, UK

Additional Reviewers

Amadini, Roberto García-Pérez, Álvaro


Braüner, Torben Goldberg, Mayer
Chitil, Olaf Iwami, Munehiro
Escobar, Santiago Kaarsgaard, Robin
Felgenhauer, Bertram Kirkeby, Maja
Filinski, Andrzej Lo, Siaw Ling
Frank, Michael Lucas, Salvador
VIII Organization

Martin-Martin, Enrique Ta, Quang-Trung


Muslimany, Morad Tsukada, Takeshi
Rowe, Reuben Tsushima, Kanae
Saikawa, Takahumi Vazou, Niki
Sapiña, Julia Villanueva, Alicia
Schachte, Peter Wang, Yanlin
Schneider-Kamp, Peter Xie, Ningning
Shani, Guy Yang, Linus
Smallbone, Nick Yang, Ye
Stadtmueller, Kai Zhang, Haoyuan
Stuckey, Peter J. Zhao, Jinxu
Abstracts of Invited Talks
Can Programming Be Liberated
from Unidirectional Style?

Zhenjiang Hu

National Institute of Informatics, SOKENDAI, Japan


hu@nii.ac.jp

Abstract. Programs usually run unidirectional; computing output from input


and output is not changeable. It is, however, becoming more and more important
to develop programs whose output is subject to change. One typical example is
data synchronization, where we may want to have a consistent schedule infor-
mation by synchronizing calendars in different formats on various systems,
make a smart watch by synchronizing its configuration with the environment, or
achieve data interoperability by synchronization data among subsystems. This
situation imposes difficulty in using the current unidirectional programming
languages to construct such synchronization programs, because it would require
us to develop and maintain several unidirectional programs that are tightly
coupled and should be kept consistent with each other.
In this talk, I will start by briefly reviewing the current work on bidirectional
programming, a new programming paradigm for developing well-behaved
bidirectional programs in order to solve various synchronization problems. I will
then discuss the essence of bidirectional programming, talk about our recent
progress on putback-based bidirectional programming, and show a framework
for supporting systematical development of bidirectional programs. Finally,
I will highlight its potential application to lay the software foundations for
controlling, integrating, and coordinating decentralized data.
miniKanren: A Family of Languages
for Relational Programming

William E. Byrd

Department of Computer Science and Hugh Kaul Precision Medicine Institute,


University of Alabama at Birmingham, USA
webyrd@uab.edu

Abstract. miniKanren is a family of constraint logic programming languages


designed for exploring relational programming. That is, every program written
in miniKanren represents a mathematical relation, and every argument to that
program can be a fresh logic variable, a ground term, or a partially ground term
containing logic variables. The miniKanren language and implementation has
been carefully designed to support this relational style of programming—for
example, miniKanren uses a complete, biased, interleaving search by default,
and unification always uses the occurs check.
miniKanren provides constraints useful for writing interpreters, type infer-
encers, and parsers as relations. One interesting class of miniKanren programs
are interpreters written for a Turing-complete subset of Lisp, supporting lists,
symbols, mutual recursion, and higher-order functions. Since these interpreters
are written as relations, they can perform advanced tasks such as example-based
program synthesis “for free.” By taking advantage of the declarative properties
of miniKanren, and the semantics of Lisp, we have been able to speed up some
synthesis problems by 9 orders of magnitude with respect to the default
miniKanren search. We are actively exploring how to use machine learning and
neural networks to further improve synthesis search.
miniKanren has also been used to prototype language semantics, similarly to
semantics engineering tools like PLT Redex. One variant of miniKanren—a
Kanren, inspired by aProlog—supports nominal unification, and can be used to
implement capture-avoiding substitution as a relation. miniKanren’s relational
nature makes creating an executable semantics for a language easy in some
ways, frustrating in others.
The most recent use of miniKanren is as the foundation of mediKanren, a
language and system for reasoning over biomedical data sources, as part of the
National Institutes of Health’s National Center For Advancing Translational
Sciences (NCATS) Data Translator project. We have scaled miniKanren to
reason over SemMedDB, a database of 97 million biomedical facts, and are
integrating other data sources into the mediKanren system.
Finally, miniKanren is designed to be easy to understand, teach, implement,
and hack. Implementing the miniKanren core language, microKanren, has
become a standard part of learning miniKanren; as a result, there are hundreds of
implementations of miniKanren, embedded in dozens of host languages. We
have invested great effort in writing accessible books and papers on miniKanren,
giving talks at industry and academic conferences, and teaching summer schools
miniKanren: A Family of Languages for Relational Programming XIII

and tutorials. One interesting result of these efforts is that we have developed a
loose, distributed group of miniKanren researchers around the world.
In my talk I will explore these aspects of miniKanren, describe the lessons
we have learned over the past 15 years, and outline the directions for future
work.
Building Verified Cryptographic
Components Using F*

Cédric Fournet

Microsoft Research
fournet@microsoft.com

Abstract. The HTTPS ecosystem includes communications protocols such as


TLS and QUIC, the X.509 public key infrastructure, and various supporting
cryptographic algorithms and constructions. This ecosystem remains surprisingly
brittle, with practical attacks and emergency patches many times a year. To
improve their security, we are developing high-performance, standards-
compliant, formally verified implementation of these components. We aim for
our verified components to be drop-in replacements suitable for use in main-
stream web browsers, servers, and other popular tools.
In this talk, I will give an overview of our approach and our results so far.
I will present our verification toolchain, based on F*: a programming language
with dependent types, programmable monadic effects, support for both
SMT-based and interactive proofs, and extraction to C and assembly code. I will
also illustrate its application using security examples, ranging from the functional
correctness of optimized implementations of cryptographic algorithms to the
security of (fragments of) the new TLS 1.3 Internet Standard.
See https://fstar-lang.org/ for an online tutorial and research papers on F*, and
https://project-everest.github.io/ for its security applications to cryptographic
libraries, TLS, and QUIC.
Contents

Formal Verification of the Correspondence Between Call-by-Need


and Call-by-Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Masayuki Mizuno and Eijiro Sumii

Direct Encodings of NP-Complete Problems into Horn Sequents


of Multiplicative Linear Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Satoshi Matsuoka

k to SKI, Semantically: Declarative Pearl . . . . . . . . . . . . . . . . . . . . . . . . . . 33


Oleg Kiselyov

Program Extraction for Mutable Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . 51


Kazuhiko Sakaguchi

Functional Pearl: Folding Polynomials of Polynomials . . . . . . . . . . . . . . . . . 68


Chen-Mou Cheng, Ruey-Lin Hsu, and Shin-Cheng Mu

A Functional Perspective on Machine Learning via Programmable


Induction and Abduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Steven Cheung, Victor Darvariu, Dan R. Ghica, Koko Muroya,
and Reuben N. S. Rowe

Polymorphic Rewrite Rules: Confluence, Type Inference,


and Instance Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Makoto Hamana

Confluence Modulo Equivalence with Invariants in Constraint


Handling Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Daniel Gall and Thom Frühwirth

On Probabilistic Term Rewriting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132


Martin Avanzini, Ugo Dal Lago, and Akihisa Yamada

Equivalence Checking of Non-deterministic Operations . . . . . . . . . . . . . . . . 149


Sergio Antoy and Michael Hanus

Optimizing Declarative Parallel Distributed Graph Processing by Using


Constraint Solvers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Akimasa Morihata, Kento Emoto, Kiminori Matsuzaki, Zhenjiang Hu,
and Hideya Iwasaki
XVI Contents

Breaking Symmetries with Lex Implications . . . . . . . . . . . . . . . . . . . . . . . . 182


Michael Codish, Thorsten Ehlers, Graeme Gange, Avraham Itzhakov,
and Peter J. Stuckey

Model Checking Parameterized by the Semantics in Maude . . . . . . . . . . . . . 198


Adrián Riesco

Automated Amortised Resource Analysis for Term Rewrite Systems . . . . . . . 214


Georg Moser and Manuel Schneckenreither

A Common Framework Using Expected Types for Several Type


Debugging Approaches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Kanae Tsushima and Olaf Chitil

CauDEr: A Causal-Consistent Reversible Debugger for Erlang . . . . . . . . . . . 247


Ivan Lanese, Naoki Nishida, Adrián Palacios, and Germán Vidal

Cheap Remarks About Concurrent Programs . . . . . . . . . . . . . . . . . . . . . . . 264


Michael Walker and Colin Runciman

Author Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281


Formal Verification
of the Correspondence Between
Call-by-Need and Call-by-Name

Masayuki Mizuno(B) and Eijiro Sumii

Tohoku University, Sendai, Japan


mizuno@sf.ecei.tohoku.ac.jp

Abstract. We formalize the call-by-need evaluation of λ-calculus (with


no recursive bindings) and prove its correspondence with call-by-name,
using the Coq proof assistant.
It has been long argued that there is a gap between the high-level
abstraction of non-strict languages—namely, call-by-name evaluation—
and their actual call-by-need implementations. Although a number of
proofs have been given to bridge this gap, they are not necessarily suit-
able for stringent, mechanized verification because of the use of a global
heap, “graph-based” techniques, or “marked reduction”. Our technical
contributions are twofold: (1) we give a simpler proof based on two forms
of standardization, adopting de Bruijn indices for representation of (non-
recursive) variable bindings along with Ariola and Felleisen’s small-step
semantics, and (2) we devise a technique to significantly simplify the
formalization by eliminating the notion of evaluation contexts—which
have been considered essential for the call-by-need calculus—from the
definitions.

1 Introduction

Background. The call-by-name evaluation strategy has been considered the high-
level abstraction of non-strict functional languages since Abramsky [1] and Ong
[20] adopted call-by-name evaluation to weak head-normal forms as a formalism
of laziness. However, when it comes to implementations, call-by-name as it is
does not lead to efficient execution because function arguments are evaluated
every time they are needed. Therefore, most implementations adopt the call-by-
need strategy [27], that is: when a redex is found, it is saved in a freshly allocated
memory region called a thunk ; when the redex needs to be evaluated, the thunk
is updated with the value of the redex for later reuse.
There has been a large amount of research to bridge the gap between call-
by-name and call-by-need by proving their correspondence, that is,

if the call-by-need evaluation of a term results in a value, its call-by-name


evaluation results in a corresponding value, and vice versa.

c Springer International Publishing AG, part of Springer Nature 2018


J. P. Gallagher and M. Sulzmann (Eds.): FLOPS 2018, LNCS 10818, pp. 1–16, 2018.
https://doi.org/10.1007/978-3-319-90686-7_1
2 M. Mizuno and E. Sumii

For example, Launchbury [16] defined natural (or “big-step”) semantics for call-
by-need evaluation (with mutually recursive bindings) and proved its adequacy
through denotational semantics. Ariola and Felleisen [4] and Maraist et al. [17]
developed small-step call-by-need operational semantics, and proved their cor-
respondence to call-by-name. Kesner [15] gave an alternative proof, based on
normalization with non-idempotent intersection types, using Accattoli et al. [2]’s
call-by-need semantics.
Existing formalisms and our contribution. In this paper, we mechanize a formal-
ization of the call-by-need evaluation and its correspondence with call-by-name,
using the Coq proof assistant.1 To this goal, after careful design choices, we adapt
Ariola and Felleisen’s small-step semantics, and give a simpler proof based on
two forms of standardization.
In what follows, we review existing formalisms to explain our choices. Several
abstract machines (e.g. [11,14,21]) have been proposed for call-by-need evalu-
ation, but they are generally too low-level for formal verification of correspon-
dence to call-by-name. Launchbury [16] defined call-by-need natural semantics
Γ : e ⇓ Δ : z, meaning “term e under store Γ evaluates to value z together
with the modified store Δ”. Ariola and Felleisen [4] and Maraist et al. [17] inde-
pendently defined small-step reduction based on let-bindings: let x = M in N
represents term N with a thunk M pointed to by x. For example, in Ariola and
Felleisen’s semantics, the term (λx.xx)((λy.y)(λz.z)) is reduced as follows:

(λx.xx)((λy.y)(λz.z))
→ let x = (λy.y)(λz.z) in xx
— x is bound to (λy.y)(λz.z)
→ let x = (let y = λz.z in y) in xx
— x is evaluated and y is bound to λz.z
→ let x = (let y = λz.z in λz.z) in xx
— y is substituted with its value
→ let y = λz.z in let x = λz.z in xx
— let-bindings are flattened
→ ...

Note, in particular, that the underlined let-binding (of y) is moved forward


outside the other let-binding (of x). Such “reassociation” of let-bindings is also
required for reductions like (let x = . . . in λy.x)z → let x = . . . in (λy.x)z.
Variable bindings have been a central topic in the theory of formal languages.
Choice of a representation of bindings—such as de Bruijn indices [10], locally
nameless representation [13,18,19], or (parametric) higher order abstract syntax
(PHOAS) [8,22]—is particularly crucial for formal definitions and proofs on proof
assistants. We adopt de Bruijn indices along with the reduction in Ariola and
Felleisen [4] and Maraist et al. [17] because of their relative simplicity when
manipulating the bindings of variables to thunks. (By contrast, Launchbury’s
natural semantics is based on a monotonically growing global heap and is still
1
We believe that our approach can be adopted in other proof assistants as well.
Formal Verification 3

low-level, requiring fresh name generation—a.k.a. “gensym”—for allocation of


thunks.) An obstacle in formalizing their definitions is the evaluation contexts,
which may insert multiple bindings at once and are harder to formalize with de
Bruijn indices. We eliminate them by devising a predicate that defines when a
term “needs” the value of a variable.
Although our modified definition of call-by-need reduction is suitable for for-
malization with de Bruijn indices, existing proofs are still hard to formalize. On
one hand, the proof by Ariola and Felleisen [4] is based on informally intro-
duced graph representation of terms for relating call-by-need and call-by-name
reductions; as they themselves write, “a graph model for a higher-order language
requires many auxiliary notions” [4, p. 3]. On the other hand, Maraist et al. [17]’s
proof uses rather intricate “marks” on redexes and their reductions to prove the
confluence of their non-deterministic reductions. We therefore devise a simpler
proof, outlined as follows. As for the correspondence between terms during call-
by-name and call-by-need reductions, we simply inline all let-bindings (denoted
by M  ) which represent thunks in call-by-need. Then, roughly speaking, a call-
by-need reduction step such as let x = M in N → let x = M  in N corresponds
to multiple call-by-name steps like N [x → M ] →∗ N [x → M  ]. We then appeal
to Curry and Feys’ standardization theorem [5] as follows:
– For the “forward direction”, suppose that a term M is evaluated to an answer
β β
A by call-by-need. Then M  − →∗ A by full β-reduction − →. By a corollary
name
of standardization, there exists some call-by-name evaluation M  −−−→∗ V
β
with V −→∗ A .
name
– The main challenge is to prove the converse direction. Suppose M  −−−→∗ V .
We aim to prove M is evaluated by call-by-need to some answer A corre-
sponding to V . By another corollary of standardization, M  is terminating
name β
(regardless of non-determinism) by repetition of −−−→ ◦ − →∗ . Since a call-by-
name β
need reduction step corresponds to −−−→ ◦ − →∗ , the call-by-need evaluation
must also terminate with some N . The correspondence between N and V is
then proved via the forward direction above.
Our Coq script is available at: https://github.com/fetburner/call-by-need
Structure of the paper. We review the call-by-name λ-calculus in Sect. 2. Section 3
presents the syntax and semantics of Ariola and Felleisen’s call-by-need λ-
calculus. Section 4 gives the outline of our new proof of the correspondence
between call-by-need and call-by-name, based on standardization. Section 5
details our techniques for formalization in a proof assistant (Coq, to be specific).
Section 6 discusses previous researches and their relationship to our approach.
Section 7 concludes with future work.

2 λ-Calculus and Call-by-Name Evaluation


We define the syntax and basic β-reduction of λ-calculus as in Fig. 1. The expres-
sion M [x → N ] denotes capture-avoiding substitution of N for each free occur-
β
rence of x in M . The full β-reduction −
→ is defined as the compatible closure of
4 M. Mizuno and E. Sumii

Syntax

Terms L, M, N ::= x|V |M N


Values (weak head normal forms) V ::= λx.M
Evaluation contexts En ::= [] | En M

Reduction rule
(β) (λx.M )N → M [x N]

Fig. 1. Definitions for the call-by-name λ-calculus

R
the reduction rule (β). For any binary relation −
→, we write the reflexive tran-
R R β
sitive closure of −
→ as −→∗ . For example, the reflexive transitive closure of −
→ is
β
written − →∗ .
name
The call-by-name reduction −−−→ is the closure of the base rule (β) by evalua-
tion contexts En . For example, in call-by-name, (λx.xx)((λy.y)(λz.z)) is reduced
as follows:
(λx.xx)((λy.y)(λz.z))
name
−−−→ (λy.y)(λz.z)((λy.y)(λz.z))
name
−−−→ (λz.z)((λy.y)(λz.z))
name
−−−→ (λy.y)(λz.z)
name
−−−→ λz.z
name β
The relation −−−→ is a partial function and included in − →. Note that, under
full β-reduction, there exists a shorter reduction sequence:
β β β
(λx.xx)((λy.y)(λz.z)) −
→ (λx.xx)(λz.z) −
→ (λz.z)(λz.z) −
→ λz.z

In order to establish the correspondence with call-by-need evaluation, we will


also focus on stuck states En [x]. The basic properties of call-by-name can then
be summarized as follows:

Lemma 1 (basic properties of call-by-name evaluation).


name
1. −−−→ is a partial function.
2. If En [x] = En [y] then x = y.
3. For any term M , exactly one of the following holds:
(a) M is a value
(b) M = En [x] for some En and x
name
(c) M is reducible by −−−→

Proof. Clause 1 and 2 follow from straightforward structural inductions on eval-


name
uation contexts (note that −−−→ is the closure of the base rule β by call-by-
name evaluation contexts En ), and clause 3 is proved by structural induction on
term M . 

Formal Verification 5

Syntax

Values V ::= λx.M


Answers A ::= V | let x = M in A
Terms L, M, N ::= x | V | M N | let x = M in N
Evaluation contexts E ::= [] | E M | let x = M in E | let x = E in E [x]

Reduction rules
(I) (λx.M )N → let x = N in M
(V) let x = V in E[x] → let x = V in E[V ]
(C) (let x = M in A) N → let x = M in A N
(A) let y = let x = M in A in E[y] → let x = M in let y = A in E[y]

Fig. 2. Ariola and Felleisen’s call-by-need λ-calculus

The following Lemma 2 (a call-by-name variant of the leftmost reduction


theorem, which is a folklore) and Lemma 3 (a call-by-name variant of quasi-
leftmost reduction theorem, which seems to be original) are corollaries of Curry
and Feys’ standardization theorem [5]. As outlined in the Introduction, they play
a crucial role in proving the correspondence between call-by-name and call-by-
need.
β name β
→∗ V , there exists V  such that M −−−→∗ V  −
Lemma 2. If M − →∗ V .
β name β
Lemma 3. If M − →∗ V for some V , then M is terminating by −−−→ ◦ −
→∗
(despite the non-determinism).
name β
As we shall see in Sect. 4, the auxiliary relation −−−→ ◦ −
→∗ plays a key role when
proving the correspondence between call-by-need and call-by-name reductions.

3 Ariola and Felleisen’s Call-by-Need λ-Calculus

We show the syntax, reduction rules, and evaluation contexts of Ariola and
Felleisen’s calculus in Fig. 2.2 By convention, we assume that, whenever we write
E[x] on paper, the variable x is not bound by E. Note that our formalization in
Coq will use de Bruijn indices and does not need such a convention. The call-
need
by-need reduction −−−→ is the closure of the base rules (I), (V), (C), and (A) by
the evaluation contexts E. For example, as mentioned in the introduction, the
term (λx.xx)((λy.y)(λz.z)) is reduced as follows (the redexes are underlined):

2
Strictly speaking, the reduction rules shown here are called standard reduction rules
in their paper, as opposed to non-deterministic reduction. Note that the let-binding
let x = M in N is non-recursive.
6 M. Mizuno and E. Sumii

(λx.xx)((λy.y)(λz.z))
— by rule (I) under evaluation context []
need
−−−→ let x = (λy.y)(λz.z) in xx
— by (I) under let x = [] in xx
need
−−−→ let x = (let y = λz.z in y) in xx
— by (V) under let x = [] in xx
need
−−−→ let x = (let y = λz.z in λz.z) in xx
— by (A) under []
need
−−−→ let y = λz.z in let x = λz.z in xx
need
−−−→ . . .
Note that the value λz.z of x is shared between the two occurrences of x and is
never computed twice. Note also that, although the above call-by-need reduction
sequence may seem longer than necessary, the “administrative” reductions by
(V), (C), and (A) do not contribute to “real” reductions. In order to distinguish
administrative reductions when proving the correspondence between call-by-need
and call-by-name evaluations, we also consider reductions limited to specific base
VCA
rules as follows. The reduction −−−→ is the closure of the three base rules (V),
I
(C), and (A) by evaluation contexts E. Similarly, the reduction − → is defined by
need I VCA
the closure of the base rule (I). Obviously, −−−→ = −→ ∪ −−−→.
The points of Ariola and Felleisen’s semantics are twofold: the representation
of sharing by the syntactic form let, and redex positions by evaluation contexts.
Thanks to these techniques, their semantics is entirely syntactic (that is, with
no need for heaps or denotational semantics), which is desirable for mechanized
verification.
The above call-by-need reductions are defined so that they become determin-
istic:
Lemma 4 (determinacy of call-by-need reductions).
I
1. − is a partial function.

VCA
2. −−−→ is a partial function.
3. If E[x] = E  [y], then x = y.
4. For any term M , exactly one of the following holds:
(a) M is an answer
(b) M = E[x] for some E and x
I
(c) M is reducible by − →
VCA
(d) M is reducible by −−−→
Proof. Again by straightforward structural inductions (cf. Lemma 1). 


4 Outline of Our Standardization-Based Proof


Before presenting the Coq formalization, we outline our new proof of the cor-
respondence between call-by-name and call-by-need evaluations, based on stan-
dardization.
The correspondence M  of terms is defined by let expansion as follows:
Formal Verification 7

Definition 1.
x =x
(λx.M ) = λx.M 
(M N ) = M N
(let x = M in N ) = N  [x → M  ]

Although the above definition is similar to Maraist et al. [17], they annotated
terms and reductions with what they call “marks”, which they use to keep track
of the inlined let-bindings, while we somehow “recover” their reduction by con-
name β
sidering the auxiliary reduction relation −−−→ ◦ −
→∗ .

Lemma 5 (single-step correspondence).


1. (M [x → N ]) = M  [x → N  ].
2. A is a value for any answer A.
3. For any E and x, E[x] = En [x] for some En .
VCA
4. If M −−−→ N then M  = N  .
I name β
5. → N then M  −−−→ ◦ −
If M − →∗ N  .

Note that call-by-name reduction of M  itself does not straightforwardly cor-


respond to call-by-need reduction of M since the latter may reduce more redexes
due to the sharing by let-bindings. For instance, the call-by-need evaluation

let x = (λy.y)(λz.z) in x(λw.x)


need
−−−→∗ . . . let x = λz.z in x(λw.x)
need
−−−→ . . . let x = λz.z in (λz.z)(λw.x)
need
−−−→∗ . . . let x = λz.z in . . . (λw.x)

(omitting irrelevant let-bindings) becomes

(λy.y)(λz.z)(λw.(λy.y)(λz.z))
name
−−−→ (λz.z)(λw.(λy.y)(λz.z))
name
−−−→ λw.(λy.y)(λz.z)

in call-by-name, leaving the β-redex (λy.y)(λz.z) inside a λ-abstraction, which


needs to be reduced by full β-reduction.

Proof (Lemma 5). The first two clauses are proved by obvious structural induc-
tions, and the next three clauses follow from the structural inductions on evalua-
I VCA
tion contexts (note that −
→ and −−−→ are the closure of base rules by evaluation
contexts E). 


We first consider the “soundness” direction of the correspondence, that is,


any call-by-need evaluation has a corresponding call-by-name evaluation:
need name β
Theorem 1 (soundness). If M −−−→∗ A, then M  −−−→∗ V −
→∗ A for
some V .
8 M. Mizuno and E. Sumii

need β
Proof. Suppose M −−−→∗ A. Then M  − →∗ A by clause 4 and 5 of Lemma 5,

where A is a value by clause 2 of Lemma 5. Then, by Lemma 2, we obtain the
name β
value V such that M  −−−→∗ V − →∗ A . 


The harder, converse direction (called “completeness”) is as follows:


name need β
Theorem 2 (completeness). If M  −−−→∗ V , then M −−−→∗ A and V −
→∗
A for some A.

In addition to the fact that call-by-name reduction by itself is not “sufficient”


for call-by-need as explained above, another problem is that termination under
call-by-name does not immediately imply termination under call-by-need since
administrative reductions in call-by-need become 0 step in call-by-name, as in
clause 4 of Lemma 5. To address the latter issue, we show the termination of
administrative reductions as follows:
VCA
Lemma 6. Administrative reduction −−−→ is terminating.

Proof. By the decrease of the following measure function M s , indexed by


environments s mapping let-bound variables to the measure of their right-hand
sides (and defaulting to 1 for other variables).

x s = s(x)
λx.M s = M s◦[x→1]
M N s = 2 M s +2 N s
let x = M in N s =2 M s+ N s◦[x→1+M s ]




This proof is similar to Maraist et al. [17, p. 287] except for our treatment of
variables based on environments.
We then prove the completeness theorem:
Proof. (Theorem 2). First, we show that the call-by-need reduction of M is
normalizing. If there is an infinite call-by-need reduction sequence from M , then
I
by Lemma 6 it must contain an infinite number of − →, and therefore by clause 5 of
name β
Lemma 5 there is an infinite reduction sequence consisting of −−−→ ◦ − →∗ from
  name
M . However, this contradicts with Lemma 3 (since M −−−→∗ V obviously
β
implies M  −→∗ V )3 .
Given that M terminates in call-by-need, we next show its normal form N
is an answer A. The reasoning is summarized in Fig. 3. By clause 4 of Lemma 4,
if N is not an answer, it is stuck in call-by-need, that is, N = E[x] for some E
and x. Then, by clause 3 of Lemma 5, E[x] = En [x] for some En , that is N  is
3
Although this argument seems to be a proof by contradiction, our actual Coq proof
name β
is constructive, using an induction on the finite reduction sequence of −−−→ ◦ −
→∗

from M as we shall see in Sect. 5.
Formal Verification 9

M M
β need
name

?
V En [x] E[x] = N

β β

L = V = En [x]

Fig. 3. Reasoning for non-stuckness of the normal form N

De Bruijn indexed syntax

Terms L, M, N ::= x|V |M N


Values V ::= λ.M

Reduction rules

name β
(λ.M )N −−−→ M [0 N] (λ.M )N −
→ M [0 N]
Context rules

needsn (M, x) name


M −−−→ M
needsn (x, x) needsn (M N, x) name
M N −−−→ M N

β β β
M−
→M N−
→N M−
→M
β β β
M N−
→M N M N−
→M N λ.M −
→ λ.M

Fig. 4. Our modified definitions for the call-by-name λ-calculus and β-reduction

β
stuck in call-by-name. Also, by clause 4 and 5 of Lemma 5, M  − →∗ N  . Then,
β β β
by confluence of − →, there exists term L such that N  −→∗ L and V − →∗ L, that
β
is, L is a value and N  reduces to it by −
→. Since stuck states in call-by-name are
β
preserved by − →, this contradicts with the fact that N  is stuck in call-by-name.
β
Finally, we show V − →∗ A . By Theorem 1, we have some V  such that
name β
M  −−−→∗ V  − →∗ A . We then obtain V = V  by Lemma 1. 


5 Formalization in Coq

The main points of our formalization in Coq are twofold: representation of bind-
ing by de Bruijn indices, and implicit treatment of evaluation contexts. We show
the syntax and reduction rules of our modified call-by-name and call-by-need
λ-calculi in Figs. 4 and 5.
10 M. Mizuno and E. Sumii

De Bruijn indexed syntax

Values V ::= λ.M


Answers A ::= V | let = M in A
Terms M, N ::= x | V | M N | let = M in N

Reduction rules

needs(M, 0)
I
(λ.M ) N −
→ let = N in M VCA
let = V in M −−−→ M [0 V]

VCA
(let = M in A) N −−−→ let = M in A ↑N

needs(N, 0)
VCA
let = (let = M in A) in N −−−→ let = M in let = A in ↑1 N

Context rules

needs(M, x) needs(N, x + 1)
needs(x, x)
needs(M N, x) needs(let = M in N, x)

needs(M, x) needs(N, 0) I
N−
→N
needs(let = M in N, x) let = M in N −
I
→ let = M in N

I I
M−
→M M−
→M needs(N, 0)
I I
M N−
→M N let = M in N −
→ let = M in N

VCA VCA
N −−−→ N M −−−→ M
VCA VCA
let = M in N −−−→ let = M in N M N −−−→ M N

VCA
M −−−→ M needs(N, 0)
VCA
let = M in N −−−→ let = M in N

Fig. 5. Our modified call-by-need λ-calculus

We use de Bruijn indices for simple manipulation of binding. Fortunately,


Ariola and Felleisen’s semantics is straightforwardly adaptable for de Bruijn
indices since only a constant number of bindings are inserted or hoisted by a
reduction. We use the auxiliary operation ↑c M called “shifting”, which incre-
ments the indices of the free variables in M above the “cutoff” c as follows:
Formal Verification 11

x if x < c
↑c x =
x + 1 if x ≥ c
↑c λ.M = λ.↑c+1 M
↑c (M N ) = (↑c M ) (↑c N )
↑c (let = M in N ) = (let = ↑c M in ↑c+1 N )

We write ↑M for ↑0 M . In Coq, we use Autosubst [23] to automatically derive


operations such as shifting on terms using de Bruijn indices, and their metathe-
ories including basic properties of substitutions.
Although evaluation contexts reduce the number of reduction rules, explicit
treatment of contexts often hinders automated reasoning.4 For example, consider
the clause 4 of Lemma 4. To prove case (b) we need to find a concrete E such
that M = E[x], which requires second-order unification [12] in general. More
concretely, in Coq, the lemma could be written like

Lemma answer_or_stuck_or_reducible M :
answer M \/
(exists E x, evalctx E /\ M = E.[tvar x] /\ bv E <= x) \/
(exists E L N, evalctx E /\ M = E.[L] /\ reduceI L N) \/
(exists E L N, evalctx E /\ M = E.[L] /\ reduceVCA L N).

where bv E <= x means that x is not captured in E. This statement can be


proved by induction on M , where we first encounter the case M is a variable x:
4 subgoals

x : var
============================
answer M \/
(exists E y, evalctx E /\ tvar x = E.[tvar y] /\ bv E <= y) \/
(exists E L N, evalctx E /\ tvar x = E.[L] /\ reduceI L N) \/
(exists E L N, evalctx E /\ tvar x = E.[L] /\ reduceVCA L N)

However, automation fails even though the above disjunction is obviously true
by the second clause with E = []:

Coq < eauto.

4 subgoals

x : var
============================
4
Another drawback is that evaluation contexts may introduce an arbitrary number of
bindings and therefore need to be indexed by that number to coexist with de Bruijn
indices, requiring heavy natural number calculations—like the Omega [9] library for
Presburger arithmetic—in the mechanized proofs. Our approach will also obviate
the need for such calculations.
12 M. Mizuno and E. Sumii

answer M \/
(exists E y, evalctx E /\ tvar x = E.[tvar y] /\ bv E <= y) \/
(exists E L N, evalctx E /\ tvar x = E.[L] /\ reduceI L N) \/
(exists E L N, evalctx E /\ tvar x = E.[L] /\ reduceVCA L N)
We avoid the above problem by eliminating evaluation contexts by expanding
β name I VCA
their definition in reductions −→, −−−→, − →, and −−−→, and devising stuckness
predicates needsn (M, x) and needs(M, x), corresponding to “M = En [x] for
some En ” and “M = E[x] for some E”, respectively, as in Fig. 5. (Note that,
unlike evaluation contexts, each derivation rule of needs(M, x) inserts only at
most one let-binding at once; cf. footnote 4.) The only deviation is thunk deref-
VCA
erence let x = V in E[x] −−−→ let x = V in E[V ], where we approximate the
operation E[V ] by substitution (E[x])[x → V ]. Although the latter may substi-
tute extra occurrences of x in E itself, it is semantically equivalent to the former
since V is already a value. Here our formalization favors simplicity over faith-
fulness and slightly differs from the original definition. It is also straightforward
(though cumbersome) to adhere to the original by defining a partial function
that substitutes a given value V with a given variable x in a redex position of a
given term M .5
After the elimination of evaluation contexts, we can now prove clause 4 of
Lemma 4 almost automatically as follows:
Lemma answer_or_stuck_or_reducible M :
answer M \/
(exists x, needs M x) \/
(exists N, reduceI M N) \/
(exists N, reduceVCA M N).
Proof.
induction M as
[|? [Hanswer|[[]|[[]|[]]]]
||? [Hanswer|[[]|[[]|[]]]] ? [|[[[]]|[[]|[]]]]]; eauto 6;
inversion Hanswer; subst; eauto 6.
Qed.
Let us overview the other changes by our elimination of evaluation contexts:
clause 2 of Lemma 1 becomes “if needsn (M, x) and needsn (M, y), then x =
y”; case (b) of clause 3 of Lemma 1 changes to “needsn (M, x) for some x”;
clause 3 of Lemma 4 to “If needs(M, x) and needs(M, y), then x = y”; case
(b) of clause 4 of Lemma 4 to “needs(M, x) for some x”; and clause 3 of
Lemma 5 to “If needs(M, x) then needsn (M  , x)”. The proofs of these lemmas
proceed by induction on the derivation of needsn (M, x) or needs(M, x) instead
of structural induction on evaluation contexts.
Another devisal in our Coq formalization is replacing the reductio ad impos-
sibilem for the normalization proof of Theorem 2 (completeness) in Sect. 4, with
an intuitionistic, constructive proof as follows:
5
Indeed, we also formalized the original semantics and proved its correspondence to
call-by-name. See: https://github.com/fetburner/call-by-need.
Formal Verification 13

Proof. (Theorem 2, constructive version). By Lemma 3, M  is terminating by


name β name β
−−−→ ◦ −→∗ . Let us define L ⇓, meaning that L is terminating by −−−→ ◦ −
→∗ ,
 name β  
inductively as: (∀L .L−−−→ ◦ − →∗ L ⇒ L ⇓) ⇒ L ⇓. We then prove a stronger
6

property that, for any M  , M  ⇓ implies


need
for any M , if M  = M  , then M terminates by −−−→
by induction on the definition of M  ⇓. The above statement is trivially true
I
if M is already a call-by-need normal form. If M − → N , then by clause 5 of
name β
Lemma 5 we have M  −−−→ ◦ − →∗ N  , and by the induction hypothesis we have
need VCA
that N terminates by −−−→. If M −−−→ N , then by clause 4 of Lemma 5 we
 
have M = N and the conclusion follows from a double, inner induction on
VCA
reductions by −−−→, which is finite by Lemma 6.
The rest of the proof is similar to that in Sect. 4.

6 Related Work
Call-by-name and, to a lesser degree, call-by-need evaluations have been inves-
tigated for more than decades. We here focus on notable previous researches on
the correspondence between call-by-need and call-by-name (other than Ariola
and Felleisen [4], which we have already reviewed in Sect. 3), and discuss their
differences from our approach.

– Launchbury [16] gave a natural semantics for call-by-need evaluation with


mutually recursive bindings and proved its adequacy with respect to call-by-
name evaluation. He defined judgements of the form Γ : e ⇓ Δ : z, meaning
“term e under store Γ evaluates to value z, yielding a modified store Δ”.
The key of his semantics is a “dual use” of variables as pointers to thunks.
This technique makes their semantics simpler than conventional operational
semantics based on abstract machines.
However, Launchbury’s natural semantics is still challenging from the
viewpoint of mechanical verification, not only because of mutual recursion,
but also because of subtle variable convention: for example, let us evaluate
term let u = 3, f = (λx.let v = u + 1 in v + x) in f 2 + f 3. We must replace
the bound variable v in the body of the function f with some fresh variable
v  every time f is called, because the pointers to the thunks are identified
with variable names.
Recently, Breitner [6] formalized Launchbury’s natural semantics adopting
nominal logic [25] except for mutually recursive heaps, which were represented
by explicit names.
Vassena et al. [26] formalized Sestoft [24]’s small-step variant of Launch-
bury’s semantics, adopting de Bruijn indices. However, mutually recursive
bindings are omitted from their language.
6
This definition is adopted from the accessibility predicate Acc in Coq.
14 M. Mizuno and E. Sumii

– Maraist et al. [17] gave a small-step semantics for call-by-need evaluation and
proved its correspondence (full abstraction) with call-by-name. Their seman-
tics is almost the same as Ariola and Felleisen’s, making the former’s proof
method also useful for the latter. (The difference between the two semantics
is that, in Maraist et al., variables are values, and an additional reduction rule
let x = M in N → N (x ∈ / FV(N )) is introduced for garbage collection.)
A point of Maraist et al.’s proof is the introduction of marks on redexes
for call-by-need reductions (I, V, C, or A). Their approach seems natural
for proving the confluence of their non-deterministic reductions but signifi-
cantly complicates the definitions of terms and reductions in a mechanized
metatheory.
Although we did not directly adopt Maraist et al.’s formalism, it influ-
enced our correspondence M  of call-by-need terms with call-by-name, and
our measure function in the proof of Lemma 6.
– Chang and Felleisen [7] proposed a variant of Ariola and Felleisen’s semantics
and proved its correspondence with Launchbury’s semantics. They gave a
simpler reduction rule with arguably more complicated evaluation contexts
instead of administrative reductions. As argued in Sect. 5, we avoided any
use of evaluation contexts for the sake of easier automation and formalization
with de Bruijn indices.

7 Conclusion
We formalized a variant of Ariola and Felleisen’s small-step operational semantics
of call-by-need λ-calculus and proved its correspondence with call-by-name, using
the Coq proof assistant. For the formal verification, we developed a simpler proof
based on two forms of standardization (Lemmas 2 and 3), adopting de Bruijn
indices for representation of variable binding. Along the way, we simplified the
formalization and enabled more automation by replacing evaluation contexts
with more specific definitions (Sect. 5).

Future Work. We plan to extend our target language to more practical lan-
guages. Data types such as tuples and sums should be straightforward since they
are already in weak head normal form. The most interesting challenge would be
recursive definitions, because they cannot be completely inlined when establish-
ing the correspondence with call-by-name (cf. Definition 1). A natural starting
point here may be Ariola and Blom’s well-known theory of cyclic λ-calculus [3].
Another (though smaller) issue is binary operations (such as arithmetic addition
+), for which non-deterministic (but strict) evaluation of the operands may be
desirable.

Acknowledgments. We thank the anonymous reviewers for valuable comments and


suggestions. This work was partially supported by JSPS KAKENHI Grant Number
15H02681 and 16K12409.
Another random document with
no related content on Scribd:
The Project Gutenberg eBook of Dungeon
Rock; or, the pirate's cave, at Lynn
This ebook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this ebook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.

Title: Dungeon Rock; or, the pirate's cave, at Lynn

Author: N. S. Emerson

Release date: November 9, 2023 [eBook #72083]

Language: English

Original publication: Boston: C. M. A. Twitchell, Printer, 1885

Credits: Charlene Taylor and the Online Distributed


Proofreading Team at https://www.pgdp.net (This file
was produced from images generously made available
by The Internet Archive/American Libraries.)

*** START OF THE PROJECT GUTENBERG EBOOK DUNGEON


ROCK; OR, THE PIRATE'S CAVE, AT LYNN ***
Dungeon Rock;

OR

THE PIRATE’S CAVE,

AT LYNN.

B O S T O N:
C. M. A. Twitchell, Printer, 50 Bromfield St., Boston.

1885.
Copyright by
MRS. S. P. AMES.
1885.
To Mrs. Hannah Lucinda Marble, widow of the late Excavator,
and at the present time the person most interested in this romantic
spot, I dedicate this book.
S. P. A.
HISTORY OF DUNGEON ROCK.
Dungeon Rock is as yet only half known. More than “two hundred
years ago,” when first the foot of civilization pressed the unturned sod
of New England’s rock-bound soil, a man, past the prime of life, having
lost his place in England, determined on seeking a new name in a new
country. Accordingly, he embarked with his only earthly treasures, his
wife and the family coat of arms, and, after a dangerous voyage,
reached Plymouth Rock, only to encounter more dangers. And there,
in that lonely home, away from all that makes life desirable to
childhood, did the little William first see the light of day, and began the
battle of living without love. None but those who have experienced it
can tell how deep and terrible is the sternness of a disappointed man.
Ben Wallace—for this was the adventurer’s name—had acquired a
morbid hate for everything bright and beautiful, and lived, like most of
New England’s early settlers, for the stern realities of life, expecting
nothing but hardships, and therefore seeking nothing. No wonder,
then, that the aristocratic blood of English ancestry, coursing through
the child’s veins, rose against the injustice of being a dependent where
he should have been a pride; and, even in his baby days, when the
garden was his play-ground, the unrooted stumps his rocking-horses,
and the strips of painted basket material, which he now and then
received from the Indian children in the neighborhood, represented to
his childish gaze the flags and banners of ancient heraldry, which his
mother pointed out to him upon the coat of arms,—even then he defied
his father’s commands, and turned from his stern reproofs to whisper
the childish longings of his own heart to the birds and the dancing
stream. “I hate it,” he said passionately, when he had arrived at the
age of fourteen; “I hate the strong fence that keeps me from finding
other people’s homes! I hate to be confined to work that I detest, just
for the sake of getting food from day to day. I will not do it. The world
shall know that William Wallace was not born for no purpose. I will help
some one, if it is savages and wild beasts.”
Thus spoke the stripling in his lonely home. For six long years did
he cherish that one bright thought. It was all the hope he had to
stimulate him when labor was his only portion, and life was scarcely
worth the danger of preserving it. At last he refused to bear it any
longer, and, one pleasant night in early spring, he dressed himself as
near like a native as he could, gathered his own clothes into as small a
compass as possible, sprang lightly over the garden fence, and
carefully threaded his way through the almost pathless wood to the
nearest Indian camp. From there it was an easy task to go further, and
he soon began his plans for himself. These were, to get as far from
Plymouth as he dared, and still be somewhere in the region of
civilization. It was before the foundery was started in Saugus, when
only a few stalwart men were discussing the probability of extensive
mines in that direction. But Wallace liked the sea-shore; so he built him
a residence miles and miles away from any human habitation,
determined to assist the first suffering creature that came within his
reach. Custom soon came. Little clubs of men often repaired some
worn-out canoe, left by the Indians upon the sand, and embarked in it
upon the dashing billows to try their luck in procuring fish for food.
Almost invariably there would some mishap befall them; and every
night the bold young Wallace went to rest with a proud and happy
smile curving his delicate lips, and a feeling of true unselfish generosity
nestling in his heart. He was happy in his honest calling, and wished
for no greater reward than what he received from the natives, and the
rough but kind-hearted settlers.
For a short time he lived thus, and his whole soul was in his work.
But a change came at last. One fearful stormy night, when the waves
rolled far up on the dark sand, and the rain and the wind chanted their
wild music, he heard a low moan, instantly followed by a loud cry of
agony, and quick calls for help.
He was used to scenes of danger, and, merely supposing that
another frail boat had consigned its precious charge to the watery god,
and that more human beings were in need of help, he arose, unbarred
the low door, and bade the strangers welcome.
Before they entered the house its inmates—consisting of a young
Scotchman, his fair, pleasant-looking English wife, and their daughter,
whose years had been spent in luxury until now that ten summers had
passed above her head, her beauteous home had gone, and she too
was destined to a life of labor—were all astir, and the warm fire lighted
in the heavy grate.
A tall, well-formed man first entered the room, with a thick frock of
shag enveloping his person, confined at the waist by a broad belt, into
which was thrust an unsheathed dirk-knife, and a short sword hung
suspended by his side. His hat was dripping with water, and his broad
shoulders and powerfully-built frame made him look, in his unique
costume, like a representation of Hercules; while his black hair and
eyes and burlesque manner and motions, gave him the appearance of
what he really was, a pirate and a plunderer.
“Give us the most comfortable place in the house,” he said, with a
careless glance around. “If it had not been for this accursed storm, and
the woman aboard, we should not have been obliged to come at all.”
And he strode out again into the darkness, followed by Jamie Burns,
the Scotch emigrant, who was resting there until he could find a home
for himself.
“Alice,” said the mother, nervously, as she saw the child walk firmly
to the open door, “do keep away all you can. If we are all to be
murdered, we might as well be cautious about it, as to run into danger
with our eyes wide open;” and, turning from the beating rain, she drew
the rough oaken chair to the fire, and arranged a fleecy lamb’s-wool
blanket, which she had brought from home, about its comfortable
cushions.
They soon returned. Veale, the first comer, bore a slight girlish
form in his arms, enveloped in satin and ermine; her fair pale face
forming a strange contrast with the deep crimson hood which fell back
from her high white brow, revealing the sunny-hued curls which hung
over her rich dress.
There were four other men, in the same dress, and having the
same general appearance as the first; and, from the noise outside,
Wallace concluded there were several more to come.
The men took very little notice of each other, and the lady was
beginning to revive under the kindly care of Mrs. Burns, when the
voices again approached the door, and, after a short consultation
there, three kept on across the beach, and another entered the house.
This last was called Harris, by the lady and the men within, who
seemed to look up to him as their captain, or, rather, their leader. He
appeared the youngest of them all; but there was a lofty look of daring
in his dark hazel eyes, and an unfaltering determination in his small
mouth, that seemed to quell each motion of familiarity. He looked
kindly at the little group huddled around the fire, and gazing so
suspiciously at his band of followers. He was rather tall, but very
slightly formed, and his dark green frock and crimson sash set off his
wild beauty to peculiar advantage.
“Is it far to where you are going, lady?” said Alice, timidly.
The pale face lighted up a moment with pleasure, and, as she
turned toward the child, and laid her white dimpled hand on Alice’s
brown hair, she looked quite like a living being. “I do not know, little
one,” she answered; “I never was this way before. I wish I did know
where we are,” she continued, sadly, with a wistful glance at the half-
closed door.
“It is only a little way from here,” said Harris, soothingly; “see, the
moon is coming out already, and we shall soon be on our way.” And
taking a small compass from his pocket, he adjusted it in the window
frame, as if to shape the course he should take when he left. “Go and
unfasten the boat,” he said, peremptorily, to one of the men, “and bring
up my mantle for your mistress. Quick, man,” he added, as the man
hesitated; “are you afraid of the moonshine?” and, impatiently opening
the rough door, he gazed upon the hurrying clouds and the straggling
moonbeams, that half lighted the broken rocks near the dwelling.
The man returned from the water with a large, heavily-embroidered
mantle, the deep gold-tipped fringe almost sweeping the floor as he
threw it over his shoulders to see if it was uninjured. At last they left,
just as the gray dawn was breaking. Veale, who seemed to be chief
assistant, gave a signal, and the four men marched rapidly down to the
water. Harris threw a purse of gold upon the table, and followed Veale,
who bore the lady from the house wrapped in the rich mantle.
Wallace looked after them with a dubious, thoughtful look clouding
his honest brow. It was long before he heard again from the mysterious
visitors, but he kept a more vigilant watch for passing vessels, and
answered more readily to unexpected calls than before.
At last they came again. It was night, as before; the pale full moon
was shedding its pure radiance over the sleeping earth. He was not
startled this time. He was alone in the house, and three heavy knocks
were heard upon the outer door. They soon entered the house. Four
strong, dark-looking men, bearing a huge box that seemed heavy with
something more than its own weight, or the strong irons that bound it,
and, as it reached the floor, a dull ring from the inside told a strange
tale of darkness. But the men spoke not, except in monosyllables, and
Wallace forebore to question them.
As soon as they had found a place for the box, they left, and, after
being gone some time, returned with another, corresponding in size
with the first, but apparently lighter and less firmly secured. As they
placed it upon the floor the spring (for there were few locks in those
days) flew open, revealing rich dark silks, with heavy gold lace
trimmings, small wrought cases of ebony or ivory, and beautiful
ornaments of all kinds. They appeared to be not in the least
disconcerted, but closed the box again with a loud noise, just as Harris
entered with a stranger clad in Spanish citizen’s dress. There was a
striking contrast in their looks, as Harris raised the elegant bandit cap
from his high, white brow, and passed his delicate fingers through the
short, clustering curls, and the stranger flung his heavy slouched hat
upon the floor beside him, and stroked his thick, black moustachios
with his sun-browned hand.
“We must arrange this matter as quick as practicable,” said Harris,
in an undertone, apparently continuing their former conversation. “If
you have any papers of consequence, I shall expect you to give them
up. You can take a small tract of land somewhere near here, or when
we go back to the continent you can return; but you will be obliged to
keep it constantly in your mind that dead men tell no tales, and living
ones are not allowed to; do you understand?” and the youthful leader
of that strong band looked fearlessly upon the dark face beside him.
A low mutter of dissatisfaction escaped the swarthy Spaniard as he
said, “I want none of your bribes; I want my honest pay.”
“Ah! and how much?” said Harris, carelessly.
“Four thousand roubles, which will just pay my forfeiture, and let
me back to my own country,” was the gloomy reply.
A quick look of intelligent forethought passed over Harris’ face, but
he only replied, calmly, “You shall have it;” then, turning from the warm
fire, he commenced an animated conversation with Wallace
concerning his position and its profits.
“Where are your men?” suddenly exclaimed the stranger, rising
from his seat, and drawing the heavy folds of his Spanish cloak more
closely about his short figure.
“They have gone up the river in the boat, and will soon return,”
replied Harris.
“Do you reside near here?” asked Wallace.
Harris laughed. “Our traffic is such that it requires us to be
constantly on the wing, and we have chosen this as our stopping
place,” he answered.
Wallace did not notice the reply; he was looking thoughtfully at the
heavy chests, and wondering what they contained. Harris saw it; he
knew that suspicion was worse than a knowledge; so carelessly
continuing the conversation, he said, “We have a great deal of
merchandise to transport, and such cases as these are very useful.
This,” he said, pushing the spring to one of them, “contains clothing for
my wife, Lady Morrillo, which is my native name.”
“But these are Spanish goods, I take it,” said Wallace, with an
earnest look at the nicely-packed box.
“They are,” was the reply; “they come from the capital. I had an
opportunity to procure them easily; and, besides, I like the Spanish
costume for a lady; especially when travelling. See,” he continued,
raising a delicate jewel case, and turning the flashing diamonds to the
light, “this is of native Spanish workmanship, and there is more beauty
than durability to it, I expect.”
“Yes,” said the stranger, rousing himself from the drowsy sleep into
which he had fallen, “yes, that came from the queen’s boudoir. I tried
hard to save them, but it was no use; the robbers were too strong for
us.” And with a heavy sigh the man leaned his head against the back
of his large chair and appeared to sleep.
A dark thought flashed across Wallace’s mind, but Harris laughed
so unconcernedly, and handled the brilliant ornaments with such
natural, careless ease, that he forgot his suspicions in their beguiling
talk.
“Why do you have the chests made so strong?” Wallace asked,
after awhile.
“O, we need it,” he replied, “lifting them in and out the boats; and
sometimes we have articles of value to carry. Now, that case has all
our most important papers in it. So it is necessary that it should be
made strong.”
“Yes,” said the stranger, again, with more energy than before, “the
papers and all that money belong to the Spanish government. It was
an infernal mean scheme letting those banditti into the banquet, but
little Cristelle was wilful, and fancied their handsome clothes covered
honest hearts.”
“Come, Don Jose,” said Harris, gayly, “do try to wake your sleepy
ideas before you talk any more. I presume,” he added, turning to
Wallace, and noting the dark foreboding that again crossed his brow,
“that he refers to some valuable pieces of plate in our possession. You
remember when the last rebellion took place the capital was said to
have been robbed. At that time the insurgents placed some of their
spoils in trust in our hands, and we still retain them. Don Jose is
confused tonight; what with the sea-sickness, and the change from
cold to warm air, he is nearly insensible,” and he laughed a careless,
merry laugh, at the same time casting a look of stern, contemptuous
reproof upon the cowering Spaniard.
At this stage of affairs the sound of heavy voices, and the tramp of
measured steps, told that the men had returned. Don Jose sprang
from his seat with a quick, nervous motion, drew his hat over his dark,
flashing eyes, and waited impatiently for further motions. Wallace
opened the door; and, as he supposed, the same four men that
brought the boxes entered to remove them. He was deceived,
however, by their dress; the whole band, consisting of between thirty
and forty members, dressing alike, excepting the five leaders and
Harris, who, although he had not yet reached the twenty-second year
of his age, was universally acknowledged as leader of the whole; his
father having held that place until his death, which occurred two years
before.

* * * * *
And now the tangled thread of our history leads us back, three long
and changing years, to a small thatched cottage in Italy, where all day
long the air is heavy with perfume, and the sun goes down at eventide
in a sea of purple, and crimson, and gold.
“Mother, you do wrong to judge Morrillo so harshly,” said a low,
sweet voice, one mid-summer night. “True, he wears the bandit frock
and cap, but I know they hide a noble head, and shield a generous
heart. Besides, he is so young now that his father’s will is the only law
he knows; he never had a mother to tell him how to live.” And the voice
was low and sad, and the slight form of Arabel Ortono glided away
from the drooping vine she was trailing, and sought her favorite retreat
in the shaded veranda.
Her mother soon sought her there, and paused a moment in the
low, arched doorway to contemplate the picture before her. Arabel was
kneeling in a shaded niche, her fair young face flushing and paling
alternately, her long golden-brown curls sweeping over the closely
fitting spencer of darkest hue, and her eyes raised to catch the
brightest moonbeams as they struggled through the thick vines.
“Well, Arabel,” said the mother, at last, interrupting the girl’s
reverie, “you have argued the young pirate’s cause pretty faithfully;
now let me hear you protect your own. Tell me how and why you first
became interested in those most lawless of all unlawful men, and I will
try to be reasonable with your wild fancies.”
Proudly the young Venetian rose from her lowly place and stood
beside her mother. “Almost,” said the mother, playfully measuring the
girl’s height with her eye, “almost as tall as I.”
“Yes, mother,” answered the girl. “I am at least large enough to
know how to talk reasonably,” and a light, scornful smile flitted over the
fair, pale face.
The mother noticed it, but only answering, calmly, “I am ready
now,” she seated herself upon the long rustic bench and prepared to
listen.
“Fourteen years ago today,” Arabel commenced, in a low, hurried
voice, “my father died, and left you with three small children, myself the
youngest, and for that reason most fondly cherished. ‘You must teach
them how to live, Clarette,’ I heard him say, one bright, moonlit
evening, when you was weeping by his bedside in our palace home,
and we were nestled on the low divan in the deep windows, trembling
and terrified. I remember every incident of the dark and dreadful days
that followed, as well as though it were but yesterday. The heavy pall,
with its silver trimmings, the jet-black horses, and the dark and solemn
hearse. Then our house was barricaded, and even you, mother, will
not dare to say that the noble band of Morrillo’s followers did not help
us more than all the Venetian police. I saw them then on that fearful
day, and I honored the bandit badge which bound them to each other.
It is to them we owe all we have here to remind us of our former home;
and even if they have in their possession the most valuable of our
family treasures, it is better so than that our enemies should have
them, is it not?” and the girl paused and looked calmly into her
mother’s eyes.
“Yes, Arabel,” was the half-stifled reply. “It is time that you should
know what I never dared tell you before, even though it fixes you more
firmly in the purpose I am trying to change. It is to the gray-haired
Morrillo that we owe our present home. All you have ever known of
your father is only what your own childish heart taught you to
remember. But there is more for you to know, and you must know it.
Signor Ortono was a friend to the Venetian Emperor at the time when
his enemies were most numerous. When our house was barricaded, at
the time you remember, was when the opposing party made their
grand attack, and impoverished all the families that did not lend them
aid. Ours of course must have yielded an easy prey, had it not been for
the kindly interference of the pirate robbers, who, though they took a
great deal that rightfully belonged to us, left us enough to procure a
home and live comfortably. And this was fourteen years ago, when you
had reached the third year of your sunny life. Ever since then I have
heard from them occasionally, and now—O, bitter fate!—that my
youngest, and, as it were, my only child, should so forget the high
estate of her birth as to look with favor on the robber’s child!” And the
mother ceased speaking, but the scornful tones of her voice still rung
in the girl’s ears.
“But you have not heard half of my story yet,” she said, softly,
crushing back her rebellious thoughts. “Ten years ago, when first my
sisters went away from their own home, to the vineyard in Orton
village, one of the same band that helped us in our trouble gave Uncle
Fay a silver salver, with our family crest upon it, because Luella had
not turned from her purpose when she was trying to reinstate herself in
the family name. And, last of all, just one short year ago, Morrillo came
here in a pelting storm, and claimed a home for a few hours. We knew
him well, but he had entirely forgotten us. He feigned no surprise,
however, when you recalled those distant, painful days, but restored
with seeming pleasure all these mementoes of the city home. You
know, if we had the most costly articles here, they would be
immediately taken from us. He gave us even more than we can keep
in safety, and for all these kindnesses I am very grateful.” And a slight
blush deepened on the girl’s cheek as she ceased speaking.
“So it is only gratitude, eh! that calls my Bel so often down to the
sparkling waters of the gulf in the moonlight?” said the mother, with the
same unreconciled sadness in her voice.
“I care not that you should know it, mother,” was the reply. “I have
never yet tried to hide anything from you. I am proud to acknowledge
the acquaintance of one so noble as Claud Morrillo. It is to meet him
that I wander down the beach when I know the boats are coming in,”
And, with a look of forced carelessness, the young Italian kissed her
mother a good-night, and went to rest with a heavy weight on her
proud heart, where a happy hope had late found birth.
Years pass very rapidly when every day brings its own task and
leaves no time for idleness; and now, almost before we are aware of it,
the luscious autumn is gone, winter withdraws his fleecy mantle, and
the spring is growing old. Again the cottage home is hushed and still;
the blinds are closed, and no sign or sound of life comes from the
silent interior. The gray morning sky is tinted with gorgeous clouds, that
gradually deepen toward the east, where they are bursting into one
steady glow of crimson beauty. In the little room, that has so long been
Arabel’s, the same slight form is resting, and the same low voice
breathed out the last night’s prayer. But a change has passed over her
still life,—a change that is felt, but only half realized.
“Dead, dead!” she moaned, faintly, in her uneasy slumbers; and in
the hall below two forms are faintly discernible in the darkened gloom.
They are the two older sisters, Christabel and Luella, who have
returned from the vineyard to watch over their mother’s sickness, and
attend to the last sad rites of her burial, for she was indeed dead,
dead.
“It is very hard to have death steal so dear a mother, is it not Lu?”
said Arabel, with childish trust, for grief had made her alike powerless
to think or act.
“No, not hard,” was the calm reply, “for it was our Father’s will.
Mother was not used to such a life. It would be selfish in you to wish
her back again. You can go to the vineyard with us tomorrow, and then
you will soon learn to be your own mother,” and Luella turned away.
“O, not tomorrow!” sobbed Arabel, convulsively. “You will not go
tomorrow, Christa?” and she looked tearfully upon her other sister.
“Well, and if you stay another day, will you be any more willing to
go?” said the straightforward Christabel.
Arabel pressed both hands upon her brow, as though she would
concentrate her scattered thoughts, and said mournfully, “If you will let
me stay until Friday night, I will go anywhere.”
“Have you no reason for wishing to remain except your own
fancy?” asked Luella, gently.
“I don’t know,” was the sad reply; “it may be fancy, but I do want to
stay.”
“Very well, then,” said Christa, “we will do as you say;” and so the
matter was settled.
Friday night came at last. The furniture was all packed or disposed
of. It was arranged that they should leave early next morning, and
Arabel wandered out alone, to take, as she said, a last farewell of the
pleasant gulf of Venice, but in reality to meet Claud again, and tell him
her grief, and the new home to which she was going. A long, graceful
boat came bounding over the water, and the pale, blue light in the
stern distinguished it from every other sailer. Soon its keel ran far upon
the sand, and a tall, handsome form sprang out, and, giving a few
orders to the rowers, told them when to return for him, then walked on,
leaving them to put back. Three times did he and Arabel meet and
pass each other, and every time a look of recognition passed between
them, but there were laws to govern all their actions, which they both
knew, to prevent deception. Then, the hours passed all too quickly for
their busy tongues, for there had been many changes since they met
before.
“We will not talk so mournfully any more, Bel. You have been more
favored than I, for you have had a mother to love you,” said the youth,
pleasantly.
“And you than I, for you have had a father to direct,” was the sad
reply. For it was Claud’s task now to comfort the petted child.
The next day the sisters sold the cottage and left for Orton Village
vineyard. “I know not how we shall like each other,” Luella said; and as
an instance of the dissimilarities in their characters, we have but to
look at the way they speak of their mother’s death.
“She is dead, Claud; my own dear mother is dead,” Arabel said,
convulsively, stifling her sobs. “O, I can’t be proud now, for she is
dead!” And, resting her head on his shoulder, she wept her grief away.
Christabel comes next. She was writing to a friend of hers, a
vintner, whose place joined Ortonville. “My mother is not living,” she
wrote, calmly, “and, for the future, my home will be just where I chance
to stay.”
“Just two short nights ago,” so spoke Luella’s diary, “our only
surviving parent went home to the Father who gave her life; her pale
hands clasping the silver crucifix to her still heart, and her last faint
breath used to speak to her dearest earthly treasures. ‘You must be
Arabel’s mother, Luella, and perform your own life-task well,’ was her
only counsel to me. To Christa she said still less, doubtless knowing
that she had her father’s strong intellect and thorough knowledge of
human nature. Arabel was her principal thought, and no wonder, either,
she is so young and inexperienced. I wish I could remember half that I
have heard her say. I wonder why she said so many times, ‘if you
would escape a life of unhappiness, remember what I say, and never,
never wed an infidel.’”
But we are making a short story too long. Suffice it to say that the
girls soon learned to take each her own place at the vineyard, and
direct the laborers at their work with quiet ease.
“It is not often that we meet now, Claud says,” murmured Arabel,
“after being six months in the vineyard; but I know he likes his wild
home better than this, and surely I do, it is so very pleasant to have no
confinement to certain hours of labor. Tonight I am going again to the
fortress—joy! joy!” And she went fearlessly as the wild bird to its
mountain nest, trustingly as the lamb to the shepherd’s fold.
Claud was walking on the battlements, with his eyes fixed upon the
ground. Arabel ascended the steps and commenced the promenade.
Four times they met and passed each other; then, trembling with a
strange apprehension, she approached and laid her white hand on his
arm. He started as though just awakened from a dream.
“Is it you, Bel?” he said, and pressed a kiss on her pallid brow, then
led her out from the deep shadow to where they could see the
moonlight resting on the waves.
“Claud, I am afraid of you,” Arabel said, soberly. “What makes your
hand tremble, and your cheek so pale?” and she looked earnestly into
his face.
“Poor child!” said Claud, sadly. Arabel heard it, and answered
quickly,
“O, Claud, I am not a child! I can bear to know anything. See how
strong I am!” and she drew her hand from his arm and stood before
him.
Claud smiled, sadly and said, “We are twins in sorrow now; both
alone, Bel!”
Slowly the blood left her face, and her hands clasped nervously
together. “Tell me what you mean, Claud,” she said, as she only half
understood him; “tell me if you have no father!”
“It is even so,” was the reply. “My father died since noon today, and
now his form is resting in the hall, where the soft light is gleaming out.

You might also like