Programming Languages and Systems 1st Edition Nobuko Yoshida Download PDF
Programming Languages and Systems 1st Edition Nobuko Yoshida Download PDF
com
https://textbookfull.com/product/programming-
languages-and-systems-1st-edition-nobuko-yoshida/
https://textbookfull.com/product/programming-languages-and-systems-
amal-ahmed/
textbookfull.com
https://textbookfull.com/product/knowledge-management-and-acquisition-
for-intelligent-systems-kenichi-yoshida/
textbookfull.com
https://textbookfull.com/product/understanding-programming-
languages-1st-edition-cliff-b-jones/
textbookfull.com
https://textbookfull.com/product/cognitive-neuroscience-5th-ed-the-
biology-of-the-mind-5th-edition-michael-s-gazzaniga/
textbookfull.com
Advances in refining catalysis 1st Edition Üner
https://textbookfull.com/product/advances-in-refining-catalysis-1st-
edition-uner/
textbookfull.com
https://textbookfull.com/product/public-health-101-healthy-people-
healthy-population-2nd-edition-riegelman/
textbookfull.com
https://textbookfull.com/product/polarons-and-bipolarons-an-
introduction-1st-edition-ashok-chatterjee-author/
textbookfull.com
First Order Phase Transitions of Magnetic Materials: Broad
and Interrupted Transitions First Edition Praveen Chaddah
https://textbookfull.com/product/first-order-phase-transitions-of-
magnetic-materials-broad-and-interrupted-transitions-first-edition-
praveen-chaddah/
textbookfull.com
ARCoSS Nobuko Yoshida (Ed.)
Programming
LNCS 12648
Languages
and Systems
30th European Symposium on Programming, ESOP 2021
Held as Part of the European Joint Conferences
on Theory and Practice of Software, ETAPS 2021
Luxembourg City, Luxembourg, March 27 – April 1, 2021
Proceedings
Lecture Notes in Computer Science 12648
Founding Editors
Gerhard Goos, Germany
Juris Hartmanis, USA
Programming
Languages
and Systems
30th European Symposium on Programming, ESOP 2021
Held as Part of the European Joint Conferences
on Theory and Practice of Software, ETAPS 2021
Luxembourg City, Luxembourg, March 27 – April 1, 2021
Proceedings
123
Editor
Nobuko Yoshida
Imperial College
London, UK
© The Editor(s) (if applicable) and The Author(s) 2021. This book is an open access publication.
Open Access This book is licensed under the terms of the Creative Commons Attribution 4.0 International
License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution
and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and
the source, provide a link to the Creative Commons license and indicate if changes were made.
The images or other third party material in this book are included in the book’s Creative Commons license,
unless indicated otherwise in a credit line to the material. If material is not included in the book’s Creative
Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use,
you will need to obtain permission directly from the copyright holder.
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, expressed 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.
This Springer imprint is published by the registered company Springer Nature Switzerland AG
The registered company address is: Gewerbestrasse 11, 6330 Cham, Switzerland
ETAPS Foreword
Welcome to the 24th ETAPS! ETAPS 2021 was originally planned to take place in
Luxembourg in its beautiful capital Luxembourg City. Because of the Covid-19 pan-
demic, this was changed to an online event.
ETAPS 2021 was the 24th instance of the European Joint Conferences on Theory
and Practice of Software. ETAPS is an annual federated conference established in
1998, and consists of four conferences: ESOP, FASE, FoSSaCS, and TACAS. Each
conference has its own Program Committee (PC) and its own Steering Committee
(SC). The conferences cover various aspects of software systems, ranging from theo-
retical computer science to foundations of programming languages, analysis tools, and
formal approaches to software engineering. Organising these conferences in a coherent,
highly synchronised conference programme enables researchers to participate in an
exciting event, having the possibility to meet many colleagues working in different
directions in the field, and to easily attend talks of different conferences. On the
weekend before the main conference, numerous satellite workshops take place that
attract many researchers from all over the globe.
ETAPS 2021 received 260 submissions in total, 115 of which were accepted,
yielding an overall acceptance rate of 44.2%. I thank all the authors for their interest in
ETAPS, all the reviewers for their reviewing efforts, the PC members for their con-
tributions, and in particular the PC (co-)chairs for their hard work in running this entire
intensive process. Last but not least, my congratulations to all authors of the accepted
papers!
ETAPS 2021 featured the unifying invited speakers Scott Smolka (Stony Brook
University) and Jane Hillston (University of Edinburgh) and the conference-specific
invited speakers Işil Dillig (University of Texas at Austin) for ESOP and Willem Visser
(Stellenbosch University) for FASE. Inivited tutorials were provided by Erika Ábrahám
(RWTH Aachen University) on analysis of hybrid systems and Madhusudan
Parthasararathy (University of Illinois at Urbana-Champaign) on combining machine
learning and formal methods.
ETAPS 2021 was originally supposed to take place in Luxembourg City, Luxem-
bourg organized by the SnT - Interdisciplinary Centre for Security, Reliability and
Trust, University of Luxembourg. University of Luxembourg was founded in 2003.
The university is one of the best and most international young universities with 6,700
students from 129 countries and 1,331 academics from all over the globe. The local
organisation team consisted of Peter Y.A. Ryan (general chair), Peter B. Roenne (or-
ganisation chair), Joaquin Garcia-Alfaro (workshop chair), Magali Martin (event
manager), David Mestel (publicity chair), and Alfredo Rial (local proceedings chair).
ETAPS 2021 was further supported by the following associations and societies:
ETAPS e.V., EATCS (European Association for Theoretical Computer Science),
EAPLS (European Association for Programming Languages and Systems), and EASST
(European Association of Software Science and Technology).
vi ETAPS Foreword
Welcome to the 30th European Symposium on Programming! ESOP 2021 was orig-
inally planned to take place in Luxembourg. Because of the COVID-19 pandemic, this
was changed to an online event. ESOP is one of the European Joint Conferences on
Theory and Practice of Software (ETAPS). It is devoted to fundamental issues in the
specification, design, analysis, and implementation of programming languages and
systems.
This volume contains 24 papers, which the program committee selected among 79
submissions. Each submission received between three and five reviews. After an author
response period, the papers were discussed electronically among the 25 PC members
and 98 external reviewers. The nine papers for which the PC chair had a conflict of
interest (11% of the total submissions) were kindly handled by Patrick Eugster.
The quality of the submissions for ESOP 2021 was astonishing, and very sadly, we
had to reject many strong papers. I would like to thank all the authors who submitted
their papers to ESOP 2021.
Finally, I truly thank the members of the program committee. I am very impressed
by their insightful and constructive reviews – every PC member has contributed very
actively to the online discussions under this difficult COVID-19 situation, and sup-
ported Patrick and me. It was a real pleasure to work with all of you! I am also grateful
to the nearly 100 external reviewers, who provided their expert opinions.
I would like to thank the ESOP 2020 chair Peter Müller for his instant help and
guidance on many occasions. I thank all who contributed to the organisation of ESOP–
the ESOP steering committee and its chair Peter Thiemann as well as the ETAPS
steering committee and its chair Marieke Huisman, who provided help and guidance.
I would also like to thank Alfredo Rial Duran, Barbara Könich, and Francisco Ferreira
for their help with the proceedings.
Program Committee
Stephanie Balzer CMU
Sandrine Blazy University of Rennes 1 - IRISA
Viviana Bono Università di Torino
Brijesh Dongol University of Surrey
Patrick Eugster Università della Svizzera italiana (USI)
Marco Gaboardi Boston University
Dan Ghica University of Birmingham
Justin Hsu University of Wisconsin-Madison
Zhenjiang Hu Peking University
Robbert Krebbers Radboud University Nijmegen
Hongjin Liang Nanjing University
Yu David Liu SUNY Binghamton
Étienne Lozes I3S, University of Nice & CNRS
Corina Pasareanu CMU/NASA Ames Research Center
Alex Potanin Victoria University of Wellington
Guido Salvaneschi University of St. Gallen
Alan Schmitt Inria
Taro Sekiyama National Institute of Informatics
Zhong Shao Yale University
Sam Staton University of Oxford
Alexander J. Summers University of British Columbia
Vasco T. Vasconcelos University of Lisbon
Tobias Wrigstad Uppsala University
Nicolas Wu Imperial College London
Nobuko Yoshida Imperial College London
Damien Zufferey MPI-SWS
Additional Reviewers
1 Introduction
An important long-standing open problem in PL research has been to define a
weak memory model that captures the semantics of concurrent memory accesses
in languages like Java and C/C++. A model is considered good if it can be
implemented efficiently (i.e., if it supports all usual compiler optimizations and
its accesses are compiled to plain x86/ARM/Power/RISCV accesses), and is
easy to reason about. To address this problem, Kang et al. [16] introduced the
promising semantics. This was the first model that supported basic invariant
reasoning, the DRF guarantee, and even a non-trivial program logic [30].
In the promising semantics, the memory is modeled as a set of timestamped
messages, each corresponding to a write made by the program. Each pro-
cess/thread records its own view of the memory—i.e., the latest timestamp for
c The Author(s) 2021
N. Yoshida (Ed.): ESOP 2021, LNCS 12648, pp. 1–29, 2021.
https://doi.org/10.1007/978-3-030-72019-3 1
2 P. A. Abdulla et al.
each memory location that it is aware of. A message has the form (x, v, (f, t], V )
where x is a location, v a value to be stored for x, (f, t] is the timestamp interval
corresponding to the write and V is the local view of the process who made the
write to x. When reading from memory, a process can either return the value
stored at the timestamp in its view or advance its view to some larger timestamp
and read from that message. When a process p writes to memory location x, a
new message with a timestamp larger than p’s view of x is created, and p’s view
is advanced to include the new message. In addition, in order to allow load-store
reorderings, a process is allowed to promise a certain write in the future. A
promise is also added as a message in the memory, except that the local view of
the process is not updated using the timestamp interval in the message. This is
done only when the promise is eventually fulfilled. A consistency check is used
to ensure that every promised message can be certified (i.e., made fulfillable) by
executing that process on its own. Furthermore, this should hold from any future
memory (i.e., from any extension of the memory with additional messages). The
quantification prevents deadlocks (i.e., processes from making promises they are
not able to fulfil). However, the unbounded number of future memories, that
need to be checked, makes the verification of even simple programs practically
infeasible. Moreover, a number of transformations based on global value range
analysis as well as register promotion were not supported in [16].
To address these concerns, Lee et al. developed a new version of the promising
semantics, PS 2.0 [22] PS 2.0 simplifies the consistency check and instead of
checking the promise fulfilment from all future memories, PS 2.0 checks for
promise fulfilment only from a specially crafted extension of the current memory
called capped memory. PS 2.0 also introduces the notion of reservations, which
allows a process to secure a timestamp interval in order to perform a future
atomic read-modify-write instruction. The reservation blocks any other message
from using that timestamp interval. Because of these changes, PS 2.0 supports
register promotion and global value range analysis, while capturing all features
(process local optimizations, DRF guarantees, hardware mappings) of the original
promising semantics. Although PS 2.0 can be considered a semantic breakthough,
it is a very complex model: it supports two memory access modes, relaxed (rlx)
and release-acquire (ra), along with promises, reservations and certifications.
Let PS 2.0-rlx (resp. PS 2.0-ra) be the fragment of PS 2.0 allowing only
relaxed (rlx) (resp. release-acquire (ra)) memory accesses. A natural and funda-
mental question to investigate is the verification of concurrent programs under
PS 2.0. Consider the reachability problem, i.e., whether a given configuration
of a concurrent finite-state program is reachable. Reachability with only ra
accesses has already been shown to be undecidable [1], even without promises
and reservations. That leaves us only the PS 2.0-rlx fragment, which captures the
semantics of concurrent ‘relaxed’ memory accesses in programming languages
such as Java and C/C++. We show that if an unbounded number of promises is
allowed, the reachability problem under PS 2.0-rlx is undecidable. Undecidability
is obtained with an execution with only 2 processes and 3 context switches, where
a context is a computation segment in which only one process is active.
The Decidability of Verification under PS 2.0 3
2 Preliminaries
In this section, we recall the promising semantics [22]. We present here PS 2.0
with three memory accesses, relaxed, release writes (rel) and acquire reads (acq).
The Decidability of Verification under PS 2.0 5
Read-modify-writes (RMW) instructions have two access modes - one for read
and one for write. We keep aside the release and acquire fences (and subsequent
access modes), since they do not affect the results of this paper.
Timestamps. PS 2.0 uses timestamps to maintain a total order over all the
writes to the same variable. We assume an infinite set of timestamps Time,
densely totally ordered by ≤, with 0 being the minimum element. A view is a
timestamp function V : Loc → Time that records the largest known timestamp
for each location. Let T be the set containing all the timestamp functions, along
with the special symbol ⊥. Let Vinit represent the initial view where all locations
are mapped to 0. Given two views V and V , we use V ≤ V to denote that
V (x) ≤ V (x) for x ∈ Loc. The merge operation between two views V and V
returns the pointwise maximum of V and V , i.e., (V V )(y) is the maximum of
V (y) and V (y). Let I denote the set of all intervals over Time. The timestamp
intervals in I have the form (f, t] where either f = t = 0 or f < t, with f, t ∈ Time.
Given an interval I = (f, t] ∈ I, I.frm and I.to denote f, t respectively.
L
Lowering Insertion M ← m is only defined if there exists m in M that is identical
to m = (x, v, (f, t], V ) except for m.View ≤ m .View. Then, M is updated to
L
M ← m = M \{m } ∪ {m}.
Transition System of a Process. Given a process p ∈ P, a state σ of p is
defined by a pair (λ, R) where λ ∈ L is the label of the next instruction to be
executed by p and R : Reg → Val maps each register of p to its current value.
(Observe that we use the set of all labels L (resp. registers Reg) instead of Lp
(resp. Reg (p)) in the definition of σ just for the sake of simplicity.) Transitions
t
between the states of p are of the form (λ, R) = ⇒ (λ , R ) with t is on one of
p
the following forms: , rd(o, x, v), wt(o, x, v), U(or , ow , x, vr , vw ), and SC-fence. A
rd(o,x,v)
transition of the form (λ, R) =====⇒ (λ , R ) denotes the execution of a read
p
instruction of the form $r = xo labeled by λ where (1) λ is the label of the
next instructions that can be executed after the instruction labelled by λ, and
(2) R is the mapping that results from updating the value of the register $r in
t
⇒ (λ , R ) is defined in similar manner
R to v. The transition relation (λ, R) =
p
for the other cases of t where wt(o, x, v) stands for a write instruction that
writes the value v to x, U(or , ow , x, vr , vw ) stands for a RMW that reads the
value vr from x and write vw to it, SC-fence stands for a SC-fence instruction,
and stands for the execution of the other local instructions. Observe that
o, or , ow are the access modes which can be rlx or ra. We use ra for both
t
release and acquire. Finally, we use (λ, R) − → (λ , R ), with t =
, to denote that
p
t
⇒ σ1 =
(λ, R) = ⇒ ··· =
⇒ σn =
⇒ σn+1 = ⇒ (λ , R ).
⇒ ··· =
p p p p p p
Machine States. A machine state MS is a tuple ((J, R), VS, PS, M, G), where
J : P → L maps each process p to the label of the next instruction to be executed,
R : Reg → Val maps each register to its current value, VS = P → T is the process
view map, which maps each process to a view, M is a memory and P S : P → M
maps each process to a set of messages (called promise set), and G ∈ T is the
global view (that will be used by SC fences). We use C to denote the set of
all machine states. Given a machine state MS = ((J, R), VS, PS, M, G) and a
process p, let MS↓p denote (σ, VS(p), PS(p), M, G), with σ = (J(p), R(p)), (i.e.,
the projection of the machine state to the process p). We call MS↓p the process
configuration. We use Cp to denote the set of all process configurations.
The initial machine state MS init = ((Jinit , Rinit ), VSinit , PSinit , Minit , Ginit ) is
one where: (1) Jinit (p) is the label of the initial instruction of p; (2) Rinit ($r) = 0
for every $r ∈ Reg; (3) for each p, VS(p) = Vinit as the initial view (that maps each
location to the timestamp 0); (4) for each p, the set of promises PSinit (p) is empty;
(5) the initial memory Minit contains exactly one initial message (x, 0, (0, 0], Vinit )
per location x; and (6) the initial global view maps each location to 0.
Transition Relation. We first describe the transition (σ, V, P, M, G) − →
p
(σ , V , P , M , G ) between process configurations in Cp from which we induce
the transition relation between machine states.
The Decidability of Verification under PS 2.0 7
m o,m
(P, M ) −→ (P \{m}, M ) (V, P, M ) −−→ (V , P , M )
wt
Process Steps
Read Write
rd(o,x,v) wt(o,x,v)
σ −−−−−−→ σ σ −−−−−−→ σ
p p
o,m o,m
m = (x, v, (−, −], −), V −−→ V m = (x, v, (−, −], −), (V, P, M ) −−→ (V , P , M )
rd wt
(σ, V, P, M, G) −
→ (σ , V , P, M, G) (σ, V, P, M, G) −
→ (σ , V , P , M , G)
p p
SC-fence Promise
m = (−, −, (−, −], K),
SC-fence
−−−−
σ− → σ A
M = M ← m, K ∈ M
p
(σ, V, P, M, G) −
→ (σ , V G, P, M, G V ) (σ, V, P, M, G) −
A
→ σ, V, P ← m, M , G
p
p
Update
U (or ,ow ,x,vr ,vw )
σ −−−−−−−−−−−→ σ , mr = (x, vr , (−, t], −), mw = (x, vw , (t, −], −),
p
or ,mr ow ,mw
V −−−−→ V , (V , P, M ) − → (V , P , M )
−−−−
rd wt
(σ, V, P, M, G) −
→ (σ , V , P , M , G)
p
write to be placed between m and m . The access modes of the reads and writes
in the update follow what has been described for the read and write above.
Promise, Reservation and Cancellation. A process can non-deterministically
promise future writes which are not release writes. This is done by adding a
message m to the memory M s.t. m#M and to the set of promises P . Later, a
relaxed write instruction can fulfil an existing promise. Recall that the execution
of a release write requires that the set of promises to be empty and thus it can not
be used to fulfil a promise. In the reserve step, the process reserves a timestamp
interval to be used for a later RMW instruction reading from a certain message
without fixing the value it will write. A reservation is added both to the memory
and the promise set. The process can drop the reservation from both sets using
the cancel step in non-deterministic manner.
SC fences. The process view V is merged with the global view G, resulting in
V G as the updated process view and global view.
Machine Relation. We are ready now to define the induced transition relation
between machine states. For machine states MS = ((J, R), V S, P S, M, G) and
MS = ((J , R ), V S , P S , M , G ), we write MS −
→ MS iff (1) MS↓p −
→
p p
MS↓p and (J(p ), V S(p ), P S(p )) = (J (p ), V S (p ), P S (p )) for all p = p.
Consistency. According to Lee et al. [22], there is one final requirement on
machine states called consistency, which roughly states that, from every encoun-
tered machine state, all the messages promised by a process p can be certified
(i.e., made fulfillable) by executing p on its own from a certain future memory
(called capped memory), i.e., extension of the memory with additional reservation.
Before defining consistency, we need to introduce capped memory.
Cap View, Cap Message and Capped Memory. The last element of a memory
M with respect to a location x, denoted by mM,x , is an element from M (x)
with the highest timestamp among all elements of M (x) and is defined as
mM,x = maxm∈M (x) m.to. The cap view of a memory M , denoted by VM , is the
view which assigns to each location x, the to timestamp in the message mM
,x .
That is, VM = λx.m .to. Recall that M denote the subset of M containing
M ,x
only messages (no reservations). The cap message of a memory M with respect
to a location x, is given by m
M,x = (x, mM,x .val, (mM,x .to, mM,x .to + 1], VM ).
Then, the capped memory of a memory M , wrt. a set of promises P , denoted
by MP , is an extension of M , defined as: (1) for every m1 , m2 ∈ M with
m1 .loc = m2 .loc, m1 .to < m2 .frm, and there is no message m ∈ M (m1 .loc) such
that m1 .to < m .to < m2 .to, we include a reservation (m1 .loc, (m1 .to, m2 .frm])
in M
P , and (2) we include a cap message m M,x in MP for every variable x unless
mM,x is a reservation in P .
Consistency. A machine state MS = ((J, R), V S, P S, M, G) is consistent if every
process p can certify/fulfil all its promises from the capped memory M P S(p) , i.e.,
((J, R), V S, P S, M →] ((J , R ), V S , P S , M , G ) with P S (p) = ∅.
P S(p) , G) [− ∗
p
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
The Decidability of Verification under PS 2.0 9
are fulfilled if and only if this sequence is same as the promised sequence
ui1 . . . uik . This happens only when i1 , . . . , ik is a PCP solution.
– At the end of promise fulfilment, p1 reaches //.
Our undecidability result is also tight in the sense that the reachability problem
becomes decidable when we restrict ourselves to machine states where the number
of promises is bounded. Further, our proof is robust: it goes through for PS 1.0
[16]. Let us call the fragment of PS 2.0 with only rlx memory accesses PS 2.0-rlx.
Theorem 1. The reachability problem for concurrent programs over a finite data
domain is undecidable under PS 2.0-rlx.
either msg (message) or prm (promise) in M (x), v is the value, p is the process
that added the message/promise, S is a pointer set of processes whose local view
(on x) agrees with the to timestamp of the message/promise. If the type ∈ Γ , the
fifth component (?) is the process id that has reserved the time slot right-adjacent
to the message/promise. ? is a wildcard that may (or not) be matched.
Simple Words. A simple word ∈ Σ ∗ #(Σ ∪ Γ ), and each HWx is a word
∈ (Σ ∗ #(Σ ∪ Γ ))+ . # is a special symbol not in Σ ∪ Γ , which separates the
last symbol from the rest of the simple word. Consecutive symbols of Σ in a
simple word in HWx represent adjacent messages/promises in M (x) and are
hence unavailable for a RMW. # does not correspond to any element from the
memory, and is used to demarcate the last symbol of the simple word.
Fig. 3: A higher order word HW (black) with four embedded simple words (pink).
Higher order words. A higher order word is a sequence of simple words. Figure
3 depicts a higher order word with four simple words. We use a left to right
order in both simple words and higher order words. Furthermore, we extend
in the straightforward manner the classical word indexation strategy to higher
order words. For example, the symbol at the third position of the higher order
word HW in Figure 3 is HW[3] = (msg, 2, p, {p, q}). A higher order word HW is
well-formed iff for every p ∈ P, there is a unique position i in HW having p in its
pointer set; that is, HW[i] is of the form (−, −, −, S, ?) ∈ Σ ∪ Γ s.t. p ∈ S. The
higher order word given in Figure 3 is well-formed. We will use ptr(p, HW) to
denote the unique position i in HW having p in its pointer set. We assume that
all the manipulated higher
g order words are well-formed.
Fig. 4: Map from memories M (x), M (y) to higher order words HWx , HWy .
Each higher order word HWx represents the entire space [0, ∞) of available
timestamps in M (x). Each simple word in HWx represents a timestamp interval
(f, t], while consecutive simple words represent disjoint timestamp intervals (while
preserving order). The memory types constituting each simple word take up
adjacent timestamp intervals, spanning the timestamp interval of the simple word.
The adjacency of timestamp intervals within simple words is used in RMW steps
and reservations. The last symbol in a simple word denotes a message/promise
which, (1) if in Σ, is available for a RMW, while (2) if in Γ , is unavailable for
RMW since it is followed by a reservation. Symbols at positions other than
the rightmost in a simple word, represent messages/promises which are not
12 P. A. Abdulla et al.
end of a simple word with a position larger than ptr(p, HWx ). The memory type
has tag prm (a promise), and the pointer set is empty (since making a promise
does not lift the view of the promising process). Splitting the time interval of a
promise is simulated in LoHoW by inserting a new memory type right before the
corresponding promise memory type (prm, −, p, S), while fulfilment of a promise
by a process p results in replacing (prm, v, p, S) with (msg, v, p, S ∪ {p}).
In PS 2.0-rlx, a process p makes a reservation by adding the pair (x, (f, t])
to the memory, given that there is a message/promise in the memory with
timestamp interval (−, f ]. In LoHoW this is captured by “tagging” the rightmost
memory type (message/promise) in a simple word with the name of the process
that makes the reservation. This requires us to consider the memory types from
Γ = {msg, prm} × Val × P × 2P × P where the last component stores the process
which made the reservation. Such a memory type always appears at the end of a
simple word, and represents that the next timestamp interval adjacent to it has
been reserved. Observe that nothing can be added to the right of a memory type
of the form (msg, v, p, S, q). Thus, reservations are handled as follows.
(Res) Assume the rightmost symbol in a simple word as (msg, v, p, S). To capture
the reservation by q, (msg, v, p, S) is replaced with (msg, v, p, S, q).
(Can) A cancellation is done by removing the last component q from
(msg, v, p, S, q) resulting in (msg, v, p, S).
In the following, we formally define LoHoW and state the equivalence of the
reachability problem in PS 2.0-rlx and LoHoW. For a memory type m = (r, v, p, S)
(or m = (r, v, p, S, q)), we use m.value to denote v. For a memory type (r, v, p, S, ?)
and a process p ∈ P, we define the following: add(m, p ) ≡ (r, v, p, S ∪ {p }, ?)
and del(m, p ) ≡ (r, v, p, S \ {p }, ?). This corresponds to the addition/deletion of
the process p to/from the set of pointers of m. Extending the above notation,
Random documents with unrelated
content Scribd suggests to you:
questions, i. 145;
inception of the Siberian Railway, i. 149–155;
Boxer Rebellion, i. 154, 155;
her intentions as to Manchuria, and the result, i. 157–170;
treaty with China, i. 158, 160;
influence of M. de Witte, i. 171;
the Royal Timber Company, i. 172–184, 306–313;
pyramid of her interests, i. 185, 186;
establishment of a Viceroyalty in the Far East, i. 187;
Kuropatkin’s special reports, i. 188–193;
her bluff, i. 194–198;
reasons for her reverses in the war with Japan, i. 229–309, ii.
1–97;
suggested improvements in the army, ii, 98–176;
summary of the war, ii. 177–287;
conclusions upon the battle of Mukden, i. 288–305;
breakdown of the unit organization and distribution, ii. 314–
335
Russki Invalid, article on military expenditure, i. 111, 112;
on duty and love of country, ii. 78–80
Russo-Chinese Bank, De Witte’s influence over the, i. 172
THE END
BILLING AND SONS, LTD., PRINTERS, GUILDFORD
JUST OUT.
ARTILLERY AND EXPLOSIVES.
ESSAYS AND LECTURES WRITTEN AND DELIVERED AT
VARIOUS TIMES.
By Sir Andrew Noble, K.C.B., D.C.L., F.R.S.
FORTIFICATION:
ITS PAST ACHIEVEMENTS, RECENT DEVELOPMENTS,
FUTURE PROGRESS.
By Colonel Sir George S. Clarke, R.E., K.C.M.G., F.R.S.,
Governor of Bombay.
New Edition Enlarged. With numerous Illustrations.
Medium 8vo. 18s. net.
“The reflections of this great soldier-statesman will be found as
fascinating as they are instructive, and that reasonable intelligence is the
only essential qualification for reading them with profit as well as with
interest and pleasure.”—Westminster Gazette.
OFFICIAL ACCOUNT OF
THE SECOND AFGHAN WAR,
1878–1880.
PRODUCED IN THE INTELLIGENCE BRANCH,
ARMY HEAD QUARTERS, INDIA
Abridged Official Account. With numerous Maps and Illustrations.
Medium 8vo. 21s. net.
“An excellent compendium of the whole war, clearly written and amply
illustrated by photographs, maps, and diagrams.... It is a narrative that will
fascinate the many who love to read about warlike movements.... It is a
story of wise and patient preparation, carefully arranged generalship,
supreme daring, amazing tenacity. Undoubtedly the right thing has been
done in giving to the world a stirring story, which has remained too long,
many will think, a secret record.”—Sheffield Independent.
[3] [1903.—Ed.]
[7] [Liao-yang.—Ed.]
[10] [1903.—Ed.]
[14] Sixty miles by a road which the rains had made very
difficult.
[23] Or sergeant-majors.
[24] [On account of student disorders that had led to the
closing of the Universities.—Ed.]
[59] [? Telegram.—Ed.]
[70] [The reasons for this are given in great detail in Volume
IV.—i.e., Chapters I. to XII. of this book.—Ed.]
[74] [? Houton.—Ed.]
[86] Two regiments of the four in this division had been sent
to reinforce the Composite Rifle Corps, and one regiment to
reinforce the 1st Siberians.
[88] Out of the 80,000 men of the drafts which had arrived.
[91] [? Houton.—Ed.]
[92] One was ordered to support General Launits.
[93] [The body of Vol III. in the original deals in great detail
with the battle of Mukden, and is omitted in this translation.
—Ed.]
[113] The Omsk Regiment lost its way, and for a long time
could not be found, and the Krasnoyarsk and Tsaritsin
Regiments were kept with the 2nd Siberian Corps.
*** END OF THE PROJECT GUTENBERG EBOOK THE RUSSIAN
ARMY AND THE JAPANESE WAR, VOL. 2 (OF 2) ***
1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside
the United States, check the laws of your country in addition to
the terms of this agreement before downloading, copying,
displaying, performing, distributing or creating derivative works
based on this work or any other Project Gutenberg™ work. The
Foundation makes no representations concerning the copyright
status of any work in any country other than the United States.