The Complexity of Abstract Machines Beniamino Accattoli INRIA, PARSIFAL team

Overview

λ-calculi do not come with a machine model. Advantage: high-level, abstract. Drawback: no evident cost models. This talk: Overview of a cost-based theory of machines for λ-calculi. Overview of joint works with Barenbaum, Dal Lago, Guerrieri, Mazza, Kesner, Sacerdoti Coen.

Semantics & Complexity

Complexity of a λ-term? What is an atomic computational step? The meaning of λ-terms can be defined via: Denotational Semantics: no steps! Abstract Machines: too many steps. Small-Step Operational Semantics: β-steps. β-reduction does not look atomic. Time complexity = number of β-steps?

λ-Calculus

:=

x

|

Language:

t, u, v

β-reduction:

(λx.t)u →β t{x u}

λx.t

|

tu

Let δ be the duplicator combinator, i.e. δ := λx.(xx). Famous divergent term Ω := δδ = (λx.xx)δ →β δδ. So, infinite iterated duplications: Ω →β Ω →β . . .. Less famous, finite duplications seem to blow up the complexity...

Size Explosion — Example

A

A

:= y and

1

= δy = (λx.xx)y →β yy

2



A A A

3

A = δA

n

:= δ

A

0

n−1 ,

or

A

n

:= δ(δ(δ . . . (δ y ) . . .)). | {z } n times

1

→β δ(yy ) →β (yy )(yy )

2

→β →β δ((yy )(yy )) →β ((yy )(yy ))((yy )(yy ))

...

A

n

n

→nβ y 2

Size-Explosion:

A | of the initial term is linear in n;

The size |

n

The number of steps →nβ is linear in n; n

The size |y 2 | of the final term is exponential in n.

Size Explosion — The Moral

Time complexity = number of β-steps? Size-explosion suggests no. Size explosion affects all λ-calculi, and every strategy. Size explosion = inherent problem of meta-level substitution. Moral: meta-level substitution is desperately inefficient.

β-reduction is Reasonable, Indeed

Nonetheless, Time complexity = Number of β-step No paradox: β-steps can be simulated efficiently. Simulation = approximation of meta-level substitution. Small-Step ⇒ Micro-Step Operational Semantics.

Outline Introducing Abstract Machines Step 0: Fix a Strategy Step 1: Searching for Redexes Step 2: Approximating Substitution Introducing Complexity Analysis Analysing the Machines α-Equivalence Variations on a Theme Explicit Substitutions and Logic Efficiency Strong Evaluation

What is an Abstract Machine?

Abstract Machine = Implementation schema for a strategy with sufficiently atomic operations and without too many details

Tasks of Abstract Machines

Fix a deterministic strategy →. An abstract machine for → accounts for 3 tasks: 1. Search: searching for →-redexes; 2. Substitution: efficient approximation of substitution; 3. Names: α-equivalence. Case study for the talk: call-by-name.

Outline Introducing Abstract Machines Step 0: Fix a Strategy Step 1: Searching for Redexes Step 2: Approximating Substitution Introducing Complexity Analysis Analysing the Machines α-Equivalence Variations on a Theme Explicit Substitutions and Logic Efficiency Strong Evaluation

Step Back: Non-Deterministic β

Inductive Definition: (λx.t)u →β t{x u} t →β u λx.t →β λx.u →β is non-deterministic.

(root β)

(λ)

t →β u tv →β uv

(@l)

t →β u vt →β vu

(@r)

Weak Head Call-by-Name

Inductive Definition: (λx.t)u →wh t{x u}

(root β)

t →wh u tv →wh uv

(@l)

Unfolded Definition: (λx.t)uv1 . . . vk →wh t{x u}v1 . . . vk . Of course, →wh is deterministic.

Outline Introducing Abstract Machines Step 0: Fix a Strategy Step 1: Searching for Redexes Step 2: Approximating Substitution Introducing Complexity Analysis Analysing the Machines α-Equivalence Variations on a Theme Explicit Substitutions and Logic Efficiency Strong Evaluation

Weak Head λ-Calculus

search

Searching AM

Two Words about Searching Redexes Inference rules let the search for the redex implicit. Machines make the search explicit. 2 sub-tasks: 1. Search via data-structures storing the evaluation context. 2. Search incrementally, exploiting previous searches. Data-structure for →wh : a stack π of terms for arguments. Let’s see how to implent search only. (without approximating substitution, nor caring about α).

The Searching Abstract Machine Initial state, aka ”compilation”: Stack 

Code t

Machine transitions: Code

Stack

tu

π

λx.t

u:π

Code

Stack

@l

t

u:π



t{x u}

π

The Searching Abstract Machine Code

Stack

tu

π

λx.t

u:π

Code

Stack

@l

t

u:π



t{x u}

π

Decoding machine states to terms: t |  := t

t | u : π := tu | π

Projecting transitions via decoding: Search is Invisible: s β-Steps: s



@l

s 0 implies s = s 0

s 0 implies s →β s 0

Outline Introducing Abstract Machines Step 0: Fix a Strategy Step 1: Searching for Redexes Step 2: Approximating Substitution Introducing Complexity Analysis Analysing the Machines α-Equivalence Variations on a Theme Explicit Substitutions and Logic Efficiency Strong Evaluation

Weak Head λ-Calculus

micro-sub

Micro-Sub AM

search

Searching AM

Micro-Step Substitution

Substitution t{x u} = replacing all occurrences of x with u. Micro-step Substitution = replacing occurrences of x on-demand. Data-structure: an environment for delayed substitutions [x t]. Environment = list [x1 t1 ] . . . [xk tk ], actually modelling a store. Let’s see how to implent micro-step substitution only. (without searching for redexes, nor caring about α).

The Micro-Substitution Abstract Machine

Transition

var

implements substitution on-demand:

Code

Environment

(λx.t)uv1 . . . vk

E

xv1 . . . vk

E : [x t] : E 0

Code

Environment



tv1 . . . vk

[x u] : E

var

t α v1 . . . vk

E : [x t] : E 0

t α denotes t where bound names have been freshly renamed.

The Micro-Substitution Abstract Machine Decoding machine states to terms: Code

Environment

(λx.t)uv1 . . . vk

E

xv1 . . . vk

E : [x t] : E 0

Code

Environment



tv1 . . . vk

[x u] : E

var

t α v1 . . . vk

E : [x t] : E 0

Decoding machine states to terms: t |  := t

t | [x u] : E := t{x u} | E

Projecting transitions via decoding: Micro-Substitution is Invisible: s β-Steps: s



s 0 implies s →β s 0

var

s 0 implies s = s 0 .

Weak Head λ-Calculus

search

micro-sub

micro-sub

Micro-Sub AM

Searching AM

search

Milner AM

Search + Micro-Subs = Milner Abstract Machine Code

Stack

Env

Code

Stack

Env

tu

π

E

@l

t

u:π

E

λx.t

u:π

E



t

π

[x u] : E

x

π

E : [x t] : E 0

var



π

E : [x t] : E 0

Projecting machine transitions: States @l rβ var



Terms = →β =

transitions can be identified with β-steps.

Outline Introducing Abstract Machines Step 0: Fix a Strategy Step 1: Searching for Redexes Step 2: Approximating Substitution Introducing Complexity Analysis Analysing the Machines α-Equivalence Variations on a Theme Explicit Substitutions and Logic Efficiency Strong Evaluation

Complexity of an Abstract Machine

Implementation: t0 →nβ u iff st



s 0 with s 0 = u.

Complexity of an AM = bound of the overhead wrt: 1. Input: size |t0 | of the initial term. 2. Strategy: # of β-steps n. Reasonable abstract machine = cost of st ∗ s 0 is polynomial in |t0 | and n.

Complexity of an Abstract Machine Implementation: t0 →nβ u iff st



s 0 with s 0 = u.

Complexity of an AM = bound of the overhead wrt: 1. Input: size |t0 | of the initial term. 2. Strategy: # of β-steps n. Efficient abstract machine = ∗ 0 cost of st s is linear in |t0 | and n. (Bilinear = linear in |t0 | and n)

Complexity of an Abstract Machine Implementation: t0 →nβ u iff st



s 0 with s 0 = u.

Complexity of an AM = bound of the overhead wrt: 1. Input: size |t0 | of the initial term. 2. Strategy: # of β-steps n. Complexity analyses (wrt |t0 | and n) in 3 steps: 1. Cost of a Transition: bound the cost of implementing single transitions 2. Number of Transitions: bound the length of st



s 0.

3. Cost of the Implementation: compose 1 & 2, according to transition kinds.

x;

Outline Introducing Abstract Machines Step 0: Fix a Strategy Step 1: Searching for Redexes Step 2: Approximating Substitution Introducing Complexity Analysis Analysing the Machines α-Equivalence Variations on a Theme Explicit Substitutions and Logic Efficiency Strong Evaluation

Analysing the Searching AM Code

Stack

tu

π

λx.t

u:π

Remember Size-Explosion:

A

1. Cost of a Transition: Size-Explosion ⇒ cost of

n

Code

Stack

@l

t

u:π



t{x u}

π

n

→nβ y 2 .



exponential in |t0 |;

2. Number of Transitions: linear in n and |t0 |; 3. Cost of the Implementation: Linear in n and exponential in |t0 |, i.e. unreasonable.

Weak Head λ-Calculus

search exponential

micro-sub

micro-sub

Micro-Sub AM

Searching AM

search

Milner AM

Analysing the Micro-Substitution AM

Code

Environment

(λx.t)uv1 . . . vk

E

xv1 . . . vk

E : [x t] : E 0

Code

Environment



tv1 . . . vk

[x u] : E

var

t α v1 . . . vk

E : [x t] : E 0

Two key properties: 1. Subterm Invariant: Every term in a state is a subterm of the initial term t0 ; 2. Maximal Length of ∗var : bound by the number of preceeding

r β /β-steps.

Analysing the Micro-Substitution AM Code

Environment

(λx.t)uv1 . . . vk

E

xv1 . . . vk

E : [x t] : E 0

Code

Environment



tv1 . . . vk

[x u] : E

var

t α v1 . . . vk

E : [x t] : E 0

1. Cost of a Transition (up to search): Subterm Invariant ⇒ linear in |t0 |; 2. Number of Transitions: Maximal Length of ∗var ⇒ quadratic in n; 3. Cost of the Implementation (up to search): Quadratic in n and linear in |t0 |, i.e. reasonable.

Weak Head λ-Calculus

search exponential

micro-sub

micro-sub quadratic

Micro-Sub AM

Searching AM

search

Milner AM

Analysing the Milner AM Code

Stack

Env

Code

Stack

Env

tu

π

E

@l

t

u:π

E

λx.t

u:π

E



t

π

[x u] : E

x

π

E : [x t] : E 0

var



π

E : [x t] : E 0

Analysis (wrt input |t0 | and number of β-steps n): Transition

Cost of One

Number

Total Cost

O(n2 · |t0 |) O(n2 · |t0 |)

@l

O(1)



O(1)

n

O(n)

var

O(|t0 |)

O(n2 )

O(n2 · |t0 |)

Cost of implementing t0 →nwh u is O(n2 · |t0 |), i.e. reasonable.

Weak Head λ-Calculus

search exponential

quadratic micro-sub

micro-sub quadratic

Micro-Sub AM

Searching AM

search bilinear

Milner AM

Outline Introducing Abstract Machines Step 0: Fix a Strategy Step 1: Searching for Redexes Step 2: Approximating Substitution Introducing Complexity Analysis Analysing the Machines α-Equivalence Variations on a Theme Explicit Substitutions and Logic Efficiency Strong Evaluation

Krivine AM MAM uses a single global environment and explicit α-renaming. KAM uses many local environments and no α-renaming.

Code

LEnv

Stack

Code

LEnv

Stack

tu

e

π

c

t

e

(u, e) : π

λx.t

e

c :π

m

t

[x c] : e

π

x

e

π

e

t

e0

π

.

with e(x) = (t, e 0 )

Mutually recursive definition: I

local environment e = list of closures c.

I

closure c = pair of a term t and a local environment e.

Analysing the Krivine AM Code

LEnv

Stack

Code

LEnv

Stack

tu

e

π

c

t

e

(u, e) : π

λx.t

e

c :π

m

t

[x c] : e

π

x

e

π

e

t

e0

π

.

with e(x) = (t, e 0 )

Environment size invariant: |e| ≤ |t0 |. Environments are lists: e costs O(|t0 |), to access the list; Cost of Implementation: O(n2 · |t0 |), i.e. no asymptotic gain. Environments are arrays: c costs O(|t0 |), to duplicate the array Cost of Implementation: O(n2 · |t0 |2 ), i.e. it is even worse!

Outline Introducing Abstract Machines Step 0: Fix a Strategy Step 1: Searching for Redexes Step 2: Approximating Substitution Introducing Complexity Analysis Analysing the Machines α-Equivalence Variations on a Theme Explicit Substitutions and Logic Efficiency Strong Evaluation

Outline Introducing Abstract Machines Step 0: Fix a Strategy Step 1: Searching for Redexes Step 2: Approximating Substitution Introducing Complexity Analysis Analysing the Machines α-Equivalence Variations on a Theme Explicit Substitutions and Logic Efficiency Strong Evaluation

Reasonble AM, at a Distance Moral: search is a detail, substitution is important. Micro-sub AM can be seen as an explicit substitution calculus. Namely, the Linear Substitution Calculus (Milner 2007, A. & Kesner 2012). New view: Weak Head λ-Calculus

micro-sub quadratic

LSC

search bilinear

MAM

General pattern, valid also in call-by-value and call-by-need.

A (Linear) Logical Reading Code

Stack

Env

Code

Stack

Env

tu

π

E

@l

t

u:π

E

λx.t

u:π

E



t

π

[x u] : E

x

π

E : [x t] : E 0

var



π

E : [x t] : E 0

Machine transitions = cut-elimination rules in linear logic: @l

= commutive case;



= multiplicative case;

var

= exponential case.

A (Linear) Logical Reading

Code

Stack

Env

tu

π

E

λx.t

u:π

x

π

Code

Stack

Env

c

t

u:π

E

E

m

t

π

[x u] : E

E : [x t] : E 0

e



π

E : [x t] : E 0

Moral, reloaded: Commutatives = search = traversing evaluation contexts; Commutatives are bilinear in the principals (i.e. m and e).

Outline Introducing Abstract Machines Step 0: Fix a Strategy Step 1: Searching for Redexes Step 2: Approximating Substitution Introducing Complexity Analysis Analysing the Machines α-Equivalence Variations on a Theme Explicit Substitutions and Logic Efficiency Strong Evaluation

The Efficient MAM

The MAM is reasonable (quadratic) but not efficient. Inefficiency = malicious chains of renamings in the environment: [x1 x2 ][x2 x3 ] . . . [xk xk+1 ] generating long and silly substitution sequences.

The Efficient MAM Replace: Code

Stack

Env

λx.t

u:π

E

Code

Stack

Env

t

π

[x u] : E

m

with Code

Stack

Env

λx.t

y :π

E

λx.t

u:π

E

Code

Stack

Env

m1

t{x y }

π

E

m2

t

π

[x u] : E

if u 6= y

Then no malicious chains ⇒ bilinear overhead. On the Value of Variables: In call-by-value/need, it is enough to remove variables from values.

Outline Introducing Abstract Machines Step 0: Fix a Strategy Step 1: Searching for Redexes Step 2: Approximating Substitution Introducing Complexity Analysis Analysing the Machines α-Equivalence Variations on a Theme Explicit Substitutions and Logic Efficiency Strong Evaluation

Introducing Strong Evaluation

Weak evaluation models functional programming languages. Strong evaluation models proof assistants. Strong Abstract Machines = subtle, rich, and unexplored theory.

Beyond Weak Head Normal Form

Weak head normal forms (possibly open): Abstractions: λx.t; Potentially Applied Variables: xu1 . . . uk with k ≥ 0. Two orthogonal extensions of weak head evaluation: Reducing under head abstractions, e.g. t in λx.t;; Reducing (weakly) in the arguments, e.g. u1 . . . uk .

Head MAM Additional data-structure: list of head abstractions Λ. Abs

Code

Stack

Env

Abs

Code

Stack

Env

Λ

tu

π

E

c1

Λ

t

u:π

E

Λ

λx.t

u:π

E

m

Λ

t

π

[x u] : E

Λ

λx.t



E

c2

x :Λ

t



E

Λ

x

π

E

e

Λ



π

E if E (x) = t

One new commutative transition. Complexity Analysis: everything as before, still reasonable.

Reducing in the Arguments

Imagine the MAM stops on xu1 . . . uk . Next, it should evaluate u1 . But it must save x and u2 . . . uk to backtrack after evaluating u1 . In general, entering ui it must save xu1 . . . ui−1 and ui+1 . . . uk . And this has to be done recursively, inside arguments.

Weak MAM Additional component: dump D, storing the application tree. Two phases: evaluation H and backtracking N. Dump

Code

Stack

Env

Ph

Dump

Code

Stack

D D D

tu λx.t x

π u:π π

E E E

H H H

c1 e

D D D

t t tα

u:π π π

D

x

π

E

H

c2

D

x

π

D (t♦π) : D

t u

u:π 

E E

N N

c3

(t♦π) : D D

u tu

 π

m

c4

Complexity Analysis: unreasonable. Search / commutatives are bilinear. Micro-substitution / exponentials are exponential.

Env

Ph

E H [x u] : E H E H if E (x) = t E N if E (x) = ⊥ E H E N

The Strong MAM Frame = Abstractions + Dump. Frame

Code

Stack

Env

Ph

Frame

Code

Stack

F F F F

tu λx.t λx.t x

π u:π  π

E E E E

H H H H

c1

e

F F x :F F

t t t tα

u:π π  π

F

x

π

E

H

c3

F

x

π

F (t♦π) : F x :F

t u t

u:π  

E E E

N N N

c4

(t♦π) : F F F

u tu λx.t

 π 

m c2

c5 c6

Implements Leftmost-Outermost Evaluation. Complexity Analysis: unreasonable.

Env

Ph

E H [x u] : E H E H E H if E (x) = t E N if E (x) = ⊥ E H E N E N

Reasonable Weak MAM A term t is weakly neutral if t = xu1 . . . uk with k ≥ 0 and ui is an abstraction, or a weakly neutral term. Substituting weakly neutral terms is useless for the Weak MAM. Uselessness = no creation / duplication of redexes. Weakly Neutral MAM uses labels to avoid useless substitutions. Weakly Neutral MAM is reasonable.

The Neutral MAM

A term t is neutral if t = xu1 . . . uk with k ≥ 0 and ui is normal. Substituting neutral terms is useless for the Strong MAM. Neutral MAM uses labels to avoid neutral substitutions. Surprise: the Neutral MAM is unreasonable!

The Useful MAM

Additional form of uselessness: Substituting abstractions to variables that are not applied. The Useful MAM: avoids neutral substitutions, and substitute abstractions on-demand. The Useful MAM is reasonable.

Conclusions

New theory of abstract machines. Fine decomposition of β-reduction. Useful: current implementations for Strong Evaluation are unreasonable.

THANKS!

The Complexity of Abstract Machines

Simulation = approximation of meta-level substitution. Small-Step ⇒ Micro-Step Operational Semantics. Page 8. Outline. Introducing Abstract Machines. Step 0: Fix a Strategy. Step 1: Searching for Redexes. Step 2: Approximating Substitution. Introducing Complexity Analysis. Analysing the Machines α-Equivalence.

222KB Sizes 1 Downloads 215 Views

Recommend Documents

The Complexity of Abstract Machines
tutorial, focusing on the case study of implementing the weak head (call-by-name) strategy, and .... Of course, the design of a reasonable micro-step operational semantics depends much on the strategy ..... Let ai be the length of the segment si.

Environments and the Complexity of Abstract Machines
project [1]. Permission to make digital or hard copies of all or part of this work for personal or ...... efficiently. The signature LocalEnv of the expected operations is:.

Distilling Abstract Machines - LIPN, Paris 13 - Université Paris 13
veloped in [1, 3, 4, 7, 10], and bearing similarities with calculi .... SECD, the lazy KAM, and Sestoft's abstract machine for call-by- ... Does it affect in any way the.

Distilling Abstract Machines - LIPN, Paris 13 - Université Paris 13
Context Representation: using environments e (aka lists of sub- stitutions) and stacks π ..... equivalence, is based on particular representatives of α-classes de- fined via the notion of ...... French-Argentinian Laboratory in Computer Science INF

Mapping Automata Simple Abstract State Machines
used data structures, e.g. records with pointer at- tributes ... think of a state as a mapping σ, that assigns each element of ..... This will serve to document our claim.

Mapping Automata Simple Abstract State Machines
cation is a pair of an r-ary function name and an r-tuple of ..... pings. Given an a ∈ U, we define its domain and ..... When composing a specification of a set of au-.

GOVERNMENT OF KERALA Abstract
Dec 11, 2009 - remit the collection under FORM TR 5, to the head of account 8658- ... Thiruvananthapuram Divisional Office, P.B.No.434, St.Joseph's Press.

On the Complexity of Explicit Modal Logics
Specification (CS) for the logic L. Namely, for the logics LP(K), LP(D), LP(T ) .... We describe the algorithm in details for the case of LP(S4) = LP and then point out the .... Of course, if Γ ∩ ∆ = ∅ or ⊥ ∈ Γ then the counter-model in q

The Dynamics of Policy Complexity
policymakers are ideologically extreme, and when legislative frictions impede policy- making. Complexity begets complexity: simple policies remain simple, whereas com- plex policies grow more complex. Patience is not a virtue: farsighted policymakers

the complexity of exchange
population of software objects is instantiated and each agent is given certain internal states ... macrostructure that is at least very difficult to analyse analytically.

GOVERNMENT OF KERALA Abstract
Dec 11, 2009 - remit the collection under FORM TR 5, to the head of account 8658- ... Thiruvananthapuram Divisional Office, P.B.No.434, St.Joseph's Press.

Abstract
Location: Biogeografía de Medios Litorales: Dinámicas y conservación (2014), ISBN 978-84-617-. 1068-3, pages 185-188. Language: Spanish. Near the town of ...

The Kolmogorov complexity of random reals - ScienceDirect.com
if a real has higher K-degree than a random real then it is random. ...... 96–114 [Extended abstract appeared in: J. Sgall, A. Pultr, P. Kolman (Eds.), Mathematical ...

The Kolmogorov complexity of random reals - ScienceDirect.com
We call the equivalence classes under this measure of relative randomness K-degrees. We give proofs that there is a random real so that lim supn K( n) − K(.

GOVERNMENT OF ANDHRA PRADESH ABSTRACT The ... - aptet
Jan 30, 2012 - 1) G.O.Ms.No.4, Education (PE-Ser.II) Department, dt: 09.01.2012. 2) From the Commissioner and Director of School Education, AP,.

The age of intelligent machines
Page 1 of 21. The movie goer.Discography thesound ofanimals.92936048974 - Download Theage ofintelligentmachines.Boob day 3.PreliminaryWork Iam. going to do this preliminarywork so that which forevermoreshall beIcan find the boundaries four my experim

GOVERNMENT OF ANDHRAPRADESH ABSTRACT School ...
Jul 10, 2015 - School Education – Enactment of Act No.1 of 2015- Amendment to the Section 78-A of A.P.. Education Act,- Raising of age of superannuation of teaching and non-teaching staff working in aided Private Educational Institutions from 58 to

GOVERNMENT OF ANDHRA PRADESH ABSTRACT
Sep 23, 2014 - PUBLIC SERVICES – Direct Recruitment – Relaxation of Upper Age Limit ... ensuing recruitments through A.P. Public Service Commission and.

GOVERNMENT OF ANDHRA PRADESH ABSTRACT ...
Nov 19, 2014 - belonging to Scheduled Castes, Scheduled Tribes, Backward Classes, Physically. Challenged, Ex-service Men and women is applicable as ...

GOVERNMENT OF ANDHRA PRADESH ABSTRACT ...
Nov 19, 2014 - ¦B 1¥" § ¤ £ FGGP (¢¤ ¦§ £ 4 ' VD FGGP A ¥" B ¤ ¦ ¦§ ¤8 ¡¢ ¤ ¦ © §¤¥ ...... VD 6(¡©. VD 6§¦£©. Y'. 0§¤8"§8¢ && 1¤8 ©¡ ( ¤ ¢¤ ¥. 6¢ ¡ ¥ 8B. VD 6(¡©.

GOVERNMENT OF ANDHRA PRADESH ABSTRACT
Sep 23, 2014 - PUBLIC SERVICES – Direct Recruitment – Relaxation of Upper Age Limit ... ensuing recruitments through A.P. Public Service Commission and.

Complexity Anonymous recover from complexity addiction - GitHub
Sep 13, 2014 - Refcounted smart pointers are about managing the owned object's lifetime. Copy/assign ... Else if you do want to manipulate lifetime, great, do it as on previous slide. 2. Express ..... Cheap to move (e.g., vector, string) or Moderate

Visualization of data for the debugging of concurrent systems Abstract ...
use the term concurrent system to refer to any type of environment allowing the execution of application code ... Our research is concerned with the use of visualization to aid in the debugging of concurrent systems. The ..... D. N. Kimelman and T. A

User abstract - The Campbell Collaboration
There is an alternative to increased surveillance as a means of preventing crime ... interventions, e.g. street lighting and video surveillance, or street lighting and ...