The Rewriting Machine — Markov's algorithms and constructive mathematics
§ 0 · pencil
A small book about an exact idea

The RewritingMachine

How a pencil, a word, and an ordered list of substitutions became a model of computation — and grew into a school of mathematics that refuses to say “exists” without showing you the thing.

Andrey Markov Jr · normal algorithms · constructive mathematics · what survived
start with a word ↓

Before the machines, before the philosophy, before the Russian school of constructive mathematics, take a pencil. Write a word. Cross out one piece. Write another piece in its place. That single gesture is the only physical act this whole book needs.

Andrey Andreyevich Markov Jr. (1903–1979) — son and full namesake of the great Petersburg mathematician, and a major mathematician in his own right — made a bold proposal: perhaps the vague human word algorithm could be pinned down with almost nothing more than a finite alphabet, a finite ordered list of substitutions, and a strict rule about which substitution fires first. He called the results normal algorithms, and in 1954 he devoted a monograph of nearly four hundred pages to their theory.

Most of what follows is Markov's mathematics: the machine itself, the theorems it made possible — including several notable impossibility results — and the school of constructive mathematics that grew around one stubborn question: what should “there exists” mean when a proof is required to compute? A short coda at the end follows the same rewriting instinct one generation forward, into Valentin Turchin's language Refal.

How to read the machine

Five kinds of box recur. Learn them once:

Think boxA conceptual snag worth stopping for. These are where the philosophy hides.
Exact statement
The informal picture is over. Here is the definition or theorem, with its conditions stated precisely.
Run it by hand
A concrete word.
A concrete ordered rule list.
Every rewrite shown, one step at a time.
Keep thisThe one sentence from a section worth carrying forward.
Going deeperHistory, logic, or a technical subtlety. The main path survives if you skip it on a first reading.

The live panels are not animations pretending to be algorithms. They are small interpreters written for this page, and every program they contain was machine-tested before being printed here. Press the buttons. Change the words. Break them.

Reading note · where the claims come fromThe spine is Markov's 1954 monograph Theory of Algorithms, the Stanford Encyclopedia of Philosophy's article on constructive mathematics, the Mints–Nikolenko history of the Leningrad school, standard references on undecidability, and, for the coda, Turchin's writings and the Refal-5λ documentation. Every named theorem, date, and quotation was checked against a cited source; the full list, with links, is in the Reading Room at the end. Where a claim is an interpretation or an analogy rather than a documented fact, it is presented as such rather than as settled history.
CHAPTER 1 no tapes · no states · no mystique

Cross out this piece. Write that piece.

Suppose our alphabet contains three symbols: a, b, and c. A word is a finite row of them: abba, c, the empty word, whatever. Now write one instruction:

A substitution
ab → c   means: find ab inside the current word and replace it by c.

On the word abab, the instruction could apparently act in two places. But an algorithm cannot shrug and say “whichever.” It must say exactly what happens next. Markov's mechanism decides for us: replace the leftmost occurrence.

ONE REWRITE IS A SMALL PIECE OF SURGERY abab cab ab → c the second ab waits
One cut, one paste. Even when the pattern occurs twice, a single step rewrites only one occurrence: the leftmost one, for the first applicable rule.

Try the real thing before learning its name

The little machine below adds unary numbers. Three is 111; two is 11. The sum is written 111+11 — one plus sign between two blocks of strokes, and that shape is part of the specification. The first rule shuffles the plus rightward, one step at a time. The second rule erases it and halts immediately.

Machine 01 · unary addition

Input contract: words of the form 1…1+1…1 (exactly one plus). Edit it, then step through the ordered substitutions. ε means “write nothing.” The dot marks a terminal substitution that stops the machine.

ready · no rule inspected yet
Run it by hand · 3 + 2
111+11 — the first rule sees 1+ and swaps it to +1.
11+111 — the plus has moved one place right.
1+1111
+11111
11111 — the terminal rule + →● ε fires: erase the plus and stop. Four rewrite steps; five strokes remain, and 3 + 2 = 5.
Keep thisNothing in the machine “knows” addition. It knows literal words and literal substitutions. Meaning lives in the encoding and in our proof that the rewriting behaves like addition — on inputs of the promised shape. That separation — syntax first, interpretation second, correctness proved rather than assumed — runs through everything Markov did next.
CHAPTER 2 no room left for ambiguity

The four decisions hidden in one step

“Apply a rewrite rule” sounds simple until two rules match, or one rule matches twice, or a rule says we are done. A normal algorithm gets its exactness from four decisions. Forget any one of them and you have described a family of possible computations, not this single deterministic machine.

current word scan the rules from the top:first rule whose left side occurs within that rule:replace the leftmost occurrence ordinary rule?loop with the new word terminal rule?halt with the new word
The entire control structure. Priority chooses the rule; leftmostness chooses the occurrence; the terminal mark chooses whether the new word is an intermediate state or the final answer.

Decision 1 · rules are ordered

The list is not a bag: rule 1 is privileged over rule 2, rule 2 over rule 3, and so on, and this ordering is not an implementation detail but part of the program itself. The demo below proves it: same word, same two rules, and swapping the order changes the answer.

Machine 02 · priority changes the answer

Input is always ab. Two rules: ab → x and a → y. Swap which one comes first and watch the result flip.

Decision 2 · the first applicable rule wins

The machine scans from the top and stops searching the rule list as soon as it finds a left side that occurs in the word; a later rule may match more characters, look cleverer, or lead to a nicer answer, but none of that matters, because earlier means earlier.

Decision 3 · the leftmost occurrence wins

Once the rule has been chosen, scan the word from the left and replace only the first occurrence you find: there is no parallel rewriting, so exactly one spot in the word changes per step.

Decision 4 · some substitutions are final

An ordinary substitution says “rewrite, then begin another step.” A terminal substitution says “rewrite, and this result is the output.” Books use several notations for the terminal arrow or dot; the notation varies, the control idea does not.

A common wrong pictureA Markov normal algorithm is not “keep applying all matching string rules until nothing changes” — that describes other rewriting systems, not this one. Here, each step performs an ordered search and one selected replacement, and the algorithm can also stop deliberately, via a terminal rule.
Why so strict?Because Markov was defining an algorithm, not merely a relation between words. An algorithm must say what the next act is. Priority and leftmostness turn a potentially branching rewrite system into a single, reproducible history — exactly the kind of object you can prove theorems about.
CHAPTER 3 now we earn the word “normal”

A normal algorithm, exactly

We can now say the thing without metaphor: the definition itself is small, and its power comes not from a rich instruction set but from iteration — a tiny exact step, repeated without a promised bound.

Definition · Markov normal algorithm
Fix a finite alphabet. A normal algorithm is a finite ordered list of substitution formulas u → v and terminal substitution formulas u →● v, where u and v are words over that alphabet. To run it on an input word: scan the formulas in order; choose the first formula whose left side u occurs in the word; replace the leftmost occurrence of u by v. If the formula was terminal, halt with the new word; otherwise repeat from the top. If no left side occurs at all, halt with the current word.

One more possibility remains, and it matters: the rewrites may continue forever.

Machine 03 · the polite word is “partial”

One rule: a → aa. There is always another a to rewrite, so this machine never halts. The “step budget” slider only limits how many steps this page will watch; it does not make the algorithm stop.

8
Partial functionA program may return an output for some inputs and run forever on others. What it computes is therefore a partial function. Divergence is not an embarrassing hole to be patched out of the theory; it is one of the phenomena the theory is built to describe. Keep the word — it returns when we reach constructive logic.

Learning to actually program the thing

Two rules for addition may look like a lucky accident. It is not: there are reusable idioms. The most important is the marker — a fresh symbol, outside the input alphabet, that acts as a cursor. Rules move the marker through the word, transforming letters as it passes; a final rule deletes it and halts. A marker is, in effect, a machine “head” built out of nothing but substitutions. The gallery below contains nine small programs; each was run against an exhaustive machine test before being printed on this page.

Machine 04 · a small program gallery

Run it by hand · the marker idiom, on “swap a↔b”, input ab
ab — no rule mentioning m applies, so the last rule ε → m fires: the empty word occurs at the far left, and inserting m there gives mab.
mab — rule ma → bm: the marker eats an a, writes a b, and moves right: bmb.
bmb — rule mb → am: bam.
bam — the marker has reached the end, so only m →● ε applies: erase it and halt with ba.
Why the rule order is load-bearing herePut ε → m anywhere but last and it fires on every step, flooding the word with markers. Put m →● ε before the two travel rules and the marker dies at birth. The ordered list is doing the work a Turing machine does with states — which is a first hint of the equivalence coming in Chapter 5.

What such a machine computes

At the raw level: a partial function from words to words. But words can encode numbers, tuples, formulas, graphs, proofs, even other programs — anything with a finite symbolic description. Unary numerals are clumsy but honest; binary is efficient; delimiters pack several values into one word. Once the encoding is fixed, a string machine becomes a machine for mathematical objects.

number 13formulafinite graphprogram ENCODEfinite words only REWRITEu → vsame tiny machine
The alphabet is not the subject matter. It is the transport layer. Once a coding is fixed, word rewriting can stand for computation on numbers or any other finitely presented object.
The word “normal”Do not hear “ordinary,” and do not hear the “normal” of normal distributions or normal forms in linear algebra. In this historical context, “normal algorithm” is simply Markov's own name for this disciplined form of algorithm (in Russian, нормальный алгорифм — the older spelling алгорифм stands in the monograph's very title). English texts also write Markov algorithm. All of these name the object defined above.
CHAPTER 4 a definition with consequences

What Markov wanted the machine for

The 1930s and 1940s had already produced several exact models of effective calculation: Gödel–Kleene recursive functions, Turing's machines, Church's λ-calculus. Markov did not arrive in an empty field. His normal algorithms belong to the same effort: replace the pre-mathematical phrase “there is a mechanical procedure” with a precise object that can itself be studied.

But first, a disambiguation this subject needs:

TWO MATHEMATICIANS, ONE NAME A. A. Markov Sr 1856 – 1922 probability · number theory chains · the moment problem a pillar of the Petersburg school A. A. Markov Jr 1903 – 1979 normal algorithms constructive mathematics the subject of this book father → son · both simply “A. A. Markov” on their papers
Same name, two great mathematicians. The elder Markov — a pillar of Chebyshev's Petersburg school — left his name across probability (chains, his inequality), analysis (the moment problem, the Markov brothers' inequality), and number theory (the Markov spectrum). The younger built the theory of algorithms, and added Markov's principle, Markov's rule, and Markov's theorem in knot theory.

The son's path is worth a timeline, because the machine arrives in the middle of a long, wide-ranging career, and its arrival coincides with a philosophical turn.

1903
Born in Saint Petersburg, son of A. A. Markov the elder — probabilist, analyst, number theorist, one of the most celebrated Russian mathematicians of his day.
1936
Markov's theorem in knot theory.
He proves the theorem on closed braids that still carries his name — a first sign of a lifelong instinct for problems about finite presentations of infinite objects. He works in Leningrad; the St Petersburg logic laboratory still names him the founder of its school of mathematical logic.
1947
The word problem for semigroups is unsolvable.
Markov and Emil Post prove it independently — one of the first undecidability results about an ordinary algebraic object. Chapter 6 tells this story. The Encyclopedia of Mathematics dates the concept of the normal algorithm itself to this same 1947 research.
LATE 1940s
The constructive turn.
He begins developing what the literature now calls recursive constructive mathematics, with normal algorithms as its notion of procedure.
1951
Unrecognizability, stated early.
Markov proves that whole families of properties of associative calculi admit no recognition algorithm — the pattern later called a “Markov property” and extended to groups by Adian and Rabin. Chapter 6 follows the chain.
1954
Theory of Algorithms.
Volume 42 of the Proceedings of the Steklov Institute, pp. 3–375. One historian of the school, Boris Kushner, remarks that its scrupulous correctness proofs for specific normal algorithms can be read as the first examples of program-correctness verification.
MID-1950s →
The Moscow years.
Markov moves to Moscow and gathers the Moscow constructive school around him; a parallel Leningrad school grows under his student N. A. Shanin. Chapter 7 maps both cities.
1958
The homeomorphy theorem.
He proves that deciding whether two manifolds have the same shape is algorithmically unsolvable in dimensions above three — undecidability striking deep inside geometry.
1979
Dies in Moscow.
Motivation, more carefully statedIt would be too neat to say “Markov invented normal algorithms because Turing machines were philosophically wrong,” and he did not; the honest point is the fit: direct symbolic transformations gave him a technically universal model and a congenial language for a mathematics that insisted on effective constructions. Two needs, one tool.

A machine close to the mathematician's hand

A Turing machine asks you to imagine a head, a set of states, and a tape scrolling underneath. A normal algorithm asks you to look at the expression already written on the page and perform textual surgery on it. For problems that are themselves about words, group presentations, formulas, and symbol systems, that directness is a real advantage — as the impossibility results two chapters ahead will show.

The program is a list of local textual acts. The computation is the history of the text.

CHAPTER 5 tiny instruction set · full computational power

Four costumes, one computational power

Can this little substitution machine do everything a computer can? In the formal sense of computability — yes. Normal algorithms compute the same partial functions as Turing machines, λ-calculus, and the recursive functions, once suitable encodings are fixed. The models look nothing alike, yet they carve out exactly the same class. Any one can be compiled into any other.

the same class ofcomputablepartial functions Turing machinehead · tape · states λ-calculusabstraction · application recursive functionscomposition · recursion · μ normal algorithmordered substitutions different mechanics · provably the same reach, once encodings are fixed
Four costumes for universality. The equivalence is a theorem about formal models. It is not, by itself, a proof of the Church–Turing thesis about the informal notion of “all effective calculation.”
Do not overclaim the equivalenceThe Church–Turing thesis is not “proved” by showing that Turing machines and normal algorithms simulate one another. The theorem says two formal classes coincide. The thesis says this recurring formal class captures the pre-formal human notion of an effectively calculable procedure. The convergence of very different models is powerful evidence for the thesis; it is not an ordinary theorem, because “effective procedure” has no formal definition in the premise.

The theorem under the picture — and whose name is on it

Markov's monograph builds the programming side of this equivalence: combination theorems showing how normal algorithms are composed, branched between, and iterated, which is the marker idiom of Chapter 3 raised to a system. The equivalence with the recursive functions was then established by his student V. K. Detlovs, who announced it in a short Doklady note in 1953 and worked it out in full in a sixty-five-page memoir in 1958. Markov himself credits the result to Detlovs in his introduction to the monograph, writing that it was natural to expect the theory of normal algorithms to coincide with the theory built on recursive functions, and that Detlovs was the one who showed this to actually be so.

Theorem · Detlovs, 1953/1958 — normal computability = partial recursiveness
Fix the standard encoding of natural numbers by words. A partial function is computable by a normal algorithm if and only if it is partial recursive. In particular, normal algorithms compute exactly what Turing machines, the λ-calculus, and every other standard model compute.
How the two directions of the proof goThe directions have entirely different flavours. Recursive ⇒ normal is programming: implement the base functions (zero, successor, projections) on delimiter-packed unary numerals, then show the normally computable functions are closed under composition, primitive recursion, and μ-minimization — by explicitly splicing rule lists together, with fresh marker letters keeping the sub-programs out of each other's way. It is Machine 04's discipline at industrial scale. Normal ⇒ recursive is arithmetization: Gödel-number the words and the rule list; one step of the machine — first applicable rule, leftmost occurrence, substitute — involves only searches bounded by the length of the current word, so the step function is primitive recursive; a whole run is iteration of that step, the halting time is found by one unbounded μ-search, and decoding the final word is primitive recursive again. The same Kleene-normal-form shape underlies the analogous theorems for Turing machines.

On top of the theorem sits the school's own version of the Church–Turing thesis. The normalization principle, as the Encyclopedia of Mathematics states it, proposes that for every algorithm in an alphabet A one can construct an equivalent normal algorithm over A — and, the equivalence theorem in hand, this convention is equivalent to Church's thesis. The one small word is doing real work: over A, not in A. The constructed normal algorithm may use auxiliary letters beyond the input alphabet — and the sweeps of the markers m, R and C in the gallery show why that extra room matters.

Why universality is philosophically useful

Once a precise universal model exists, “method” itself becomes a mathematical noun. Does a method for this problem exist? Can one procedure interpret all programs? Can termination be decided? These stop being vibes and become theorem questions — and, crucially, some of them turn out to have the answer no. That negative power is the subject of the next chapter.

And for Markov's constructive programme, the word construct can now be tethered to a precise class of effective procedures. The machine is no longer merely a model of a calculating clerk. It becomes part of the ontology of the mathematics itself.

Universal does not mean convenientYou could in principle implement a web browser in raw Markov substitutions, exactly as you could on a bare Turing machine. That makes neither a sensible engineering language. Universality is a claim about what can in principle be computed, not about ergonomic programming — a distinction that returns when the coda is honest about Refal's adoption.
CHAPTER 6 limits are theorems too

What the machine proves it cannot do

The reason mathematicians care about an exact model of computation is not mainly that it lets them compute things. It is that it lets them prove that certain things can never be computed at all — and Markov produced some notable examples, reaching far outside logic into algebra and topology.

Words that cannot be sorted: the word problem

Give yourself a finite alphabet and a finite list of two-way rewriting rules u ↔ v — a semigroup presentation, also called a Thue system. Two words count as “equal” if one can be turned into the other by applying rules in either direction, any number of times. A natural question: is there a single algorithm that, given any two words, decides whether they are equal?

Theorem · Markov and Post, independently, 1947
There is a finitely presented semigroup whose word problem is undecidable: no algorithm can decide, for arbitrary words P and Q, whether the rules make them equal. String rewriting is powerful enough to be its own undecidable oracle.

This is a landmark: one of the earliest undecidability results about an everyday algebraic object rather than about self-referential logical sentences. And it lands in exactly the world of word rewriting that normal algorithms formalize — hardly a coincidence, since proving it means encoding machine histories as words.

The result set off a chain reaction across both cities. Markov himself widened it in 1951: not just equality — whole families of properties of associative calculi admit no recognition algorithm. In Moscow, P. S. Novikov then carried the hardness one algebraic floor up, proving in a memoir of some 140 pages that the word problem for groups is unsolvable (1955). Novikov's student S. I. Adian — with M. O. Rabin independently — took the recognition question to its conclusion: no algorithm decides, from a finite presentation, whether a group is trivial, finite, abelian, or has any other “Markov property.” The name is exact, not honorary: the notion generalizes precisely what Markov had proved for semigroups, and this Adian–Rabin theorem supplies the group-theoretic hardness that Markov's manifold construction, three years later, transports into topology. Leningrad added a miniature: G. S. Tseitin wrote down an explicit associative calculus with an unsolvable equivalence problem (1958) — published in the same Steklov volume as Detlovs' equivalence memoir.

Shapes that cannot be recognized: the homeomorphy problem

A second theorem goes further. Two manifolds are homeomorphic if one can be continuously deformed into the other — the same shape, up to stretching. It is natural to expect that, for such a geometric question, a patient enough procedure could always decide.

Theorem · A. A. Markov Jr, 1958
For every dimension d ≥ 4, the homeomorphy problem is algorithmically unsolvable: no algorithm decides whether two given d-dimensional manifolds are homeomorphic. Markov even exhibited specific manifolds that are, in this precise sense, unrecognizable.
undecidablegroup problem is this presentedgroup trivial? build a manifold whosefundamental group isthe given group so shape-sorting isundecidable deciding the shapes would decide the groups — which is impossible
Undecidability travels by reduction. Markov built manifolds whose fundamental group encodes an arbitrary finite presentation; the hardness in the left box is Novikov's theorem and — for the triviality question specifically — Adian–Rabin. Hardness flows from algebra into geometry.
Keep thisAn exact model of computation is most powerful when it tells you a limit. The same formalism that adds unary numbers underwrites proofs that no procedure whatsoever can sort four-dimensional shapes. Normal algorithms were not a toy alternative to Turing machines; in Markov's hands they were a tool for drawing the boundary of the computable — and pushing that boundary into topology surprised everyone.
Why the string setting helpsAll of these proofs run by reduction: encode a known-hard problem as words, then transform. Normal algorithms live natively in the world of words and presentations, so the encodings are not an afterthought bolted onto a tape machine — they are the machine's home turf. That is the concrete payoff of Chapter 4's claim that Markov's model sits close to the mathematician's hand.
CHAPTER 7 what an existence proof owes you

The constructive turn

Classical mathematics is comfortable proving that an object must exist without handing you the object or any procedure for finding it. Constructive mathematics changes what the sentence is allowed to mean. “There exists an x” becomes a demand: produce x, and produce evidence that it works.

This is not merely a ban on proof by contradiction. Constructive mathematics happily proves negations by deriving contradictions. The delicate move is the step from ¬¬P back to P, and above all from ¬¬∃x P(x) — “it is impossible that no witness exists” — to an actual witness. Classically these are interchangeable. Constructively they are worlds apart, because only one of them hands you the thing.

Proof passport · what evidence must cross the border?

Tap a connective. The panel says what a constructive proof of it must actually carry — the Brouwer–Heyting–Kolmogorov reading, where a proof is a construction you can run.

there exists
or
and
implies
for all
¬not
CLASSICAL DESK Claim: ¬¬ ∃x P(x) “Nonexistence is impossible.” Stamp granted. CONSTRUCTIVE DESK Present: x and P(x) “Here is the witness.” Now stamp ∃. ¬¬∃ → ∃ : NOT AUTOMATIC
Existence has a payload. The formal machinery differs across constructive traditions, but the reading is stable: an existential proof should provide a witness, not merely rule out the absence of all witnesses.

The logical instruments here have Moscow roots older than the school itself. A. N. Kolmogorov was studying intuitionistic logic as early as 1925, embedding classical reasoning into it by a double-negation translation; V. I. Glivenko proved, in 1928–29, the little theorems relating classical and intuitionistic provability that still carry his name; and it is Kolmogorov's 1932 reading of intuitionistic logic as a calculus of problems that put the K into the Brouwer–Heyting–Kolmogorov interpretation the demo above uses. When Markov's school later demanded an algorithm as the content of a proof, it was, in effect, filling Kolmogorov's “problems” with an exact notion of solution.

Markov's recursive constructive mathematics (RUSS)

In the late 1940s Markov began developing a distinct variety of constructive mathematics, now commonly labelled recursive constructive mathematics, or RUSS. In the Stanford Encyclopedia's summary, RUSS is essentially recursive function theory with intuitionistic logic: mathematical objects are presented through Gödel numberings, and the procedures are all recursive. What separates RUSS from the classical “recursive analysis” developed in the West after Turing and Church is precisely the logic — RUSS reasons intuitionistically, so every theorem keeps its computational reading.

Now the two halves of this book connect. RUSS says a “construction” is a recursive procedure, and Chapter 5 showed normal algorithms compute exactly the recursive partial functions. So Markov's rewriting machine is a perfectly good official answer to “what counts as a construction?” The machine is not a warm-up act for the philosophy; it is the philosophy's model of what a proof may legitimately smuggle inside it.

The programme in one sentenceRebuild ordinary mathematics so that its assertions retain algorithmic content. An existence theorem should carry a construction; a universal theorem should carry a method that works on arbitrary admissible input; a definition of an infinite object should say how finite information about it is actually obtained.

A school with two capitals

“The Russian school” was never one seminar room. Markov's own circle formed in Moscow after his move there in the mid-1950s; a second, ultimately very influential centre grew in Leningrad around his student Nikolai Aleksandrovich Shanin (1919–2011). Mints and Nikolenko's history of the Leningrad school — written by a member of it and a successor at the same institute — is the dedicated account; the sketch below follows the record it belongs to.

ONE PROGRAMME · TWO CITIES A. A. Markov Jr Leningrad → Moscow MOSCOW Markov's own group, from the mid-1950s N. M. Nagorny — co-author of the monograph's 2nd edition (1984) B. A. Kushner — the school's standard Lectures (1973) earlier logic: Kolmogorov · Glivenko LENINGRAD N. A. Shanin — constructive semantics; “duplex” reals 1961 · LOMI logic group founded: Davydov, Maslov, Mints — goal: automated theorem proving orbit: Tseitin · Orevkov · Zaslavsky · Slisenko · Matiyasevich
One programme, two cities. Moscow kept the foundational flame; Leningrad turned the constructive machinery toward automation early on — its 1961 logic group was founded to build an automatic theorem prover.

Two Leningrad details deserve to be spelled out. First, Shanin insisted that constructive objects come packaged with their own effectivity: he defined a constructive real number as a “duplex” — a pair of algorithms, one producing rational approximations and one guaranteeing the rate at which they converge. That “object = data plus certified method” instinct is precisely the interface-flavoured thinking Chapter 9 develops. Second, the group Shanin founded at the Leningrad branch of the Steklov Institute in 1961 — its first three members were Gennady Davydov, Sergey Maslov, and Grigori Mints — was created not to contemplate algorithms but to build one: an automatic theorem prover. Out of that room came exports whose reach nobody predicted:

THREE EXPORTS FROM ONE SEMINAR 1964 · S. Maslov · the inverse method a proof-search calculus for predicate logic — early automated deduction 1968 · G. Tseitin · the clause translation the CNF translation that remains standard equipment in SAT solving 1970 · Yu. Matiyasevich · Hilbert's tenth problem no algorithm decides whether a Diophantine equation is solvable
From constructive philosophy to working machinery. Maslov's inverse method is a landmark of automated deduction; Tseitin's 1968 translation — published in the seminar's own “Studies in Constructive Mathematics and Mathematical Logic” — is standard equipment in every SAT pipeline; Matiyasevich, in the same Leningrad orbit, completed the negative solution of Hilbert's tenth problem.

And the same rooms kept producing. Shanin turned his semantics itself into a procedure — an algorithm for the constructive decoding of mathematical judgments (1958). I. D. Zaslavsky worked with Tseitin on the singular constructions Chapter 9 will meet. A. O. Slisenko carried the seminar into computational complexity; his real-time recognition of palindromes became a landmark of the subject. And Grigori Mints spent a career threading Maslov's inverse method into Gentzen-style proof theory and resolution — the seminar's proof-search programme carried, personally, into modern automated deduction.

The philosophy is operational, not asceticThe constructive question is not “which beautiful classical objects shall we forbid?” It is “what information does this statement promise, and what would count as delivering on it?” The Leningrad group took that reading to its logical conclusion: if a proof is a procedure, a machine should be able to search for it. Read this way, a logical connective is a specification for the evidence a proof must return.
CHAPTER 8 the school's one controversial bridge

Markov's principle: search without a clock

Here is the exact place where Markov's school parts company with many other constructivists — and it is named after him for good reason. Suppose a property of natural numbers is decidable: for each n, you can effectively check whether P(n) holds. Suppose further that assuming “no n satisfies P” leads to a contradiction. May you conclude that some n really does satisfy P?

Markov's principle (MP) · as stated in the Stanford Encyclopedia
For each binary sequence (aₙ), if it is contradictory that all the terms aₙ equal 0, then there exists a term equal to 1.

Equivalently, in the schematic form logic courses use: from ¬¬∃n P(n) conclude ∃n P(n), for decidable P. Markov's computational intuition is an unbounded search: test 0, test 1, test 2, and keep going. If it is impossible for the search to run forever without success, then — on this reading — the search must eventually strike the witness.

Machine 05 · an unbounded search, seen through a small window

Choose where the hidden witness sits. The search knows only how to test one position at a time — and “no witness seen yet” is never the same statement as “no witness exists.”

13
Why other constructivists hesitateFrom the evidence ¬¬∃n P(n) alone, you have not been handed any bound telling you where to stop looking. The search may run arbitrarily long before it succeeds. Markov's principle sanctions the leap anyway, for decidable predicates. Bishop-style and Brouwerian settings generally do not accept it wholesale; in the Stanford Encyclopedia's careful phrasing, its constructive status is less clear than that of the standard “omniscience” principles.

The awkward status of the principle

MP is computational in one sense and non-trivial constructively in another. The proposed realizer is entirely concrete: enumerate and test. Yet the guarantee that this partial search must terminate is extracted from a double negation, not from a bound you can see. That tension is what makes the principle such a clean window into the school: it trusts effective search further than its neighbours do.

Do not confuse it with omniscienceMarkov's principle is not the claim that every question is decidable, nor that you can always tell in advance whether a witness exists. The test P(n) must itself be effective. MP concerns only the step from “the decidable search cannot fail forever” to the actual success of the unbounded search. It is a statement about search, not omniscience — and modern constructive reverse mathematics studies exactly which theorems need it.
CHAPTER 9 an infinite object must answer finite questions

Analysis without invisible reals

A classical real number is often treated as a completed point on an already-existing continuum. A constructive real must be something you can actually work with. Shanin's Leningrad formulation makes the demand explicit: a real is a duplex, a pair of algorithms — one producing rational approximations, one certifying how fast they converge. Ask for precision 1/2ⁿ; the number is obliged to hand you a rational within that error.

ASK FOR MORE PRECISION · RECEIVE MORE FINITE INFORMATION err ≤ 1/2err ≤ 1/4err ≤ 1/8err ≤ 1/16 the same real, approached effectively — a duplex in Shanin's sense
A real as a service, not a hidden decimal scroll. Each request for precision must be answered by a rational plus an error guarantee. Different constructive schools package this differently; effective access to finite approximations is the common core.

The theorem that makes it feel real: x = 0 is not free

Consider the innocent-looking claim “for every real number x, either x = 0 or x ≠ 0.” Classically it is a tautology. Computationally it demands a uniform decision procedure — and a real only ever arrives through finite approximations, so an extremely small nonzero value can keep masquerading as zero at every precision inspected so far. The sentence has quietly asked for an oracle, and the demo below shows why:

Machine 06 · is this real number zero?

A hidden real is revealed only through rational approximations of shrinking error. You must decide “= 0” or “≠ 0” from finitely many of them. The catch: a small nonzero value hides inside the error band for a long time.

What the demo is really showingNo finite amount of approximation can, in general, establish x = 0: staying inside the error band forever is consistent with a nonzero value smaller than every band inspected so far. So a single procedure deciding “= 0 versus ≠ 0” for arbitrary constructive reals cannot exist. The classical tautology was hiding a request for infinite information.

Strange theorems inside RUSS

Inside Markov's recursive world, where every real is named by a program, you can prove theorems that sound false to a classically trained ear. These are not paradoxes; they are honest facts about the recursively presented continuum, and they show that the constructive setting is a different mathematical universe, not classical mathematics with some moves forbidden.

Specker's theorem (1949), a landmark of RUSS
There is a computable, strictly increasing sequence of rational numbers in [0,1] that is eventually bounded away from every real number: for each x, from some index on, the sequence keeps a fixed positive distance from x. It climbs forever inside a bounded interval, yet converges to nothing the constructive world can name — a recursive counterexample to the sequential compactness of [0,1].
A STAIRCASE WITH NO CONSTRUCTIVE TOP 1 0 n → classical supremum — not a constructive real x ± δ rational, computable, strictly increasing — and eventually δ-far from any given x
Specker's staircase, schematically. Take any constructive real x (the shaded strip): after finitely many steps the sequence leaves its neighbourhood for good. Classically the supremum exists — but it is not a computable number, so inside RUSS the staircase has no top.

Two companions from the same world, both stated in the Stanford Encyclopedia's survey of RUSS: there is a pointwise continuous function on [0,1] that is not uniformly continuous, and a positive-valued uniformly continuous function on [0,1] whose infimum is 0 — so it never gets to claim the minimum the classical extreme-value theorem would promise. On the closed unit interval, several theorems every calculus student memorizes simply fail once “real number” means “program for a real number.”

Underneath examples of this kind sits one sharp construction from the Leningrad side: the singular coverings of I. D. Zaslavsky and G. S. Tseitin — sequences of intervals of arbitrarily small total length that nevertheless cover every constructive point of the unit interval. Classically, you cannot paint the whole of [0,1] with a tenth of a unit of paint; constructively, the points you can actually name are exactly that easy to paint over. Singular coverings are the raw material for several pathologies of this kind.

And the strangeness cuts in the opposite direction too, in a theorem from the Leningrad side of the school. Since a constructive function must act on programs for reals, it cannot secretly peek at an infinite decimal expansion — and Tseitin proved that, on constructive complete separable metric spaces, this forces continuity: every constructive function of a constructive real variable is continuous. You cannot program a genuine jump. Discontinuity, constructively, is not an available behaviour; what fails instead, as above, is uniform continuity.

A SQUARE WHERE EVERY CONSTRUCTIVE POINT MOVES Orevkov, 1963: a constructive self-map of the square with no constructive fixed point
Brouwer's fixed-point theorem, constructively refuted. V. P. Orevkov built a constructive continuous map of the square into itself that moves every constructive point. (The drawing is schematic — the actual map is defined by an algorithm, not by these six arrows.) Classically a fixed point must exist; constructively, no algorithm can exhibit one.

Definitions become interfaces

Step back and the pattern is unmistakable. A constructive definition behaves like a data structure with methods — Shanin's duplex is the plainest example, an object that literally ships as two algorithms. A continuous function may need a modulus: an effective control saying how much input precision buys how much output precision. A Cauchy sequence carries a convergence rate. A proof of ∀x ∃y R(x,y) is expected to act like a program that receives x and returns y together with evidence of R.

Why this feels familiar to programmersInput. Output. Invariant. Witness. Termination. Precision contract. Constructive mathematics did not secretly invent software engineering, but the resemblance is structural: a proposition is read by asking what usable evidence an implementation of it must return. The next chapter asks whether that resemblance ever cashed out into real tools.

What constructivizing did to mathematics

Constructivizing did not merely delete theorems; it forced new statements, new hypotheses, and new proof techniques. Constructive analysis, algebra, and topology became deep subjects in their own right. Errett Bishop's 1967 book then showed that a great deal of analysis can be rebuilt constructively in recognizably ordinary mathematical prose — free of the recursion-theoretic notation that made RUSS a hard read even for sympathetic mathematicians.

The Russian school was one route among several, distinguished by its explicit allegiance to recursive procedures and its acceptance of Markov's principle. A fair map shows the neighbouring roads:

Tradition Characteristic emphasis Markov's principle?
Markov / RUSS Recursive presentations and procedures; intuitionistic logic; a strongly algorithmic reading of everything. Yes — its signature.
Brouwerian intuitionism Mental constructions, choice sequences, distinctive continuity principles. Not in general.
Bishop-style (BISH) Constructive mathematics in ordinary mathematical language, engineered to keep numerical meaning. Usually not assumed.
Martin-Löf type theory Judgements, dependent types, proofs as structured terms with computational meaning. Not a default.
The other rebuilt continuum: Robinson's infinitesimalsThe twentieth century produced one more famous re-engineering of the real line, and it makes an instructive mirror. Abraham Robinson's nonstandard analysis (from 1961; the monograph in 1966) made infinitesimals rigorous at last: the hyperreal line adds numbers smaller than every 1/n, with a transfer principle moving first-order truths between the standard and enlarged worlds. But the construction runs through model theory — compactness, ultrapowers over a nonprincipal ultrafilter — machinery that calls on the axiom of choice and offers no recipe for exhibiting any particular infinitesimal: nothing one could hand to Chapter 7's passport desk. Where Markov's school shrank “real number” to what an algorithm can present, Robinson enlarged it past what any algorithm presents. The two programmes are best read as opposite answers to the same unease about the classical continuum, rather than as steps in a single lineage — the connection is conceptual, not historical. There is, though, a late twist the school would have enjoyed: Palmgren (1998) built a constructive nonstandard analysis extending Bishop's, and van den Berg, Briseid and Safarik (2012) gave nonstandard systems a functional interpretation whose algorithm rewrites nonstandard proofs into standard ones, with term extraction. Even infinitesimals, suitably formalized, can be made to pay their computational debts — and the collecting instrument is itself a rewriting procedure.
CHAPTER 10 what holds up · and what does not

The ledger: established, plausible, oversold

A fair audit splits the record three ways — established, plausible, oversold — and this chapter cites its evidence for each verdict.

1 · Proofs: the rock-solid payoff

There is a genuine, non-hand-wavy bridge from constructive mathematics to computation, and it has a name: the Curry–Howard correspondence. Stated plainly: a constructive proof of an existential statement is an algorithm that produces a witness. Propositions correspond to types, proofs to programs of those types; running the proof computes the object it claims exists. This is not a metaphor and not a Markov-specific slogan — it is the organizing principle behind an entire family of proof assistants.

proposition ∃x P(x) a type is constructive proof a program of that type run the witness x, computed with its evidence checking the proof and computing the object become the same activity
Curry–Howard in three boxes. Because a constructive existence proof is literally a program for the witness, this is the exact machinery behind Chapter 7's slogan that existence has a payload.

This is why systems in the Coq, Agda, Nuprl, Minlog, Isabelle, and Lean families can extract a program from a proof: prove ∀x ∃y R(x,y) constructively, and the assistant can emit executable code taking x to y, certified correct by the proof it came from. Markov's insistence that “exists” carry a construction is the ancestral form of the demand; the modern machinery is more powerful and vastly better engineered, but it is the same demand.

Keep thisFormalized, machine-checked mathematics is where Markov's question stopped being philosophy and became infrastructure. “What procedure is hidden in this proof?” is now answered mechanically, inside proof assistants, as a matter of routine.

2 · Programming: a real lineage, at a real cost

The constructive habit — treat a specification as a contract for evidence — reappears wherever a type system carries real guarantees. A well-typed program is, in a precise sense, a proof that its type is inhabited, and a type-checker is then a proof-checker. Dependent types (Coq, Agda, Idris, Lean) push this until software can be proven, not merely tested, to meet its specification. That lineage is real.

The drawback, stated plainly“Extract a certified program from a proof” is not a free lunch. Early large-scale experiments found that extracting an efficient program as a side effect of formalizing an ordinary textbook proof is unreasonable to expect; you get correct code, but often slow code, unless the definitions are written with extraction in mind. Constructive proofs can also be substantially more laborious than their classical cousins. The guarantees are strong; the effort is real; the performance is not automatic.

3 · The rewriting machine itself, in tools

Does the specifically Markov flavour — strings, ordered rules — earn its keep? In narrow, specific ways. Term and string rewriting underlies real technology: semantics of rule-based systems, decision procedures built on confluent rewriting, completion methods in equational reasoning. Where the subject matter is itself symbolic — grammars, presentations, formula manipulation — the rewriting view is the natural one, exactly as the undecidability proofs of Chapter 6 suggested. And because one step of a normal algorithm is so simply defined, the model is a natural target for mechanized metatheory: formalizing “execute a normal algorithm” inside a proof assistant and proving exactly which class of functions the programs denote.

There is also the quieter channel from Chapter 7, worth restating because it is so easy to miss: the Leningrad seminar's automated-deduction ambitions produced Maslov's inverse method and Tseitin's clause translation, and SAT solving — where Tseitin's translation is standard equipment — now underpins a large share of modern automated verification. The constructive school did not conquer mathematics, but pieces of its toolbox quietly conquered the verifiers.

4 · The ledger

Claim Status In plain terms
Constructive proofs yield algorithms for witnesses Established Curry–Howard; the backbone of program extraction in real proof assistants.
Constructive mathematics is a living field Established Active work in analysis, algebra, type theory, computable analysis, constructive reverse mathematics.
The school seeded automated deduction Established Maslov's inverse method; Tseitin's clause translation, still standard in SAT.
Rewriting / normal algorithms aid verification & metatheory Real but narrow Genuine in symbolic domains and mechanized metatheory; not a general-purpose engineering win.
Extracted programs are automatically fast Oversold Correct, yes; efficient only with deliberate effort. A documented limitation.
Markov's specific RUSS school won the field False It did not. Bishop-style and type-theoretic constructivism are far more prominent today.
“Everything modern descends from Markov” False These ideas have many independent lineages. Resemblance is not descent.

A theorem can be true. A constructive mathematician also asks what it lets you compute.

CHAPTER 11 not universal adoption · a lasting influence

The map today

Mathematics did not become Markov's constructive mathematics. Classical mathematics remains overwhelmingly standard, and even within constructivism, the recursive school is one historical variety among several — not the most widely taught. As a bid to replace classical practice, the programme failed.

That is the wrong scale for judging it. Ask instead where the demand for computational meaning is intellectually alive now, and the map fills up.

proofs with computational content Bishop-style analysisnumerical meaning type theoryproof terms · dependent types computable analysisrepresentations · realizability proof assistantschecked proof objects constructive logicand reverse mathematics program extractionwhere frameworks support it
Not one family tree: a constellation. These areas share computational concerns; the dashed lines are conceptual neighbourhoods, not claims that every modern proof assistant is “Markovian.”

Normal algorithms, today

They remain a clean universal model and a natural formalism when the subject matter is symbolic transformation. They live in computability theory, in rewriting-oriented teaching, in historical and foundational work — and, as the previous chapter noted, their one-line operational semantics makes them attractive objects for mechanized metatheory.

The constructive programme, today

RUSS is a historically specific school, but constructive mathematics is vigorously alive across several traditions. Current work spans constructive analysis and algebra, type theory, proof assistants, computable analysis, realizability, and constructive reverse mathematics — the last of which measures exactly which extra principles (Markov's principle among them) a given theorem really needs. The shared pressure is the one Markov named: make the information content of a theorem explicit.

So what survived?Not a universal conversion to RUSS, but something subtler and arguably bigger: the question “what procedure is hidden in this proof?” is now completely at home in logic, verification, type theory, and computable analysis. Markov's specific foundational answers are historically dated, but his question is extraordinarily modern, and it now runs on machines.

Make the method explicit. Then make the method itself an object you can check.

CODA the rewriting instinct, one generation on

Refal, briefly

The map could end the book. But the rewriting instinct did not stop with Markov, and one of its descendants — a Soviet one, fittingly — earns a coda. In 1968 the physicist and cybernetician Valentin Turchin proposed Refal, initially as a metaalgorithmic language: a notation for describing the semantics of other languages, which soon acquired efficient implementations and became a programming language in its own right. Its heart is pattern matching as the central act of computation — a program is a set of sentences, each pairing a pattern with a replacement.

Refal is not “Markov normal algorithms with nicer syntax” — its data model and semantics are its own, and claiming direct descent would be sloppy. But the family resemblance is immediate. Refal computes over object expressions: bidirectional sequences, with brackets, that can be split and concatenated anywhere — so the shape of the data drives the control flow, exactly the instinct behind Markov's substitutions. Patterns speak about that shape through three kinds of variables:

A REFAL PATTERN DECOMPOSES DATA BY SHAPE s.x one symbol t.x one term e.x expression segment write the shape you mean; the language decomposes the data to fit it
Three variable kinds. An s-variable matches one symbol, a t-variable one term (a symbol or a bracketed subexpression), an e-variable a whole segment — including the empty one.

Here is the classic first program, a palindrome test, in genuine Refal-5 syntax — four sentences, tried top to bottom, the same priority discipline Markov's rule lists taught us to read:

Pal {
  = True;
  s.1 = True;
  s.1 e.2 s.1 = <Pal e.2>;
  e.1 = False;
}

Line by line: the empty word is a palindrome; a single symbol is a palindrome; a word whose first and last symbols coincide (the repeated variable s.1) is a palindrome iff its interior e.2 is — recurse; anything else is not. The whole control flow lives in the patterns.

Machine 07 · a Refal-style pattern microscope

A didactic matcher, not a real Refal evaluator: it shows the intuition behind s- and e-variables on a flat token sequence.

Turchin's deeper ideaRefal was meant not only for writing algorithms but for writing algorithms about algorithms — programs simple enough that their transformers could be reasoned about almost with pen and paper. From that came supercompilation: run a program on generalized, partly unknown input, watch the tree of computations it can enter, and emit a simplified residual program. The idea kept developing inside the Refal world — Andrei Nemytykh's SCP4 is an experimental supercompiler for Refal-5, and with Alexei Lisitsa supercompilation has been applied to program and protocol verification — while its echoes (partial evaluation, deforestation, program transformation) have their own independent lineages that owe nothing to Refal directly, and the resemblance among them is best read as a family likeness rather than a line of descent.
Adoption, plainlyRefal's ecosystem is niche. It is not competing with mainstream languages for users. Refal-5λ, the actively documented dialect, is an exact superset of Refal-5 with an optimizing compiler targeting an intermediate interpretive code or C++ source; its most recent tagged release is 3.3.1 (dated 8 April on the release page), and the repository remains active in discussion. Smaller independent implementations exist, including a Python one. The fair summary is niche but not erased: a language of real historical and conceptual interest with a small living community — studied here for its lineage rather than as a practical recommendation. A curated map of the whole ecosystem — implementations, dialects, papers, teaching materials, archives — is maintained at awesome-refal, which describes itself as a “research archive + practical survival map.”

First formalize the calculation. Then formalize the act of looking at the calculation.

READING ROOM primary works first · modern maps second

Where this little book gets its claims

This page is written as a narrative, not a literature review — but the history in it is not folklore. These are the works to open when a sentence makes you suspicious; every named theorem, date, and quotation above was checked against one of them.

Markov, normal algorithms, undecidability

Primary · 1954A. A. Markov, Теория алгорифмов (Theory of Algorithms). Trudy Mat. Inst. Steklov, vol. 42, 1954, pp. 3–375. Second edition with N. M. Nagorny, 1984; English translation 1988.
Math-Net record of the 1954 volume
Primary · the modern editionA. A. Markov, N. M. Nagorny, The Theory of Algorithms. The second, reworked edition of the monograph (1984); English translation by M. Greendlinger, Kluwer, 1988 — the standard form in which the theory is read today.
The equivalence theoremV. K. Detlovs, “Equivalence of normal algorithms and recursive functions.” Announced in Dokl. Akad. Nauk SSSR 90 (1953), 723–725; in full in Trudy Mat. Inst. Steklov 52 (1958), 75–139; English translation in AMS Translations (2) 23 (1963), 15–81.
Math-Net record of the 1958 memoir
Reference articleEncyclopedia of Mathematics, “Normal algorithm.” Source for the normalization principle, its equivalence to Church's thesis, and the dating of the concept to Markov's 1947 word-problem research.
encyclopediaofmath.org/wiki/Normal_algorithm
BiographyAndrey Markov Jr (1903–1979). Son of Andrey Markov Sr; a founder of the Russian school of constructive mathematics; his name is on Markov's principle, Markov's rule, and Markov's theorem in knot theory.
Wikipedia biography
Primary · 1958A. Markov, “The insolubility of the problem of homeomorphy,” Dokl. Akad. Nauk SSSR 121 (1958), 218–220. Undecidability of the homeomorphy problem in dimensions ≥ 4; for a modern detailed exposition see Gordon's note below.
C. Gordon, “On the homeomorphism problem for 4-manifolds”
Word problem · 1947Markov and Post, independently: a finitely presented semigroup with undecidable word problem — an early undecidability result about an ordinary algebraic object.
Overview: the word problem
The algebraic aftermath · Chapter 6's chainA. A. Markov, “Impossibility of algorithms for recognising some properties of associative systems,” Dokl. Akad. Nauk SSSR 77:6 (1951), 953–956 · P. S. Novikov, “On the algorithmic unsolvability of the word problem in group theory,” Trudy Mat. Inst. Steklov 44 (1955), 3–143 · S. I. Adian, Dokl. Akad. Nauk SSSR 103:4 (1955), 533–535, with the full memoir in Proceedings of the Moscow Mathematical Society 6 (1957), 231–298; M. O. Rabin proved the same independently in 1958 — together, the Adian–Rabin theorem · G. S. Tseitin, “An associative calculus with an insoluble problem of equivalence,” Trudy Mat. Inst. Steklov 52 (1958), 172–189.
Math-Net record of Novikov's memoir · Nyberg-Brodda's English translation of the Adian and Markov papers
A participant's historyBoris A. Kushner, “Kurt Gödel and the constructive mathematics of A. A. Markov.” Source of the remark that the monograph's scrupulous correctness proofs read as early program verification.
Open the PDF

The school, in both cities

The dedicated history · LeningradG. E. Mints, S. I. Nikolenko. “History of the Leningrad (St. Petersburg) School of Constructive Mathematics and Proof Theory.” In A. Schumann (ed.), Logic in Central and Eastern Europe: History, Science and Discourse, University Press of America, 2012, pp. 380–387. Written from inside the tradition — Mints was one of the founding three of the 1961 LOMI logic group. A companion chapter in the same volume, S. I. Nikolenko, “The Markov School in the 21st Century,” pp. 388–427, carries the story forward.
Publisher's page for the volume
Primary Leningrad papersThe landmark texts behind Chapters 7 and 9, in one place: A. A. Markov, “On constructive mathematics,” Trudy Mat. Inst. Steklov 67 (1962), 8–14 · N. A. Shanin, “Constructive real numbers and constructive functional spaces,” Trudy Mat. Inst. Steklov 67 (1962), 15–294 · G. S. Tseitin, “Algorithmic operators in constructive complete separable metric spaces,” Dokl. Akad. Nauk SSSR 128 (1959), 49–52, and “Mean-value theorems in constructive analysis,” Trudy Mat. Inst. Steklov 67 (1962), 362–384 · V. P. Orevkov, “A constructive map of the square into itself which moves every constructive point,” Dokl. Akad. Nauk SSSR 152 (1963), 55–58 · Yu. V. Matiyasevich, “Enumerable sets are Diophantine,” Dokl. Akad. Nauk SSSR 191 (1970). Volume 67 of the Trudy — one volume containing Markov's manifesto, Shanin's 280-page construction of the constructive continuum, and Tseitin's analysis — is the Leningrad programme between two covers.
Moscow logical rootsA. N. Kolmogorov — the 1925 paper on the principle of excluded middle, containing the first double-negation embedding of classical into intuitionistic reasoning, and “Zur Deutung der intuitionistischen Logik,” Mathematische Zeitschrift 35 (1932): the calculus-of-problems interpretation behind BHK · V. I. Glivenko — “Sur la logique de M. Brouwer,” Bulletin de l'Académie royale de Belgique, Classe des sciences (V) 14 (1928), 225–228, and “Sur quelques points de la logique de M. Brouwer,” same Bulletin (V) 15 (1929), 183–188.
From the 1961 threeG. Mints, A Short Introduction to Intuitionistic Logic. The University Series in Mathematics, Kluwer Academic / Plenum, New York, 2000, ix + 131 pp. A compact modern route into the logic of Chapters 7 and 8 — negative translation and Glivenko's theorem included — by one of the founding three of the 1961 Leningrad group.
PhilPapers record
Another dedicated historyM. Margenstern, “L'école constructive de Markov.” Revue d'histoire des mathématiques (in French; open access on Numdam) — among much else, a source of exact references to the school's founding papers.
Read on Numdam

Constructive mathematics, mapped

Modern surveyStanford Encyclopedia of Philosophy, “Constructive Mathematics.” Source for the RUSS characterization (“recursive function theory with intuitionistic logic”), the verbatim statement of Markov's principle, and the RUSS results of Chapter 9 (Specker's theorem and its companions).
Open the SEP entry · supplement on Specker sequences
Foundational analysis · 1967Errett Bishop, Foundations of Constructive Analysis — the demonstration that substantial analysis can be developed constructively in ordinary mathematical language.
The field today · 2023Handbook of Constructive Mathematics, Cambridge University Press. A multi-author overview across constructive logic, algebra, analysis, topology, and computation.
Cambridge record
The nonstandard mirrorA. Robinson, Non-standard Analysis, North-Holland, Amsterdam, 1966 · E. Palmgren, “Developments in constructive nonstandard analysis,” Bulletin of Symbolic Logic 4:3 (1998), 233–272 · B. van den Berg, E. Briseid, P. Safarik, “A functional interpretation for nonstandard arithmetic,” Annals of Pure and Applied Logic 163:12 (2012), 1962–1994.
The 2012 paper on arXiv

The bridge to proofs and programs

Curry–Howard & extractionProgram extraction from constructive proofs. A constructive existence proof embodies an algorithm for a witness; proof assistants build on this. Also the source for the honest caveat that efficient extraction from textbook proofs is “unreasonable to expect.”
On extraction from a large Coq formalization
Computable analysis, liveComputability and Complexity in Analysis (CCA) network — current research on computation over real-valued data.
cca-net.de

The Refal coda

Primary · TurchinV. F. Turchin, “The Concept of a Supercompiler.” The key exposition of supercompilation, by Refal's creator.
Open the PDF
Language documentationRefal-5λ, “Introduction to the language.” Source for the 1968 “metaalgorythmic language” origin, the object-expression data model, and Refal-5λ being an exact superset of Refal-5.
Open the documentation · release history
The ecosystem mapawesome-refal — a curated collection of Refal implementations, dialects, papers, seminars, and archives; in its own words, a “research archive + practical survival map.”
github.com/alexeyev/awesome-refal
A note on genealogy and honestyDirect historical claims and conceptual resemblance are easy to blur, and this account tries hard not to: pattern matching, partial evaluation, proof assistants, type theory, and program transformation all have several independent lineages, and only a few of the connections drawn here are documented history rather than family likeness — chiefly Markov's own theorems, the Moscow and Leningrad schools as Mints, Nikolenko, and Margenstern describe them, and Turchin's supercompilation. Elsewhere the language is softer on purpose, calling something a “neighbour,” a “resemblance,” or a “shared ambition” rather than a cause, and Chapter 10's ledger marks, claim by claim, what is established, what is plausible, and what is oversold. Where a sentence here seems to claim more than its evidence supports, the sources listed above are the way to check it against the record.