0% found this document useful (0 votes)
6 views49 pages

Programming Languages and Logics Lecture Notes Cornell Cs4110 Itebooks PDF Download

The document provides lecture notes for CS 4110 on Programming Languages and Logics, focusing on the semantics of programming languages. It discusses various approaches to defining semantics, such as operational, denotational, and axiomatic semantics, and illustrates these concepts using a simple arithmetic expression language. The notes also cover the representation of expressions and the operational semantics, detailing how configurations and transitions are defined in the context of program execution.

Uploaded by

nzungogaiero
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views49 pages

Programming Languages and Logics Lecture Notes Cornell Cs4110 Itebooks PDF Download

The document provides lecture notes for CS 4110 on Programming Languages and Logics, focusing on the semantics of programming languages. It discusses various approaches to defining semantics, such as operational, denotational, and axiomatic semantics, and illustrates these concepts using a simple arithmetic expression language. The notes also cover the representation of expressions and the operational semantics, detailing how configurations and transitions are defined in the context of program execution.

Uploaded by

nzungogaiero
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 49

Programming Languages And Logics Lecture Notes

Cornell Cs4110 Itebooks download

https://ebookbell.com/product/programming-languages-and-logics-
lecture-notes-cornell-cs4110-itebooks-23837668

Explore and download more ebooks at ebookbell.com


Here are some recommended products that we believe you will be
interested in. You can click the link to download.

Foundations Of Probabilistic Logic Programming Languages Semantics


Inference And Learning 2nd Edition Fabrizio Riguzzi

https://ebookbell.com/product/foundations-of-probabilistic-logic-
programming-languages-semantics-inference-and-learning-2nd-edition-
fabrizio-riguzzi-50378238

Foundations Of Probabilistic Logic Programming Languages Semantics


Inference And Learning Fabrizio Riguzzi

https://ebookbell.com/product/foundations-of-probabilistic-logic-
programming-languages-semantics-inference-and-learning-fabrizio-
riguzzi-10467928

Programming Languages And Systems 31st European Symposium On


Programming Esop 2022 Held As Part Of The European Joint Conferences
On Theory And Practice Of Software Etaps 2022 Munich Germany April 27
2022 Proceedings Ilya Sergey
https://ebookbell.com/product/programming-languages-and-systems-31st-
european-symposium-on-programming-esop-2022-held-as-part-of-the-
european-joint-conferences-on-theory-and-practice-of-software-
etaps-2022-munich-germany-april-27-2022-proceedings-ilya-
sergey-44887738

Programming Languages And Systems In Computational Economics And


Finance 2002th Edition Jaime R Marquez

https://ebookbell.com/product/programming-languages-and-systems-in-
computational-economics-and-finance-2002th-edition-jaime-r-
marquez-54965484
Programming Languages And Systems 33rd European Symposium On
Programming Part Ii Stephanie Weirich

https://ebookbell.com/product/programming-languages-and-systems-33rd-
european-symposium-on-programming-part-ii-stephanie-weirich-56563906

Programming Languages And Systems 8th Asian Symposium Aplas 2010


Shanghai China November 28 December 1 2010 Proceedings 1st Edition
Jiang Liu

https://ebookbell.com/product/programming-languages-and-systems-8th-
asian-symposium-aplas-2010-shanghai-china-
november-28-december-1-2010-proceedings-1st-edition-jiang-liu-2014234

Programming Languages And Systems 20th European Symposium On


Programming Esop 2011 Held As Part Of The Joint European Conferences
On Theory And Practice Of Software Etaps 2011 Saarbrcken Germany March
26april 3 2011 Proceedings 1st Edition Andrew W Appel Auth
https://ebookbell.com/product/programming-languages-and-systems-20th-
european-symposium-on-programming-esop-2011-held-as-part-of-the-joint-
european-conferences-on-theory-and-practice-of-software-
etaps-2011-saarbrcken-germany-march-26april-3-2011-proceedings-1st-
edition-andrew-w-appel-auth-2126146

Programming Languages And Systems 18th Asian Symposium Aplas 2020


Fukuoka Japan November 30 December 2 2020 Proceedings 1st Ed Bruno C D
S Oliveira

https://ebookbell.com/product/programming-languages-and-systems-18th-
asian-symposium-aplas-2020-fukuoka-japan-
november-30-december-2-2020-proceedings-1st-ed-bruno-c-d-s-
oliveira-22498018

Programming Languages And Systems 1st Edition Nobuko Yoshida

https://ebookbell.com/product/programming-languages-and-systems-1st-
edition-nobuko-yoshida-23892780
CS 4110 – Programming Languages and Logics
Lecture #2: Introduction to Semantics

What is the meaning of a program? When we write a program, we represent it using sequences of
characters. But these strings are just concrete syntax—they do not tell us what the program actually
means. It is tempting to define meaning by executing programs—either using an interpreter or
a compiler. But interpreters and compilers often have bugs! We could look in a specification
manual. But such manuals typically only offer an informal description of language constructs.
A better way to define meaning is to develop a formal, mathematical definition of the seman-
tics of the language. This approach is unambiguous, concise, and—most importantly—it makes
it possible to develop rigorous proofs about properties of interest. The main drawback is that the
semantics itself can be quite complicated, especially if one attempts to model all of the features of
a full-blown modern programming language.
There are three pedigreed ways of defining the meaning, or semantics, of a language:
• Operational semantics defines meaning in terms of execution on an abstract machine.
• Denotational semantics defines meaning in terms of mathematical objects such as functions.

• Axiomatic semantics defines meaning in terms of logical formulas satisfied during execution.
Each of these approaches has advantages and disadvantages in terms of how mathematically so-
phisticated they are, how easy they are to use in proofs, and how easy it is to use them to imple-
ment an interpreter or compiler. We will discuss these tradeoffs later in this course.

1 Arithmetic Expressions
To understand some of the key concepts of semantics, let us consider a very simple language
of integer arithmetic expressions with variable assignment. A program in this language is an
expression; executing a program means evaluating the expression to an integer. To describe the
syntactic structure of this language we will use variables that range over the following domains:

x, y, z ∈ Var
n, m ∈ Int
e ∈ Exp

Var is the set of program variables (e.g., foo, bar , baz , i , etc.). Int is the set of constant integers
(e.g., 42, 40, 7). Exp is the domain of expressions, which we specify using a BNF (Backus-Naur
Form) grammar:
e ::= x
|n
| e1 + e2
| e1 * e2
| x := e1 ; e2

1
Informally, the expression x := e1 ; e2 means that x is assigned the value of e1 before evaluating e2 .
The result of the entire expression is the value described by e2 .
This grammar specifies the syntax for the language. An immediate problem here is that the
grammar is ambiguous. Consider the expression 1 + 2 * 3. One can build two abstract syntax trees:

+ *

1 * + 3

2 3 1 2

There are several ways to deal with this problem. One is to rewrite the grammar for the same
language to make it unambiguous. But that makes the grammar more complex and harder to
understand. Another possibility is to extend the syntax to require parentheses around all addition
and multiplication expressions:
e ::= x
|n
| (e1 + e2 )
| (e1 * e2 )
| x := e1 ; e2
However, this also leads to unnecessary clutter and complexity. Instead, we separate the “con-
crete syntax” of the language (which specifies how to unambiguously parse a string into program
phrases) from its “abstract syntax” (which describes, possibly ambiguously, the structure of pro-
gram phrases). In this course we will assume that the abstract syntax tree is known. When writing
expressions, we will occasionally use parenthesis to indicate the structure of the abstract syntax
tree, but the parentheses are not part of the language itself. (For details on parsing, grammars,
and ambiguity elimination, see or take CS 4120.)

1.1 Representing Expressions


The syntactic structure of expressions in this language can be compactly expressed in OCaml using
datatypes:

type exp = Var of string


| Int of int
| Add of exp * exp
| Mul of exp * exp
| Assgn of string * exp * exp

This closely matches the BNF grammar above. The abstract syntax tree (AST) of an expression
can be obtained by applying the datatype constructors in each case. For instance, the AST of
expression 2 * (foo + 1) is:

Mul(Int(2), Add(Var("foo"), Int(1)))

In OCaml, parentheses can be dropped when there is one single argument, so the above expression
can be written as:

2
Mul(Int 2, Add(Var "foo", Int 1))

We could express the same structure in a language like Java using a class hierarchy, although it
would be a little more complicated:

abstract class Expr { }


class Var extends Expr { String name; .. }
class Int extends Expr { int val; ... }
class Add extends Expr { Expr exp1, exp2; ... }
class Mul extends Expr { Expr exp1, exp2; ... }
class Assgn extends Expr { String var, Expr exp1, exp2; .. }

2 Operational semantics
We have an intuitive notion of what expressions mean. For example, the 7 + (4 * 2) evaluates to 15,
and i := 6 + 1 ; 2 * 3 * i evaluates to 42. In this section, we will formalize this intuition precisely.
An operational semantics describes how a program executes on an abstract machine. A small-step
operational semantics describes how such an execution proceeds in terms of successive reductions—
here, of an expression—until we reach a value that represents the result of the computation. The
state of the abstract machine is often referred to as a configuration. For our language a configuration
must include two pieces of information:

• a store (also known as environment or state), which maps integer values to variables. Dur-
ing program execution, we will refer to the store to determine the values associated with
variables, and also update the store to reect assignment of new values to variables,
• the expression to evaluate.

We will represent stores as partial functions from Var to Int and configurations as pairs of expres-
sions and stores:
Store ≜ Var ⇀ Int
Config ≜ Store × Exp
We will denote configurations using angle brackets. For instance, ⟨σ, (foo + 2) * (bar + 2)⟩ is a con-
figuration where σ is a store and (foo + 2) * (bar + 2) is an expression that uses two variables, foo
and bar . The small-step operational semantics for our language is a relation →⊆ Config × Config
that describes how one configuration transitions to a new configuration. That is, the relation →
shows us how to evaluate programs one step at a time. We use infix notation for the relation →.
That is, given any two configurations ⟨σ1 , e1 ⟩ and ⟨σ2 , e2 ⟩, if (⟨e1 , σ1 ⟩, ⟨e2 , σ2 ⟩) is in the relation →,
then we write ⟨σ1 , e1 ⟩ → ⟨σ2 , e2 ⟩. For example, we have ⟨σ, (4 + 2) * y⟩ → ⟨σ, 6 * y⟩. That is, we can
evaluate the configuration ⟨σ, (4 + 2) * y⟩ one step to get the configuration ⟨σ, 6 * y⟩.
Using this approach, defining the semantics of the language boils down to to defining the
relation → that describes the transitions between configurations.
One issue here is that the domain of integers is infinite, as is the domain of expressions. There-
fore, there is an infinite number of possible machine configurations, and an infinite number of
possible single-step transitions. We need a finite way of describing an infinite set of possible tran-
sitions. We can compactly describe → using inference rules:

3
n = σ(x)
VAR
⟨σ, x ⟩ → ⟨σ, n⟩

⟨σ, e1 ⟩ → ⟨σ ′ , e′1 ⟩ ⟨σ, e2 ⟩ → ⟨σ ′ , e′2 ⟩ p=m+n


′ LA DD RA DD A DD
⟨σ, e1 + e2 ⟩ → ⟨σ , e′1 + e2 ⟩ ⟨σ, n + e2 ⟩ → ⟨σ ′
, n + e′2 ⟩ ⟨σ, n + m⟩ → ⟨σ, p⟩

⟨σ, e1 ⟩ → ⟨σ ′ , e′1 ⟩ ⟨σ, e2 ⟩ → ⟨σ ′ , e′2 ⟩ p=m×n


′ LM UL RM UL M UL
⟨σ, e1 * e2 ⟩ → ⟨σ , e′1 * e2 ⟩ ⟨σ, n * e2 ⟩ → ⟨σ ′
, n * e′2 ⟩ ⟨σ, m * n⟩ → ⟨σ, p⟩

⟨σ, e1 ⟩ → ⟨σ ′ , e′1 ⟩ σ ′ = σ[x 7→ n]


A SSGN 1 A SSGN
⟨σ, x := e1 ; e2 ⟩ → ⟨σ ′ , x := e′1 ; e2 ⟩ ⟨σ, x := n ; e2 ⟩ → ⟨σ ′ , e2 ⟩

The meaning of an inference rule is that if the facts above the line holds, then the fact below the
line holds. The fact above the line are called premises; the fact below the line is called the conclusion.
The rules without premises are axioms; and the rules with premises are inductive rules. We use the
notation σ[x 7→ n] for the store that maps the variable x to integer n, and maps every other variable
to whatever σ maps it to. More explicitly, if f is the function σ[x 7→ n], then we have
{
n if y = x
f (y) =
σ(y) otherwise

3 Using the Semantics


Now let’s see how we can use these rules. Suppose we want to evaluate the expression (foo + 2) * (bar + 1)
with a store σ where σ(foo) = 4 and σ(bar ) = 3. That is, we want to find the transition for the
configuration ⟨σ, (foo + 2) * (bar + 1)⟩. For this, we look for a rule with this form of a configuration
in the conclusion. By inspecting the rules, we find that the only rule that matches the form of
our configuration is LM UL, where e1 = foo + 2 and e2 = bar + 1 but e′1 is not yet known. We can
instantiate LM UL, replacing the metavariables e1 and e2 with appropriate expressions.

⟨σ, foo + 2⟩ → ⟨e′1 , σ⟩


LM UL
⟨σ, (foo + 2) * (bar + 1)⟩ → ⟨σ, e′1 * (bar + 1)⟩

Now we need to show that the premise actually holds and find out what e′1 is. We look for a rule
whose conclusion matches ⟨σ, foo + 2⟩ → ⟨e′1 , σ⟩. We find that LA DD is the only matching rule:

⟨σ, foo⟩ → ⟨σ, e′′1 ⟩


LA DD
⟨σ, foo + 2⟩ → ⟨σ, e′′1 + 2⟩

We repeat this reasoning for ⟨σ, foo⟩ → ⟨σ, e′′1 ⟩ and find that the only applicable rule is the axiom
VAR:
σ(foo) = 4
VAR
⟨σ, foo⟩ → ⟨σ, 4⟩

4
Since this is an axiom and has no premises, there is nothing left to prove. Hence, e′′1 = 4 and
e′1 = 4 + 2. We can put together the above pieces and build the following proof:

σ(foo) = 4
VAR
⟨σ, foo⟩ → ⟨σ, 4⟩
LA DD
⟨σ, foo + 2⟩ → ⟨σ, 4 + 2⟩
LM UL
⟨σ, (foo + 2) * (bar + 1)⟩ → ⟨σ, (4 + 2) * (bar + 1)⟩

This proves that, given our inference rules, the one-step transition

⟨σ, (foo + 2) * (bar + 1)⟩ → ⟨σ, (4 + 2) * (bar + 1)⟩

is derivable. The structure above is called a “proof tree” or “derivation”. It is important to keep in
mind that proof trees must be finite for the conclusion to be valid.
We can use a similar reasoning to find out the next evaluation step:

6=4+2
A DD
⟨σ, 4 + 2⟩ → ⟨σ, 6⟩
LM UL
⟨σ, (4 + 2) * (bar + 1)⟩ → ⟨σ, 6 * (bar + 1)⟩

And we can continue this process. At the end, we can put together all of these transitions, to get a
view of the entire computation:

⟨σ, (foo + 2) * (bar + 1)⟩ → ⟨σ, (4 + 2) * (bar + 1)⟩


→ ⟨σ, 6 * (bar + 1)⟩
→ ⟨σ, 6 * (3 + 1)⟩
→ ⟨σ, 6 * 4⟩
→ ⟨σ, 24⟩

The result of the computation is a number, 24. The machine configuration that contains the fi-
nal result is the point where the evaluation stops; they are called final configurations. For our
language of expressions, the final configurations are of the form ⟨σ, n⟩.
We write → ∗ for the reflexive and transitive closure of the relation →. That is, if ⟨σ, e⟩ →
∗⟨σ ′ , e′ ⟩ using zero or more steps, we can evaluate the configuration ⟨σ, e⟩ to ⟨σ ′ , e′ ⟩. Thus, we
have:
⟨σ, (foo + 2) * (bar + 1)⟩ → ∗⟨σ, 24⟩

5
CS 4110 – Programming Languages and Logics
Lecture #3: Inductive definitions and proofs

In this lecture, we will use the semantics of our simple language of arithmetic expressions,
e ::= x | n | e1 + e2 | e1 * e2 | x := e1 ; e2 ,
to express useful program properties, and we will prove these properties by induction.

1 Program Properties
There are a number of interesting questions about a language one can ask: Is it deterministic?
Are there non-terminating programs? What sorts of errors can arise during evaluation? Having a
formal semantics allows us to express these properties precisely.

• Determinism: Evaluation is deterministic,


∀e ∈ Exp. ∀σ, σ ′ , σ ′′ ∈ Store. ∀e′ , e′′ ∈ Exp.
if ⟨σ, e⟩ → ⟨σ ′ , e′ ⟩ and ⟨σ, e⟩ → ⟨σ ′′ , e′′ ⟩ then e′ = e′′ and σ ′ = σ ′′ .
• Termination: Evaluation of every expression terminates,
∀e ∈ Exp. ∀σ ∈ Store. ∃σ ′ ∈ Store. ∃e′ ∈ Exp. ⟨σ, e⟩ →∗ ⟨σ ′ , e′ ⟩ and ⟨σ ′ , e′ ⟩ ̸→,
where ⟨σ ′ , e′ ⟩ ̸→ is shorthand for ¬ (∃σ ′′ ∈ Store. ∃e′′ ∈ Exp. ⟨σ ′ , e′ ⟩ → ⟨σ ′′ , e′′ ⟩).

It is tempting to want the following soundness property,


• Soundness: Evaluation of every expression yields an integer,
∀e ∈ Exp. ∀σ ∈ Store. ∃σ ′ ∈ store. ∃n′ ∈ Int. ⟨σ, e⟩ → ∗⟨σ ′ , n′ ⟩,
but unfortunately it does not hold in our language! For example, consider the totally-undefined
function σ and the expression i + j. The configuration ⟨σ, i + j⟩ is stuck—it has no possible transitions—
but i + j is not an integer. The problem is that i + j has free variables but σ does not contain mappings
for those variables.
To fix this problem, we can restrict our attention to well-formed configurations ⟨σ, e⟩, where σ is
defined on (at least) the free variables in e. This makes sense as evaluation typically starts with a
closed expression. We can define the set of free variables of an expression as follows:

fvs(x) ≜ {x}
fvs(n) ≜ {}
fvs(e1 + e2 ) ≜ fvs(e1 ) ∪ fvs(e2 )
fvs(e1 * e2 ) ≜ fvs(e1 ) ∪ fvs(e2 )
fvs(x := e1 ; e2 ) ≜ fvs(e1 ) ∪ (fvs(e2 ) \ {x})
Now we can formulate two properties that imply a variant of the soundness property above:

1
• Progress: For each expression e and store σ such that the free variables of e are contained in
the domain of σ, either e is an integer or there exists a possible transition for ⟨σ, e⟩,

∀e ∈ Exp. ∀σ ∈ Store.
fvs(e) ⊆ dom(σ) =⇒ e ∈ Int or (∃e′ ∈ Exp. ∃σ ′ ∈ Store. ⟨σ, e⟩ → ⟨σ ′ , e′ ⟩)

• Preservation: Evaluation preserves containment of free variables in the domain of the store,

∀e, e′ ∈ Exp. ∀σ, σ ′ ∈ Store.


fvs(e) ⊆ dom(σ) and ⟨σ, e⟩ → ⟨σ ′ , e′ ⟩ =⇒ fvs(e′ ) ⊆ dom(σ ′ ).

The rest of this lecture shows how can we prove such properties using induction.

2 Inductive sets
Induction is an important concept in programming language theory. An inductively-defined set A is
one that is described using a finite collection of axioms and inductive (inference) rules. Axioms of
the form

a∈A
indicate that a is in the set A. Inductive rules
a1 ∈ A ... an ∈ A
a∈A

indicate that if a1 , . . . , an are all elements of A, then a is also an element of A.


The set A is the set of all elements that can be inferred to belong to A using a (finite) number
of applications of these rules, starting only from axioms. In other words, for each element a of A,
we must be able to construct a finite proof tree whose final conclusion is a ∈ A.
Example 1. The set described by a grammar is an inductive set. For instance, the set of arithmetic
expressions can be described with two axioms and three inference rules:

x ∈ Exp n ∈ Exp

e1 ∈ Exp e2 ∈ Exp e1 ∈ Exp e2 ∈ Exp e1 ∈ Exp e2 ∈ Exp


e1 + e2 ∈ Exp e1 * e2 ∈ Exp x := e1 ; e2 ∈ Exp

These axioms and rules describe the same set of expressions as the grammar:

e ::= x | n | e1 + e2 | e1 * e2 | x := e1 ; e2
Example 2. The natural numbers (expressed here in unary notation) can be inductively defined:

n∈N
0∈N succ(n) ∈ N

Example 3. The small-step evaluation relation → is an inductively defined set.

2
Example 4. The multi-step evaluation relation can be inductively defined:

⟨σ, e⟩ → ⟨σ ′ , e′ ⟩ ⟨σ ′ , e′ ⟩ → ∗⟨σ ′′ , e′′ ⟩


R EFL T RANS
⟨σ, e⟩ → ∗⟨σ, e⟩ ⟨σ, e⟩ → ∗⟨σ ′′ , e′′ ⟩

Example 5. The set of free variables of an expression e can be inductively defined:

y ∈ fvs(e1 ) y ∈ fvs(e2 ) y ∈ fvs(e1 ) y ∈ fvs(e2 )


y ∈ fvs(y) y ∈ fvs(e1 + e2 ) y ∈ fvs(e1 + e2 ) y ∈ fvs(e1 * e2 ) y ∈ fvs(e1 * e2 )

y ∈ fvs(e1 ) y ̸= x y ∈ fvs(e2 )
y ∈ fvs(x := e1 ; e2 ) y ∈ fvs(x := e1 ; e2 )

3 Inductive proofs
We can prove facts about elements of an inductive set using an inductive reasoning that follows
the structure of the set definition.

3.1 Mathematical induction


You have probably seen proofs by induction over the natural numbers, called mathematical in-
duction. In such proofs, we typically want to prove that some property P holds for all natural
numbers, that is, ∀n ∈ N. P (n). A proof by induction works by first proving that P (0) holds, and
then proving for all m ∈ N, if P (m) then P (m + 1). The principle of mathematical induction can
be stated succinctly as

P (0) and (∀m ∈ N. P (m) =⇒ P (m + 1)) =⇒ ∀n ∈ N. P (n).

The proposition P (0) is the basis of the induction (also called the base case) while P (m) =⇒ P (m+1)
is called induction step (or the inductive case). While proving the induction step, the assumption that
P (m) holds is called the induction hypothesis.

3.2 Structural induction


Given an inductively defined set A, to prove that a property P holds for all elements of A, we need
to show:
1. Base cases: For each axiom
a ∈ A,
P (a) holds.

2. Inductive cases: For each inference rule


a1 ∈ A ... an ∈ A
a∈A ,

if P (a1 ) and . . . and P (an ) then P (a).

3
Note that if the set A is the set of natural numbers from Example 2 above, then the requirements
for proving that P holds for all elements of A is equivalent to mathematical induction.
If A describes a syntactic set, then we refer to induction following the requirements above as
structural induction. If A is an operational semantics relation (such as the small-step operational se-
mantics relation →) then such an induction is called induction on derivations. We will see examples
of structural induction and induction on derivations throughout the course.

3.3 Example: Progress


Let’s consider the progress property defined above, and repeated here:

Progress: For each store σ and expression e such that the free variables of e are contained in the
domain of σ, either e is an integer or there exists a possible transition for ⟨σ, e⟩:

∀e ∈ Exp. ∀σ ∈ Store. fvs(e) ⊆ dom(σ) =⇒ e ∈ Int or (∃e′ ∈ Exp. ∃σ ′ ∈ Store. ⟨σ, e⟩ → ⟨σ ′ , e′ ⟩)

Let’s rephrase this property in terms of an explicit predicate on expressions:


( )
P (e) ≜ ∀σ ∈ Store. fvs(e) ⊆ dom(σ) =⇒ e ∈ Int or ∃e′ , σ ′ . ⟨σ, e⟩ → ⟨σ ′ , e′ ⟩

The idea is to build a proof that follows the inductive structure given by the grammar:

e ::= x | n | e1 + e2 | e1 * e2 | x := e1 ; e2

This technique is called “structural induction on e.” We analyze each case in the grammar and
show that P (e) holds for that case. Since the grammar productions e1 + e2 and e1 * e2 and x := e1 ; e2
are inductive, they are inductive steps in the proof; the cases for x and n are base cases. The proof
proceeds as follows.

Proof. Let e be an expression. We will prove that


( )
∀σ ∈ Store. fvs(e) ⊆ dom(σ) =⇒ e ∈ Int or ∃e′ , σ ′ . ⟨σ, e⟩ → ⟨σ ′ , e′ ⟩

by structural induction on e. We analyze several cases, one for each case in the grammar for
expressions:
Case e = x: Let σ be an arbitrary store, and assume that fvs(e) ⊆ dom(σ). By the definition of
fvs we have fvs(x) = {x}. By assumption we have {x} ⊆ dom(σ) and so x ∈ dom(σ). Let
n = σ(x). By the VAR axiom we have ⟨σ, x⟩ → ⟨σ, n⟩, which finishes the case.
Case e = n: We immediately have e ∈ Int, which finishes the case.
Case e = e1 + e2 : Let σ be an arbitrary store, and assume that fvs(e) ⊆ dom(σ). We will assume
that P (e1 ) and P (e2 ) hold and show that P (e) holds. Let’s expand these properties. We have

P (e1 ) = ∀σ ∈ Store. fvs(e1 ) ⊆ dom(σ) =⇒ e1 ∈ Int or (∃e′ , σ ′ . ⟨σ, e1 ⟩ → ⟨σ ′ , e′ ⟩)


P (e2 ) = ∀σ ∈ Store. fvs(e2 ) ⊆ dom(σ) =⇒ e2 ∈ Int or (∃e′ , σ ′ . ⟨σ, e2 ⟩ → ⟨σ ′ , e′ ⟩)

and want to prove:

P (e1 + e2 ) = ∀σ ∈ Store. fvs(e1 +e2 ) ⊆ dom(σ) =⇒ e1 + e2 ∈ Int or (∃e′ , σ ′ . ⟨σ, e1 + e2 ⟩ → ⟨σ ′ , e′ ⟩)

We analyze several subcases.

4
Subcase e1 = n1 and e2 = n2 : By rule A DD, we immediately have ⟨σ, n1 + n2 ⟩ → ⟨σ, p⟩, where
p = n1 + n2 .
Subcase e1 ̸∈ Int: By assumption and the definition of fvs we have

fvs(e1 ) ⊆ fvs(e1 + e2 ) ⊆ dom(σ)

Hence, by the induction hypothesis P (e1 ) we also have ⟨σ, e1 ⟩ → ⟨σ ′ , e′ ⟩ for some e′ and
σ ′ . By rule LA DD we have ⟨σ, e1 + e2 ⟩ → ⟨σ ′ , e′ + e2 ⟩.
Subcase e1 = n1 and e2 ̸∈ Int: By assumption and the definition of fvs we have

fvs(e2 ) ⊆ fvs(e1 + e2 ) ⊆ dom(σ)

Hence, by the induction hypothesis P (e2 ) we also have ⟨σ, e2 ⟩ → ⟨σ ′ , e′ ⟩ for some e′ and
σ ′ . By rule RA DD we have ⟨σ, e1 + e2 ⟩ → ⟨σ ′ , e1 + e′ ⟩, which finishes the case.
Case e = e1 * e2 : . Analogous to the previous case.
Case e = x := e1 ; e2 : . Let σ be an arbitrary store, and assume that fvs(e) ⊆ dom(σ). As above, we
assume that P (e1 ) and P (e2 ) hold and show that P (e) holds. Let’s expand these properties.
We have

P (e1 ) = ∀σ. fvs(e1 ) ⊆ dom(σ) =⇒ e1 ∈ Int or (∃e′ , σ ′ . ⟨σ, e1 ⟩ → ⟨σ ′ , e′ ⟩)


P (e2 ) = ∀σ. fvs(e2 ) ⊆ dom(σ) =⇒ e2 ∈ Int or (∃e′ , σ ′ . ⟨σ, e2 ⟩ → ⟨σ ′ , e′ ⟩)

and want to prove:

P (x := e1 ; e2 ) = x := e1 ; e2 ∈ Int or (∃e′ , σ ′ . ⟨σ, x := e1 ; e2 ⟩ → ⟨σ ′ , e′ ⟩)

We analyze several subcases.


Subcase e1 = n1 : By rule A SSGN we have ⟨σ, x := n1 ; e2 ⟩ → ⟨σ ′ , e2 ⟩ where σ ′ = σ[x 7→ n1 ].
Subcase e1 ̸∈ Int: By assumption and the definition of fvs we have

fvs(e1 ) ⊆ fvs(x := e1 ; e2 ) ⊆ dom(σ)

Hence, by induction hypothesis we also have ⟨σ, e1 ⟩ → ⟨σ ′ , e′ ⟩ for some e′ and σ ′ . By


the rule A SSGN 1 we have ⟨σ, x := e1 ; e2 ⟩ → ⟨σ ′ , x := e′1 ; e2 ⟩, which finishes the case and
the inductive proof.

5
CS 4110 – Programming Languages and Logics
Lecture #4: Large-step semantics

1 Large-step operational semantics


In the last lecture we defined a semantics for our language of arithmetic expressions using a small-
step evaluation relation →⊆ Config × Config (and its reflexive and transitive closure → ∗). In this
lecture we will explore an alternative approach—large-step operational semantics—which yields
the final result of evaluating an expression directly.
Defining a large-step semantics boils down to specifying a relation ⇓ that captures the evalua-
tion of an expression. The ⇓ relation has the following type:

⇓⊆ (Store × Exp) × (Store × Int).

We write ⟨σ, e⟩ ⇓ ⟨σ ′ , n⟩ to indicate that ((σ, e), (σ ′ , n)) ∈⇓. In other words, the expression e with
store σ evaluates in one big step to the final store σ ′ and integer n.
We define the relation ⇓ inductively, using inference rules:

n = σ(x)
I NT VAR
⟨σ, n⟩ ⇓ ⟨σ, n⟩ ⟨σ, x⟩ ⇓ ⟨σ, n⟩

⟨σ, e1 ⟩ ⇓ ⟨σ ′ , n1 ⟩ ⟨σ ′ , e2 ⟩ ⇓ ⟨σ ′′ , n2 ⟩ n = n1 + n2
′′ A DD
⟨σ, e1 + e2 ⟩ ⇓ ⟨σ , n⟩

⟨σ, e1 ⟩ ⇓ ⟨σ ′ , n1 ⟩ ⟨σ ′ , e2 ⟩ ⇓ ⟨σ ′′ , n2 ⟩ n = n1 × n2
M UL
⟨σ, e1 * e2 ⟩ ⇓ ⟨σ ′′ , n⟩

⟨σ, e1 ⟩ ⇓ ⟨σ ′ , n1 ⟩ ⟨σ ′ [x 7→ n1 ], e2 ⟩ ⇓ ⟨σ ′′ , n2 ⟩
A SSGN
⟨σ, x := e1 ; e2 ⟩ ⇓ ⟨σ ′′ , n2 ⟩

To illustrate the use of these rules, consider the following proof tree, which shows that evaluating
⟨σ, foo := 3 ; foo * bar ⟩ using a store σ such that σ(bar ) = 7 yields σ ′ = σ[foo 7→ 3] and 21 as a result:

VAR VAR
⟨σ ′ , foo⟩ ⇓ ⟨σ ′ , 3⟩ ⟨σ ′ , bar ⟩ ⇓ ⟨σ ′ , 7⟩
I NT M UL
⟨σ, 3⟩ ⇓ ⟨σ, 3⟩ ⟨σ ′ , foo * bar ⟩ ⇓ ⟨σ ′ , 21⟩
A SSGN
⟨σ, foo := 3 ; foo * bar ⟩ ⇓ ⟨σ ′ , 21⟩

A closer look to this structure reveals the relation between small step and large-step evaluation:
a depth-first traversal of the large-step proof tree yields the sequence of one-step transitions in
small-step evaluation.

1
2 Equivalence of semantics
A natural question to ask is whether the small-step and large-step semantics are equivalent. The
next theorem answers this question affirmatively.

Theorem (Equivalence of semantics). For all expressions e, stores σ and σ ′ , and integers n we have:

⟨σ, e⟩ ⇓ ⟨σ ′ , n⟩ if and only if ⟨σ, e⟩ → ∗⟨σ ′ , n⟩

To streamline the proof, we will work with the following definition of the multi-step relation:

R EFL
⟨σ, e⟩ → ∗⟨σ, e⟩

⟨σ, e⟩ → ⟨σ ′ , e′ ⟩ ⟨σ ′ , e′ ⟩ → ∗⟨σ ′′ , e′′ ⟩


T RANS
⟨σ, e⟩ → ∗⟨σ ′′ , e′′ ⟩

Proof sketch. We show each direction separately.

=⇒: We want to prove that the following property P holds for all expressions e ∈ Exp:

P (e) ≜ ∀σ, σ ′ ∈ Store. ∀n ∈ Int. ⟨σ, e⟩ ⇓ ⟨σ ′ , n⟩ =⇒ ⟨σ, e⟩ → ∗⟨σ ′ , n⟩

We proceed by structural induction on e. We have to consider each of the possible axioms


and inference rules for constructing an expression.
Case e = x: Assume that ⟨σ, x⟩ ⇓ ⟨σ ′ , n⟩. That is, there is some derivation in the large-step
operational semantics whose conclusion is ⟨σ, x⟩ ⇓ ⟨σ, n⟩. There is only one rule whose
conclusion matches the configuration ⟨σ, x⟩: the large-step rule VAR. Thus, we have
n = σ(x) and σ ′ = σ. By the small-step rule VAR, we also have ⟨σ, x⟩ → ⟨σ, n⟩. By the
R EFL and T RANS rules, we conclude that ⟨σ, x⟩ → ∗⟨σ, n⟩, which finishes the case.
Case e = n: Assume that ⟨σ, n⟩ ⇓ ⟨σ ′ , n′ ⟩. There is only one rule whose conclusion matches
⟨σ, n⟩: the large-step rule I NT. Thus, we have n′ = n and σ ′ = σ and so ⟨σ, n⟩ → ∗⟨σ, n⟩
by the R EFL rule.
Case e = e1 + e2 : This is an inductive case. We want to prove that if P (e1 ) and P (e2 ) hold,
then P (e) also holds. Let’s write out P (e1 ), P (e2 ), and P (e) explicitly.

P (e1 ) = ∀n, σ, σ ′ . ⟨σ, e1 ⟩ ⇓ ⟨σ ′ , n⟩ =⇒ ⟨σ, e1 ⟩ → ∗⟨σ ′ , n⟩


P (e2 ) = ∀n, σ, σ ′ . ⟨σ, e2 ⟩ ⇓ ⟨σ ′ , n⟩ =⇒ ⟨σ, e2 ⟩ → ∗⟨σ ′ , n⟩
P (e) = ∀n, σ, σ ′ . ⟨σ, e1 + e2 ⟩ ⇓ ⟨σ ′ , n⟩ =⇒ ⟨σ, e1 + e2 ⟩ → ∗⟨σ ′ , n⟩

Assume that P (e1 ) and P (e2 ) hold. Also assume that there exist σ, σ ′ and n such that
⟨σ, e1 + e2 ⟩ ⇓ ⟨σ ′ , n⟩. We need to show that ⟨σ, e1 + e2 ⟩ → ∗⟨σ ′ , n⟩.
We assumed that ⟨σ, e1 + e2 ⟩ ⇓ ⟨σ ′ , n⟩. This means that there is some derivation whose
conclusion is ⟨σ, e1 + e2 ⟩ ⇓ ⟨σ ′ , n⟩. By inspection, we see that only one rule has a conclu-
sion of this form: the A DD rule. Thus, the last rule used in the derivation was A DD and
it must be the case that ⟨σ, e1 ⟩ ⇓ ⟨σ ′′ , n1 ⟩ and ⟨σ ′′ , e2 ⟩ ⇓ ⟨σ ′ , n2 ⟩ hold for some n1 and n2
with n = n1 + n2 .

2
Other documents randomly have
different content
(Äänettömyys.)

KAIN. Tätä täytynee jo uskoa.

LUSIFER. Ja enemmänkin koitella.

KAIN. Siis … siis lienny!

(Sade lakkaa.)

LUSIFER. Kah! Totta tosiaan!

KAIN. Tää viekottelee jatkamaan…

LUSIFER. Esiin aurinko!

KAIN. Ei, ei! Se Jehovan on silmä.

LUSIFER. Niin, se vanha, mutta uus!

KAIN. Mikä?

LUSIFER. Kainin aurinko!

KAIN. Kainin —? (Äkkiä huomaten). Niin tuli? Kaikkialla tuli!

LUSIFER. Mikä muu? Kättä nosta!

KAIN. Täss' aivan hullaantuu. — Päivä paista!

(Loistava tuliaurinko näytäksen ja valaisee kirkkaasti maiseman.)

KAIN. Oi, oi! Tää huipun huippu on! — Jos vaan mahdollista.
LUSIFER (merkitsevästi). Ol' kerran vaimo, joka ensin uskoi, sitte
epäili, ja sen epäilyksen vuoksi vielä tänään maa ja luonto huokailee.

KAIN. Niinkö —? (Äänettömyys). Niin, niin — miksei! Siks uskon!

LUSIFER. Ja usko nuolen maaliin kantaa, vaikka maalia ei


näkyiskään.

KAIN. Yks seikka sentään arvelemaan saa.

LUSIFER. Jaa?

KAIN. Kuinka sopinevat yhteen taivas sekä maa?

LUSIFER. Onko kateutta?

KAIN. Ei mulla.

LUSIFER. Entä hällä?

KAIN. Ei kai!

LUSIFER. Kai? Ei suinkaan! Hän siellä, minä täällä — kukin hoitaa


omiaan!

KAIN. Se raja selvä olisi.

LUSIFER. Ja on! Laps' hoivaa, ohjausta tarvitsee, kunnes omin


neuvoin tehtäviinsä kykenee — silloin, luulisin, isän sydän iloitsee.

KAIN. Niin niin, niin se on! Nyt elon ongelma jo mulle selviää.
Ihminen näin itse ohjaa onnensa. Minne tahtoo, sinne menee: vettä,
maata, ilmaa myöten; sataa, jyrisee ja salamoi ja päivänsilmän
korkeuteen kohottaa. Kuin sanoisin, kuin nimittäisin: ihminen on…
LUSIFER. Ihminen on maailman…

KAIN. Ihminen on maailman herra!

LUSIFER. Amen!

(Aurinko, joka on vähitellen himmentynyt, katoo. Äänettömyys.)

KAIN (mietteissään). Nyt sen tiedän — nyt sen tiedän…

LUSIFER. — mi on ihmissuvun vastaisuus!

KAIN. Se suuri on! Sit' aatellessa melkein henki herpoutuu.

(Istuutuu; Lusifer hänen taakseen, puhellen olkapään yli.)

Hän itse paratiisin luopi; siinä kärsii, taistelee ja riemuitsee — aina


niinkuin työnsä ansaitsee.

LUSIFER. Ja kirousta muut' ei olekkaan, kuin minkä oma kehnous


ja laiskuus aikaan saa!

KAIN. Ei — se on selvää nyt!

LUSIFER. Hm … vaan jospa tuohon paratiisiin — puikahtaakin


käärmehyt?

KAIN. Käärme? Siis on totta kuitenkin —?

LUSIFER. — että…?

KAIN. — ett' on paha maailmassa?

LUSIFER. Totta! Mutt' ei maassa, puussa, eläimissä, vaan —


ihmisessä itsessään.
KAIN. Niinkö? Jotain sinnepäin oon aina aavistellut. Vaan sen
muoto, tapa?

LUSIFER. Tuskin huomattava. Yks tuntomerkki sentään varma lie.

KAIN. Se?

LUSIFER. Että paha aina yhteispyrinnöstä erii.

KAIN. Oh niin — jo muistan kertomuksen langenneesta enkelistä!

LUSIFER (hämmästyy — hillityn ivallisesti). Joo, joo — ja sama


henki ilmii ihmisissä.

KAIN. Se oisko mahdollista?

LUSIFER. Jos sentään. Tuo suuri maali vaatii suurta ponnistusta —


vaan josp' ei kaikki ponnistakkaan?

KAIN. Mi heitä riivaisi?

LUSIFER. Ken tietää. (Merkitsevästi). Yks karjaa hoitaa,


paimentaa, toinen muuten elon tyynipuolta rakastaa.

KAIN. Sekin totta — kukin seuraa luontoaan.

LUSIFER. Vaan siten voimat pirstotaan — ja asia?

KAIN. Niin, asia! Se on sille vahinko.

LUSIFER. Korvaamaton kerrassaan! Nuo toiset raataa, kärsii,


taistelee ja kaikki alttiiks panee; nää vain päivää paistattaa, sen
korjaavat, min mantu rukka itsestänsä kasvattaa ja mairein kielin
maukuvat: sen Herra antoi armossaan!
KAIN. Ne kehtaavat! — Ei ei, se ei mahdollista.

LUSIFER. Ehkei — sen sitte näkee. Vaan jos sentään — ja jos eivät
tyydy siihenkään, jos suorastansa vastaan iskevät?

KAIN. Vastaan —? Mitä? Ketä?

LUSIFER. Työtä — edistystä. — Tuossa vuori on, sen povi malmin


mahlaa tulvillaan.

KAIN. Hyvä — sen otan oiti käytäntöön!

LUSIFER. Vaan jos se onkin toisen miehen?

KAIN. Kenen?

LUSIFER. Tuon liukkaan lipokielen, joka sanoo: älä koske!

KAIN. Hävytöntä! Hän ei sillä mitään tee. Se kuuluu työlle,


ihmiskunnalle!

LUSIFER. Erehdys, kas täss' on selitys: se on Jehovan! Vai sinä,


julki jumalaton, aijot Luojaa vastaan uhmailla, sen pyhää käsialaa
kopeen mieles mukaan muokkailla? Ee-e! Mä vastaan nousen Herran
puolesta.

KAIN. Ja hän, hän uskaltaa! Ja vielä mairii Jehovaa!

LUSIFER. Viel' enemmänkin uskaltaa! Hänkin tahtoo vallottaa…

KAIN. Vallottaa —? Mitä?

LUSIFER. Sitä, mi on toisen omaa: peltoja ja vainioita, kodin


rauhaa — puolisoita.
KAIN (kiihtyen). Puolisoita —?

LUSIFER. Niin.

KAIN. Piru!

LUSIFER (ilkamoiden). Se läsnä on — vaan sit' ei huomaakkaan:


kaikki, näet, käypi hienoin salapyytein vaan. Se tuli kyllä silmäin
salaikkunoista heijastaa, vaan ken niin viisas, että silmiin osais
kurkistaa. Se siellä hymyy, haastaa, pienin sala-iskuin pilkahtaa, vaan
sitte taasen kaikki hurskauden valhevaippaan verhoutuu.

KAIN. Ja tuota pitäis kärsiä?

LUSIFER. Minkä sille voi!

KAIN. Minkä sille voi —?

LUSIFER. Minkä tosiaan? Kun kivi sattuu saralle, niin — se on


saralla.

KAIN. Ei! Se tieltä raivataan!

LUSIFER. Vaan hänp' ei kivi olekkaan!

KAIN. Ei, vaan saatana!… Mitä —?

LUSIFER. Vuorella liikkuu jotakin.

KAIN (nousten). Kas kummaa!

(Vuori valaistuu. Sen harjanteella joukko sotilaita polvillaan


puolustusasennossa, tulijouset kädessä. Reipas marssin sävel
lähenee, komentosanoja, loistava sotilasosasto jouset olalla
saapuu liehuvin lipuin vuoren juurelle.)

KAIN. Kuinka uljasta! Mi komeus ja välke — aivan silmä huikenee.

(Huuto: laukaiskaa! Tulisia nuolia lentää räiskyen ja tulta


leiskuten molemmin puolin.)

LUSIFER. Kas, kas, punalintuin parvea!

KAIN. Lennä, lintu, lennä! Sin' oot kaikki kaikkialla!

(Huuto: rynnätkää, se kuuluu ihmiskunnalle! Ryntäys


vuorelle, melua, puolustajat verisin päin alas, ilma pimenee,
keskellä vuorta liehuu punainen lippu ja kuuluu voimakas
joukkohuuto voitto, voitto!)

KAIN. Oikein, oikein! Juuri niin. Voitto, voitto! Tulen lipun valta on!

(Näky katoo.)

LUSIFER. Ja maine verraton! Nää tulileikit leimuavat, nää


sankarteot uljahat ei koskaan unhoon häivy. Ne ajast' aikaan, suvust'
sukuun muistotarinoina kiertelee; niistä äidit pienoisilleen kehdon
ääress' kertoilee, ja malmit, kivet muistopatsain kulkijalle kuiskailee.

KAIN. Oi ihanaa, oi ihanaa — olla moinen sankari!

LUSIFER. Vaikka luut jo maassa maatuu, muisto elää ainiaan.

KAIN. Ja ihminen ei kuolekkaan!

LUSIFER. Ei, ei kokonaan! Se maahan vaipuu, mikä maasta on,


vaan tekonsa, ne jääpi elohon ja maineen siivin kiitää tulevaisiin
aikoihin — siinä kuolevaisen kuolemattomuus, siinä elonarvotuksen
selvitys.

KAIN. Jo ymmärrän, jo ymmärrän! Hän voittamaton elossa ja


kuolossa — ihminen on kaiken herra!

LUSIFER. Amen!

(Äänettömyys.)

KAIN. Kuinka merkillistä! Kärsimys ja taistelu on raskas rangaistus


— noin usein huokailtavan kuulin…

LUSIFER. — ja osaks itsekin niin luulin.

KAIN. Ja nyt? Mik' onkaan suurempaa kuin moisen määrän eestä


ponnistaa!

LUSIFER. Se suurta on. Vaan määränpää ei liene yksin haudan


tuollapuolla eikä tulevien sukupolvein onnessa — myös itse elämme!

KAIN. Se totta on, me myöskin elämme —!

LUSIFER. — ja itsessämme työn ja vaivan tuskat tunnemme; myös


itsellemme kuuluu palkinto.

KAIN. Niin, niin; tuon melkein unhotin — se paratiisi, jonka itse


luomme.

LUSIFER. Juuri se! On työn ja tuskan raskaat retket, vaan myöskin


levon rikkaat riemuhetket.

KAIN. On, on — ne täytyy olla! Silloin elon pöytään kaikki


kannetaan, min ihmiskäsi irti saa!
LUSIFER. Kaikki! Majat korkenee ja laajenee, katot hohtaa, seinät
välkkää, seinäin kohottajat juhlapukein riemuilee —

KAIN. — ja pöydät viljelyksen voittoheelmin notkuilee…

LUSIFER. — ja puun ja pensaan hurmonestein välkkyilee…

KAIN. — ja urhon sielu onnen unelmissa keinuilee!

LUSIFER. Ja vielä yksi — jaloin kaikista!

KAIN. Sen jos voisin arvata?

LUSIFER. No koitellaan. Mitä varten luotiin nainen?

KAIN. Miehen avuks vainen!

LUSIFER. Ohoh! Se selityspä melkein raakamainen. Nainen


luonnon jalohelmi on, kun sen kirkkaus ja värit kerran keksitään.
Mies taisteluun ja suuriin tekoihin on luotu, naiselle sen sijaan sulon
hurmat suotu. Tarkotuskin lie? Totta kai! Hän sulollansa
vaivannähneen urhon lemmen mailmaan kohottaa. Näin luonto iskun
luopi, vaan myös voiteen suopi.

KAIN. Oi autuus! Tuon kaiken tunnen, aavistan.

LUSIFER. Vain osittain — on kaikki vasta alussaan. Vaan maku


hienostuu, uudet aistit kasvaa, uudet nautinnot, ja vanhat uuden
tuoksun saa. Ah armas auvo! Yks tuossa, aamuruskon punerrus, sun
rinnoillesi painautuu. Sen kanssa hetken hehkut, niin jo toinen, illan
tyyni hempeys, vienoin kutrein puolehesi kurkottuu —

KAIN. Mitä? Useampiako?


LUSIFER. He, onhan niitä maailmassa! Monta, monta — se näiden
salahurmain tarkotus.

KAIN. Vaan jospa — — Tuo riemuääni tuolla? Valot hämyn läpi


pilkottaa?

(Vuori valostuu ja upea, valaistu sali aukeaa. Perällä


loistopukuinen sankari istuimella, kahden puolen uroita.
Pöytiä virvokkeineen, palvelijoita. Sivuilla korokkeilla nuoria
soittajia, edessään nuoria, kepeästi puettuja impiä, kullakin
kädessään läpikuultava malja, eri maljoissa erivärisiä juomia.
Nuorukaiset alkavat soittaa, immet astuvat keskelle,
liikuttelevat maljojaan soiton mukaan, laulavat, muodostavat
siroja kuvioita, kilauttelevat maljojaan yhteen j.n.e.)

Maljatanssi. (Neidot, vieno säestys.)

Soittopa soimaan,
Nyt karkeloimaan!
Neito sorja,
Hemmen orja
Sankarin iloksi tanssimaan!
Taistoa elo tää —
Juhlina kukkapää!
Kas, kas, kun kimmeltää
Nestehet maljassa;
Helminä päilyy,
Kutsuen häilyy
Siskoset sarjassa.
Nauttios sankari!
Lyhyt on elosi!
Voittajan malja nyt juokaa!
(Tarjoovat maljat sankarille ja muille uroille, tanssivat sivuille.)

Neitojen ja poikain kööri:

Nauttios sankari!
Lyhyt on elosi!
Voittajan malja nyt juokaa!

(Juovat. Sen jälkeen neidot laulavat ja liikehtivät, viidennen


säkeen loputtua hetkinen äänetöntä tanssia soiton säestyksellä;
loppu taasen laulaen.)

Kaihopa salaa
Rinnassa palaa;
Impi sorja,
Lemmen orja
Elonsa tanssihin kiiruhtaa!
Kevät on kerran vaan,
Siksipä riemuitaan!
Kas kuinka silmät nää
Tähtinä välkähtää;
Marjana poski,
Poikako koski?
Älä kysy enempää.
Lempiös, lempeä saa!
Hukkukoon taivas, maa!
Maljanne pohjahan juokaa!

Neidot, pojat ja uroot:

Lempiös, lempeä saa!


Hukkukoon taivas, maa!
Maljanne pohjahan juokaa!

(Juovat.)

KAIN. Niin, hukkukoon! Haihtukoon kuin kastehelmi päivän


suuteloon!

(Hämyhäivähdys, näky katoo.)

KAIN. Oi viipykää, viipykää te armaat hetket ja antakaa mun


täysin rinnoin onneani hengittää! Nyt vasta olentoni kokonansa
tajuan: — ihminen on ilojen ja riemujen herra!

LUSIFER. Amen!

(Hämyhäivähdys, Lusifer katoo, vuori vapisee ja vaipunut


osa kohoaa jälleen entiselleen, aurinko paistaa.)

KAIN. Kaikki taasen ennallaan. Kaikki näyt, elon tulevaisen


hurmaäänet poissa. Vaan ne nähnyt olen ja kuullut kutsumukseni.
Oi, pyhä vuori! Sä mulle maailman näytit niin kirkkaan, loistavan. Nyt
sen tiedän, minne tieni vie ja mi on määränpää. Pois esteet tieltä,
polku selvä on ja maali kirkasna! Tuon kaiken teen, niin totta kuin
sen olen nähnytkin. Eteenpäin! Lentoon, lintu punainen:

min' olen maailman herra!

(Hetkisen äänettömyys. Kain astuu haltioissaan vuorelta


alas, käy raivion poikki ja katoo viidakkoon.)

VUORELLA pitkä, vihlova pilkkanauru.

Esirippu.
KOLMAS NÄYTÖS.

Paikka: Viettävä nurmikko pienen joen rannalla. Joki etualalla.


Taustalla ja osaksi sivuilla uhkeata lehtimetsää. Lähellä metsän rintaa
kaksi kivistä alttaria, toinen kookkaasta laakeasta paadesta neljän
jaluskiven kannatteella, toinen pienemmistä kivistä ladottu, alareuna
turpeilla ympäröity. Alttareilla uhripuut valmiina.

ENSIMÄINEN TOIMINTO.

ELOUHRI.

Puhelun ääntä — KAIN ja AABEL tulevat.

AABEL. — — — itsestään selvänä ilman erikseen päättämättä, ja


sen vuoksi…

Kas tässä! Molemmat valmiina meitä odottamassa. Valitse, veljeni!

KAIN (tuskaisesti). Onhan ne — mutta kuule minua, Aabel!


Jättäkäämme tämä uhri tällä kertaa.

AABEL. Minkä vuoksi? En ymmärrä sinua.


KAIN. Etkö näe? Mieleni on painuksissa. Se ei jaksa kohota.

AABEL. Sitä suurempi syy saada se rukouksen siiville nousemaan.

Ja tiedätkö mitä, veljeni? Minä aavistan, melkein uskon, että


Jehova on tämän uhrin kautta tavalla tai toisella lähettävä uutta
valoa vaellukseemme.

KAIN. Mutta min' en voi voittaa mieltäni tänä hetkenä. Miksi


kiusaat minua? Uhraa yksin!

AABEL. Yksin? Isämme ja äitimme odottavat, Aada ja Silla juuri


eloateriaa valmistavat — miksi häiritä näitä valmistuksia?

KAIN. Häiritä valmistuksia! Valmistuksista — aterioista — muiden


odottamisestako uhri riippuu — vaikkei itse olisikaan valmis?

AABEL. Miksi tulistut, miksi tahallasi käsität minua väärin?


Tiedäthän että pimitetty luontomme usein punoo näennäisiä esteitä.

KAIN. Mutta jospa olisi todellisiakin?

AABEL. Mitä sanot —?

KAIN. Jos en tiedä mistä minun pitäisi häntä kiittää?

AABEL. Ja sinä puhut noin?

KAIN. Puhun! Minä, näet, en saa mitään ottamatta. Niin että jos
kerran kiittää pitää, tekisi mieleni kiittää (tekee voimakkaan liikkeen
nyrkkiin puristetuilla käsillä) — näitä kahta!

AABEL. Kain!
KAIN. Ne suitsuttavat uhria joka päivä. Se on minun uhrini — ja se
pitäisi riittää!

AABEL. Kain! Sinä et voi noin ajatella, minä tiedän sen. Se on vain
hetkellistä ajatuksen harhailua.

Oi veljeni! Olet viime aikoina ollut niin kummallinen, niin synkkä ja


levoton. Ajattelin että uhri sinua rauhottaisi ja sovittaisi. Samaa
arveli Aadakin, kun —

KAIN (kuohahtaen). Aada! Vai niin —? Te järjestätte mitä minun


pitää tehdä — sinä ja Aada!

AABEL. Jehova armahtakoon! En ymmärrä mistä tämä ärtyisyys, jo


eilen illalla olit aivan käsittämätön.

KAIN. Niin, eilisiltapa — —

(Malttuu; taistelee itsensä kanssa, Aabel katsoo häneen


hämmästyneenä.)

KAIN. Eilinen eilisenä, nyt on uhrista puhe! Ja mihin kelpaa uhri,


johon käymme epäilevin mielin? Pitääkö teeskennellä? Ei! Eikö silloin
parempi lykätä — tai vaikkapa kokonaan heittää?

AABEL. Ei. On Jehovalle otollista ja meille itsellemme hyödyllistä


taivuttaa harhailevaa mieltämme korkeampaan päämäärään. Muuten
sielumme maalliset siteet kasvavat liian vahvoiksi.

KAIN. Ja sen vuoksi on valittava taivaalliset pakkositeet — se on


sitte uhri!
AABEL. Kain, Kain! Silmäsi leimuavat niin oudosti ja äänesi niin
kummasti värähtelee. Olet liikutettu —

KAIN. Niin olen, sydänjuuriani myöten, rikki, hajallaan!

AABEL. Sepä juuri osottaa että todella kaipaat uhria. Uhri tuo aina
siunausta, aina mieltämme tyynnyttää ja kohottaa. Valitse alttari!

KAIN. Anna minun mennä, Aabel! Tai salli ainakin olla itse uhria
toimittamatta. Voinhan katsella, kun sinä uhraat, ja vaikkapa sitte
yhtyäkkin — jos voin.

AABEL. Kas niin, veljeni! Mielesi tyyntyy vähitellen. Valitse alttari,


niin käyn hakemassa sytykehiilet.

(Kumartuu korjaamaan paikoilleen erästä irtaantunutta turvetta


toisessa alttarissa.)

ÄÄNI. Hiilet! Missä on tulikaaresi, Kain?

KAIN (kuin havahtuen.)

AABEL (nousten). Sanoitko jotakin, veljeni?

KAIN (syvästi liikutettuna). En — minä vain ajattelin asiaa. Ehkä —


ehkä sentään voisimme koettaa, mieleni tuntuu nyt … tuntuu …
kepeämmältä.

AABEL. Nyt olet taas kuin ennen. Valitse, veljeni, valitse!

KAIN (arvellen). Ei, ei! — No, jos välttämättä täytyy, niin valitse
sinä minun puolestani.
AABEL. Sinun puolestasi? Ei, Kain! Sitä en voisi koskaan tehdä —
se on sinun esikoisoikeutesi.

KAIN. Mitä me synnyn oikeuksista — sinä olet näissä asioissa


esikoinen.

Et suostu! No, niinkuin tahdot — minä olen valinnut.

AABEL (syleilee Kainia). Kiitos, Kain! Kuinka iloinen olen tästä


päätöksestäsi.

Nyt rientäkäämme uhritarpeita hakemaan.

(Menee.)

KAIN. Oikeinko vai väärin? Mieskö? En! Liehijä? En, en koskaan!


Vanhan tavan orja? Ei ei, en sekään! Mutta miksen sitte sano
suoraan kaikkea?

Oh, kuinka nuo vanhat siteet ovat hirmuisen lujat! Maata ja


taivasta, entistä ja tulevaista — ja nykyistä. Kaikki niin sekavaa. En
saanut viime yönä rahtuakaan unta. Näyt — eilisilta! (Kiihtyen). Niin,
eilisilta! Miksi hänen silmänsä Aabelille säihkyivät, vaikka hän on
minun, yksin minun! On muka hyvä, että meitä on kaksi, että Aabel
on kuin illan viileys, niin tyyni, niin… Jumala, jos se on totta, niin
min' en takaa mitä.. Suonissani on jotakin paksua ja raskasta, joka
tunkeutuu kaikkialle, puristaa, ahdistaa henkeä — —

(Äänettömyys.)

Ja sentään voipi kaikki olla vain kiihtyneen mielen harhaa! Katselin


häntä yöllä salaa. Salaa? Luulen nukkuvata katselevani, ja minua
kohtaa kaksi hellää, kyyneleistä silmää. Ne valvovat — ne surevat —
voiko petos katsella sellaisilla silmillä? Ei, ei; olen melkein varma
ettei siinä ole mitään. Mutta sehän se juuri leikkaa, ettei ole täyttä
varmuutta! Oh, miksi tähän unohduin! Aabel kiirehtää.

(Menee. — Hetkisen päästä palaa Aabel, toisessa kädessä


hiiliastia, toisessa valkoinen, teurastettu karitsa.)

AABEL. Kuinka kummallinen sentään on ihmismieli! Se hapuilee ja


harhailee — lankeemuksen kirous ei ole vielä kokonaan verestämme
kadonnut. Mutta hyvä kuitenkin voittaa. Ylistetty olkoon Jehova, että
hyvän voima on niin suuri!

(Puuhailee alttarinsa luona.)

Kuinka hyvä sinä oletkaan pohjaltasi, veljeni! Vain hiukan liiaksi


miettiväinen ja synkkä ja liiaksi raju. Mutta se on kummallista kun
tuntuu niinkuin rakastaisin sinua sen vuoksi vielä enemmän.

(Äänettömyys.)

Hän viipyy. Tarkastanpa vielä kerran että kaikki on kunnossa.

(Kain tulee. Toisessa kädessä tulikaari, toisessa vasu, jossa


on maan tuotteita.)

AABEL. Jopa tulet, veli! — Mutta muotosi on taasen niin synkkä?

KAIN. En tiedä — tuntuu taas niin vaikealta.

AABEL. Ryhtykäämme vain ripeästi uhrilahjoja asettamaan, niin


mieli kyllä keventyy ja synkät ajatukset karkottuvat.

Miten kauniita sinun lahjasi ovat! Kuinka ihmeellisesti Herran


siunaus niissäkin ilmenee. Käy, veljeni, toimeen; minä haen hiukan
ruohoja ja kukkia alttariemme reunojen katteeksi.

(Menee syrjään.)

KAIN. Taas epäilen. Käsi käskee, toinen kieltää.

LUSIFER (ilmautuu puiden takaa tulipunaisessa puvussa — on


Kainille näkymätön koko ajan). Uhraamaan käy, uljas peltomies,
niinkuin veljes kehottaa!

MIKAEL (tulee puiden takaa, valkoisessa puvussa). Kain! Älä tällä


kertaa uhriin kajoo!

LUSIFER (Mikaelille hillityllä raivolla). Sinä! — Uhriin käy, Kain!


On vanha hyvä tapa, että näin kiitosuhrin kannat Jehovalle!

KAIN. En mitään tee vain tavan vuoksi.

LUSIFER (ilkamoisesti). Ohoh!

MIKAEL. Oikein, Kain! Ole uskollinen itsellesi! Suotuisampi Jehova


ilman uhria, kuin jos uhrisi ei sydämen syvyydestä kohoa.

KAIN. Niin sanoo sisimpäni ääni, vaikken Jehovan mieltä


tunnekkaan.

LUSIFER. On sydämessä monta ääntä — mutta uhri, se on aina


kaunis, ylevä. Sitä veljes pyytää, se mieleen on myös vanhusten ja
siskojen.

KAIN. En tahdo olla kenellekään mieliksi!

LUSIFER. No, no! Lie sentään hyvä sopu aina ihmislasten


kaunistus.
KAIN. Sekin totta. Oh tätä ristiriitaa!

MIKAEL. Se kyllä sopuun sointuu, kun vaan pysyt uskollisna


itsellesi.

LUSIFER. Ja myöskin työllesi! Hedelmiäsi, rypäleitäsi, tähkiäsi


katso — se olisi miehen uhri se!

KAIN (ottaa hedelmäoksan käteensä). Ne uljaat, totta tosiaan!

MIKAEL. Pois nuo ajatukset, Kain! Kauvas pois!

LUSIFER. Ne miehen hien hedelmiä ovat, ei itsestänsä kasvaneita!

MIKAEL. Ihminen kylvää ja ihminen korjaa, mutta elämän siemen


oli ennen häntä ja on hänen jälkeensä — se muistaos, Kain.

LUSIFER. Niin, tuo vanha laulu muistaos: kaikki, kaikki lahjaa on!

KAIN. Kylliksi! En moista toitotusta kestää voi!

MIKAEL. Varo itseäsi, Kain! Ajatukset himon siittää, himo synnin,


synti kuoleman.

LUSIFER. Lorua! — Toimeen käy!

MIKAEL. Kain!

LUSIFER (pyytävänrukoilevaa ääntä ilkamoisesti matkien). Kain!

AABEL (tulee). Seisot vielä mietteissäsi — no, alkuhankkeissa jo


sentään. Reippaasti toimeen vaan, niin pian leppoisat uhrisavumme
taas korkeuteen kohoovat.
(Aabel asettaa ruohoja ja kukkia alttarille, sen jälkeen karitsan.
Kain tähkäkimppuja, hedelmäoksia ja marjaterttuja.)

AABEL. Kas niin! Nyt on uhrini valmis. Kuinka puhdas ja viaton


olet, karitsaiseni — puhdas puhtauden herralle korkeuteen
kohoomaan.

(Menee Kainin alttarin luo.)

Ja sinun uhrisi, veljeni, melkein vielä ihanampi! Maan parhaat


antimet noin kilvan Jehovalle kiitosta kantaa. — Nyt uhritulta
sytyttämään, Kain! Mä hiilet käyn.

(Menee oman alttarinsa luo.)

LUSIFER. Hiilet! Se hiiliin puhukoon, ken hiilten orja on!

MIKAEL. Ylpeyttä varo, Kain! Se hiipien tulee sydämeen, mutta


ovet murskain ulos lähtee. Kaareen älä kajoo!

LUSIFER. Ole mies! Kaari on sun!

AABEL (tullen hiiliastia kädessä). Tässä. Ota!

(Äänettömyys.)

Miksi viivyttelet? Niin tuskaiselta näytät.

KAIN. Se olenkin. (Äänettömyys, tarttuu kaareen). Minä — minä —


min' en tarvitse sinun hiiliäsi!

AABEL. Et tarvitse —?

KAIN. En! Mulla on sekä hiilet että tuli tässä.


MIKAEL. Kain! Kavahda!

LUSIFER. Välähdä!

(Kain pyöräyttää oran kaaren jänteeseen ja ottaa tulta.)

KAIN. Siin' on tuli! Mitä siitä sanot?

AABEL (hämmästyneenä). Se onko totta? Vastako keksinyt?

KAIN. Vasta. Siinä se on mun punainen lintuni!

AABEL. Niinkö —?

(Äänettömyys.)

KAIN (epäluuloisesti). Käytkö sanattomaks, Aabel?

AABEL. En, en — minä vain aattelin. Ja nyt ymmärrän.


(Lämpimästi). Oi kuinka iloitsen kanssasi, Kain! Jos olisit tämän
ennen sanonut, olisimme kutsuneet vanhukset ja siskot kanssamme
Herraa kiittämään tästä uudesta armonsa osotuksesta.
Kahdenkertainen syy on sinulla nyt uhrata. Pian tulet leimuamaan!

(Menee.)

LUSIFER. Pokkaa Herraa, poikani — hän viskasi sulle kaaren


taivaasta!

KAIN. Kaaren tein minä!

AABEL (kääntyen). Mitä —? Silmäsi taas leimuavat. Nöyrry, veljeni!


Kaaren teit sinä, mutta ajatuksen antoi Hän, joka ajatustemme
kulkua ohjaa. Iloitse että hän on sinut välikappaleekseen valinnut.
(Menee alttarinsa luo.)

LUSIFER. Kummallista! Vaikket edes jokapäiväisillä polvirukouksilla


tätä kunniaa anellut. Vain suotta aikojasi puuta nakersit ja jännettä
punoilit.

MIKAEL. Sulje korvasi, Kain! Pilkan henki hiipii ympärilläsi —

LUSIFER. — ja viheliäisine hiilineen sun kaartas ivailee!

MIKAEL. Jätä uhri tällä kertaa — olet liian kiihtynyt. Tai jos teet, se
nöyrin mielin tee —

LUSIFER. — ja kysy veikolta saatko vielä tällä kertaa hiukan hiiltä


lainata.

KAIN. Min' en tätä kestä — en, en! Jätän kaikki ja juoksen pois.

LUSIFER. Siinä uskalikko! Verratonta! Se mies vielä maailman


kaataa.

AABEL. Minun uhrini jo syttyi!

LUSIFER. Lainaa hieman tulta, veikko kulta!

MIKAEL. Kain, Kain!

(Kain kiepauttaa kiivaasti tulta ja sytyttää uhrin.)

AABEL. Nyt polvistukaamme pyhään uhritoimitukseen. Aiota,


veljeni!

KAIN. Minä —? Pilkkaako teet?


AABEL. Kuinka voit semmoista ajatella? Aiota, vanhempi veli!

KAIN. Mahdotonta! Olen tottumaton tähän toimeen. Kun kuulen


sinun äänesi ja mieleni ennättää rauhottua, niin ehkä minunkin
henkeni voi kohota.

AABEL (polvistuen). Jumala korkeudessa! Sinä ijankaikkinen


kirkkaus ja kunnia, valta ja vanhurskaus, katsahda lastesi puoleen!
Tässä polvistuu halpa palvelijasi piskuisen uhrinsa ääreen ja uskaltaa
kohottaa silmänsä sinun puoleesi. Mitä on minun uhrini sinun
edessäsi, jolle maa kaikkinensa on vain tomua ja tuhkaa? Ota se
kuitenkin vastaan sydämeni uhrina; anna nöyryyden, rakkauden ja
kiitollisuuden tehdä se itsellesi otolliseksi. Laskeu, oi ijäinen henki,
poveeni, että sinun armosi valjun rintani täyttäisi ja heikot huuleni…

(Vaipuu hiljenevään rukoukseen.)

KAIN (seisoen alttarinsa ääressä). Jehova! Sinä, joka olet suoruus


ja totuus, kuule miehen suoraa rukousta —

AABEL. Ole ylistetty, Herra — veljeni jo rukoilee! Sinä taivutat


sydämet niinkuin —

KAIN. — Olen tottumaton sinua puhuttelemaan ja sanat


kangertavat suussani, mutta sinähän olet kaikkitietävä ja näet etkä
ainoastaan kuule —

LUSIFER. Tyhjät koristeet pois, asiaan! Alku ei ole hullumpi —


ensikertaiselle.

KAIN. — En tee tätä tavan vuoksi; olen tuskaa täynnä, keuhkojani


polttaa ja ääneni pusertuu ahdistetusta rinnasta —
MIKAEL. Herra tuskasi lieventää — häneen turvaudu!

LUSIFER. Jatka, jatka!

KAIN. — En myöskään tee tätä suosiota hankkiakseni enkä pyydä


mitään armoa tai lahjaa; mutta minkä kerran itse hankin, sen pyydän
myös itse pitää —

LUSIFER. Se miehen rukousta se! Jatka!

MIKAEL. Nöyrry, Kain, nöyrry! Synti on sydämesi ovella — sulje


ovi!

KAIN. — Tahdon olla oikea, suora ja rehellinen sekä sinua että


kaikkia muita kohtaan; tahdon myös nurisematta kärsiä omista
teoistani, mutta toivon ettei minun tarvitsisi kärsiä vanhempieni eikä
muiden ihmisten vuoksi, ei myös pahojen olentojen vuoksi, jos
semmoisia on, sillä niiden avaruuteen saattamisessa ei minulla ole
mitään osaa —

MIKAEL. Kain! Sinä uhmaat tietämättäsi taivasta vastaan. Synti


kolkuttaa sydämesi ovella — älä päästä sisään!

LUSIFER. Mies käy suoraa tietä. Jatka!

KAIN. — Jos, niinkuin meille kerrottu on, sinä olet kaiken luoja,
niin sinä olet totisesti suuri, sillä sinä olet maan ja taivaan
suurenmoisesti suunnitellut ja sinun käsialasi ovat moninaiset ja
ihmeelliset —

LUSIFER. Kas niin! Polvillesi, Herran koira! Suutele tomua ja ryömi


nelinkontin — vaivainen mato!
MIKAEL. Pysy lujana, rauha sielullesi etsi!

KAIN. — Mutta elämä on nyt vielä taistelua ja ankaraa


ponnistusta, sentähden minä pyydän: anna meidän liikkua vapaasti
tämän näkyvän piirin sisällä — niin, kuinka sanoisin…

AABEL. — Me tosin menetimme paratiisin ilotarhan, mutta miksi


sitä muistelisimme, kun tämä maallinen elämämme on vain
lyhytaikaista vaellusta oikeata kotimaata kohti. Oo, Herra! Me
odotamme sitä aikaa, jolloin sinä kutsut meidät luoksesi tuonne
ikuisten vuorten kukkuloille, tuonne —

KAIN. — Ja kun meidän täytyy täällä kärsiä ja ponnistella, niin


minä pyydän että saisimme jo täällä nauttia työmme ja taistelumme
hedelmät — sillä tulevasta et ole mitään varmaa meille ilmottanut.
En myöskään tiedä millainen sinä kokonaisuudessasi olet, sillä en ole
koskaan sinua nähnyt enkä kuullut —

MIKAEL. Monestikin! Hyvän ääni sydämessäsi on hänen äänensä.

LUSIFER. Tuo pirisevä karitsanääni, joka sopii niin mainiosti


maailmanvallottajalle. Oivallista!

KAIN. — mutta minä uskon että sinä olet oikeamielinen ja suot


ihmiselle kaiken sen hyvän, minkä hän nyt tunnetuilla tai vasta
löydettävillä keinoilla voi itsellensä vallottaa, niin ettei meitä ajeta
taas korpeen, kun saamme itsellemme asuinpaikan viljellyksi —

MIKAEL. Kain, Kain! Sinä et tiedä mitä puhut! Lopeta rukouksesi.

LUSIFER. Jatka, Kain, jatka! Pelkäisitkö astua totuuden tietä?


AABEL. — Ja minä kiitän sinua, kaiken hyvän Isä, että olet meille
taas uuden armon osottanut ja veljeni hengen tulenvirityksen
keksinnöllä valaissut. Minusta tuntuu —

LUSIFER. Sulla onko korvat, Kain? Siellä toinen nokkelampi jo


kiitosvirren tulikaarestasi virittää.

MIKAEL. Niin tee sinäkin — sulla syy kahdenkertainen.

KAIN. — Minä kiitän sinua, kiitän siitä ettet tehnyt itse kaikkea
valmiiksi, vaan jätit jotain ihmisellekin. Minä kiitän sinua että annoit
hänelle älynlahjan, jolla hän voi luomakunnan valtansa alle alistaa, ja
minä kiitän niistä —

LUSIFER. Niin: kiitän, kiitän, kiitän — se sopii miehelle!

KAIN. — Minä iloitsen niistä voitoista, jotka jo nyt olemme saaneet


luomasi luonnon yli —

LUSIFER. Oikein: sinun luomasi luonnon yli, joka meidän täytyy


ase kädessä itsellemme vallottaa!

MIKAEL. Kain! Synti ryntää sisään — taistele vastaan.

KAIN. — luonnon yli, jonka sinä armossasi…

LUSIFER. — loit karuksi, verenhimoisia petoja täyteen, ikuiseksi


taistelukentäksi!

KAIN. — jonka sinä, sinä — minä sekaun, ajatukseni eivät pysy


koossa.
— Aabel! Kuule minua, Aabel!

LUSIFER. Jatka, jatka! Älä veljesi uhrimieltä häiritse!


MIKAEL. Puhu, Kain! Puhu veljesi kanssa. Vapauta sydämesi
synkkien ajatusten taakasta.

LUSIFER. On uhri harras tehtävä, se itseensäsulkeumista vaatii.


Etkö näe kuinka veljesi on pyhään hartauteen vaipunut?

AABEL. — Nouskoon sydäntemme suitsutus luoksesi kuin ihana


uhrisavu kohoo korkeuksiin; se siellä —

LUSIFER. Tää pyhä uhripaikka on — kumma vaan, tuntuu kuin


kuulisin jostakin lampaan ääntä, karitsan maaritusta.

MIKAEL. Kavahda, Kain, oi kavahda! Herran laupeus sinua


vahvistakoon!

AABEL. — Sinun tiesi tosin ovat joskus meille käsittämättömät,


mutta ken rakkautesi ymmärtää, hän ei kysele enää enempää —

LUSIFER. Aivan oikein: mää, mää, ja bää!

MIKAEL. Turvau Herraan — suuri vaara uhkaa sieluasi!

KAIN (syvässä tuskassa, polvillaan). — Jehova! Minä en tiedä —


minä en ymmärrä; tässä on sinulle uhri — työn uhri — hien uhri —
tuskan uhri —

AABEL (jonka uhri leimahtaa korkeaan lieskaan). — Kiitetty ja


ylistetty, Herra, että palvelijasi puoleen katsahdit!

LUSIFER. Mutta työn ja hien uhri ei kelpaa! — Kain! Sinun uhrisi ei


pala!

MIKAEL. Uhrisi on niinkuin sydämesi. Sydämesi uhri sytytä — hän


ainoastaan siihen katsoo.
KAIN (tuskaisen kiihtyneesti). Minun uhrini ei pala, ei pala!

AABEL (kääntyy Kainiin). Rukoile hartaammin, veljeni, niin


uhritulesi kyllä kohoaa!

(Vaipuu rukoukseen.)

LUSIFER. Etkö näe, etkö kuule, Kain? Makaa päiväpaisteessa ja


katsele kuin lampaat vuonivat — niin olet hänelle otollinen. Ota
lampaannaama, karitsanääni, imartele, matele, suitsuta hänelle
verenhajua — niin olet hänelle otollinen. — Tuossa on vastaus
rehellisen miehen uhriin!

(Tuulenhenki käy, savu painautuu Kainin silmille, joka


on joutunut alttarin sivuun tuulen alle.)

MIKAEL. Mielesi hillitse, Kain — väärennyksen henki kuiskuttaa


korvaasi! Etkö näe että tuuli käy, että —

LUSIFER. — että tuulten herra tahtoo hiukan leikitellä kanssasi —


sinä yksivakainen!

KAIN. Pilkkaatko minua, Jehova? Halveksitko rehellisen työn uhria?


Rakastatko laiskuutta, verta, uhrilampaan tuskia?

MIKAEL. Hahmosi muuttuu, Kain! Nöyryytä sydämesi, niin Jehova


katsoo leppyisesti uhrisi puoleen.

LUSIFER. Miksi maassa makaat? Nouse ylös, ole mies!

KAIN. Minä pakahdun — veri puhkasee suoneni — jotain pyrkii


ulos —
MIKAEL. Älä päästä sitä! Rukoile! Minä rukoilen sinun kanssasi ja
puolestasi.

KAIN. Min' en voi — min' en osaa!

LUSIFER. Ole se kuin olet! Ylös nouse!

(Uusi tuulenhenkäys. Kain karkaa ylös ja tempaa alttarista


puun käteensä.)

MIKAEL. Puu pois, Kain! Pakene, vielä on aika!

LUSIFER. Totuus esiin! Sydämesi puhtaaksi! Eteenpäin!

KAIN. Minä tiesin sen, minä tiesin sen! Ne eivät sovi yhteen — ja
hän ei päästä irti. Mutta minä tahdon! Nyt — juuri — tällä hetkellä —

MIKAEL. Kain, Kain! Kuule minua! Tuo sielusi hurja kiihko —

KAIN (lyöden alttaria puulla ja hajottaen sen). Sinä matelijain luoja


ja matelijain jumala! (lyö) Sinä imartelijain jumala! (lyö) Sinä
käärmeenlähettäjä! (lyö) Sinä rehellisen työn ylenkatsoja! (lyö) Sinä
lihan ja veren syöjä! (lyö) Sinä (lyö) sinä (lyö) sinä —

AABEL (nousten). Kain, Kain! Mitä sinä teet? Älä koske alttariin, se
on Herralle pyhitetty!

KAIN. Älä sekau minun asioihini — alttari on minun! (lyö.)

LUSIFER. Oikein!

MIKAEL. Kain!
AABEL (käy Kainiin päin ojennetuin käsin, aikoen häntä hillitä). Älä
jatka! Jehovan nimessä asetun tätä pyhän häväistystä vastaan!

KAIN (kääntyen päin). Vai niin —? Sinussa on sitäkin?

AABEL. On — mikäli se koskee Jehovaa ja hänen asiaansa.

KAIN (kuin havahtuen). Vai Jehovan nimessä? — Nyt ymmärrän


mikä sinä olet! Pois tieltä!

AABEL. En askeltakaan!

MIKAEL. Oi Herran armo, älä jätä häntä!

KAIN (hyökkää Aabeliin päin, ääni raivosta särkyneenä). Etkö,


etkö? —
Pois tieltä, perkele — ääh!

(Lyö. Aabel kaatuu. — Mikael peittää kasvonsa.)

LUSIFER. Se on täytetty! Minä, minä olen voittanut!

Väliverho.

TOINEN TOIMINTA.

UKKOS-ILMA.

SILLA polvillaan ja AADA seisoallaan Aabelin ruumiin ääressä.


KAIN syrjässä, istuen synkkänä maassa.

SILLA. Untako vai totta? — Nuo kirkkaat tähdet sammuneina,


tummina nuo syvät lammet, joiden pinnalla vielä äsken taivaan
Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.

More than just a book-buying platform, we strive to be a bridge


connecting you with timeless cultural and intellectual values. With an
elegant, user-friendly interface and a smart search system, you can
quickly find the books that best suit your interests. Additionally,
our special promotions and home delivery services help you save time
and fully enjoy the joy of reading.

Join us on a journey of knowledge exploration, passion nurturing, and


personal growth every day!

ebookbell.com

You might also like