Saturday, December 31, 2016

Welcome

I study economics as a hobby. My interests lie in Post Keynesianism, (Old) Institutionalism, and related paradigms. These seem to me to be approaches for understanding actually existing economies.

The emphasis on this blog, however, is mainly critical of neoclassical and mainstream economics. I have been alternating numerical counter-examples with less mathematical posts. In any case, I have been documenting demonstrations of errors in mainstream economics. My chief inspiration here is the Cambridge-Italian economist Piero Sraffa.

In general, this blog is abstract, and I think I steer clear of commenting on practical politics of the day.

I've also started posting recipes for my own purposes. When I just follow a recipe in a cookbook, I'll only post a reminder that I like the recipe.

Comments Policy: I'm quite lax on enforcing any comments policy. I prefer those who post as anonymous (that is, without logging in) to sign their posts at least with a pseudonym. This will make conversations easier to conduct.

Friday, July 29, 2016

Emmanuelle Benicourt Influenced By Steve Keen?

I am thinking of absurdity number 3 below. I go a little further because I am amused by the well-established point with which I end this quotation.

"ABSURDITY No3 'For a price-taking firm, the demand curve for its own output is a horizontal line at the market price' (Unit 8.3)

This is false: the demand curve of a price-taking firm is not, and cannot be, horizontal: a firm supply, even if it is 'tiny', affects the price and then the demand of the good it produces.

The correct assumption should be that the firm believes that the demand curve is horizontal - an erroneous belief, but that is another story...

In their seminal article, Existence of an Equilibrium for a Competitive Economy, Kenneth Arrow and Gérard Debreu don't mention agents' beliefs but they,

'...instruct each production and consumption unit to behave as if the announcement of price p were the equilibrium value' (point 1.4.1, [Benicourt's] italics)

ABSURDITY No4 All agents are price-takers (competitive equilibrium)

...Now, any reasonable person will immediately ask: if all agents are price-takers, who set[s] prices? The e-Book answers (implicitly) this question with a circular reasoning...

Conclusion: 'A competitive market', as defined in the CORE e-Book, is not 'an approximation' of any existing market. It is not:

'...hard to find evidence of perfect competition' (Unit 8.3).

It is impossible.

The so-called 'competitive economy' model doesn't 'describe an idealised market structure' (Unit 8, p 44). It is not 'unrealistic' - any model is, by definition - it is irrelevant. In fact, it has nothing to do with capitalism. It can be considered, at most, as a variant of market-socialism models, with a benevolent planner setting prices, adding supplies and demands, etc." -- Emmanuelle Benicourt (2016). Is the CORE e-Book a possible solution to our problems? Real-World Economics Review, iss. no. 75, p. 135-142.

Tuesday, June 28, 2016

Getting Greater Weight For Your Vote May Not Give You Relatively More Power

1.0 Introduction

This post presents a perhaps surprising example of results from measuring political power in a system with weighted voting. I provide examples in which the weight of a person's vote is increased. Yet that voter, in some cases, gains no additional power, in some sense. In one case, by the measures of voting power considered here, the additional weight has no effect on the power of any voter. In another case, another player, with unchanged weight to his vote, is elevated in power with the voter whose weight is increased.

I find these results to be an interesting consequence of power measures. I have not yet found a simple example where the effect on the ranking of voting power is different for the three indices considered here. Nor have I found an example where a voter declines in power with an increase in the weight of his vote.

2.0 An Example of a Voting Game

A voting game is specified as a set of players, the number of votes needed to enact a bill into law (also referred to as passing a proposition), and the weights for the votes of each player. In considering voting games with a small number of players and weighted, unequal votes, one might think of such a game as describing a council or board of directors, where members represent blocs or geographic districts of varying sizes.

As example, consider a set, P, of four players, indexed from 0 through 3:

P = The set of players = {0, 1, 2, 3}

A common way to indicate the remaining parameters for a voting game is a tuple in which the first element is followed by a colon and the remaining elements are separated by commas:

(6: 4, 3, 2, 1)

The positive integer before the colon indicates the number of votes - six, in this case - needed to pass a proposition. The remaining integers are the weights of players' votes. In this case, the weight of Player 0's vote is 4, the weight of Player 1's vote is 3, and so on.

3.0 Two Power Indices

Consider all 16 possible subsets of the four players. These subsets are listed in the first column of Table 1. A subset of players is labeled a coalition. The second column indicates whether or not the coalition for that row has enough weighted votes to pass a proposition. If so, the characteristic function for that coalition is assigned the value unity. Otherwise, it gets the value zero. A player is decisive for a coalition if the player leaving the coalition will convert it from a winning to a losing coalition. The last four columns in Table 1 have entries of unity for each player that is decisive for each coalition. The last row in Table 1 provides a count, for each player, of the number of coalitions in which that player is decisive. The Penrose-Banzhaf power index, for each player, is the ratio of this total to the number of coalitions.

Table 1: Calculations for Penrose-Banzhaf Power Index
CoalitionCharacteristic
Function
Player
0123
{}v( {} ) = 00000
{0}v( {0} ) = 00000
{1}v( {1} ) = 00000
{2}v( {2} ) = 00000
{3}v( {3} ) = 00000
{0, 1}v( {0, 1} ) = 11100
{0, 2}v( {0, 2} ) = 11010
{0, 3}v( {0, 3} ) = 00000
{1, 2}v( {1, 2} ) = 00000
{1, 3}v( {1, 3} ) = 00000
{2, 3}v( {2, 3} ) = 00000
{0, 1, 2}v( {0, 1, 2} ) = 11000
{0, 1, 3}v( {0, 1, 3} ) = 11100
{0, 2, 3}v( {0, 2, 3} ) = 11010
{1, 2, 3}v( {1, 2, 3} ) = 10111
{0, 1, 2, 3}v( {0, 1, 2, 3} ) = 10000
Total:5331

The Shapley-Shubik power index considers the order in which players enter a coalition. For the example, one considers all 24 permutations for the players. The first column in Table 2 lists these permutation. For each row, a player gets an entry of unity in the appropriate one of the last four columns if including that player in a coalition, reading the entries in a permutation from left to right, creates a winning coalition. The Shapley-Shubik power index, for each player, is the ratio of the totals of each of the last four columns to the number of permutations.

Table 2: Calculations for the Shapley-Shubik Power Index
PermutationPlayer
0123
(0, 1, 2, 3)0100
(0, 1, 3, 2)0100
(0, 2, 1, 3)0010
(0, 2, 3, 1)0010
(0, 3, 1, 2)0100
(0, 3, 2, 1)0010
(1, 0, 2, 3)1000
(1, 0, 3, 2)1000
(1, 2, 0, 3)1000
(1, 2, 3, 0)0001
(1, 3, 0, 2)1000
(1, 3, 2, 0)0010
(2, 0, 1, 3)1000
(2, 0, 3, 1)1000
(2, 1, 0, 3)1000
(2, 1, 3, 0)0001
(2, 3, 0, 1)1000
(2, 3, 1, 0)0100
(3, 0, 1, 2)0100
(3, 0, 2, 1)0010
(3, 1, 0, 2)1000
(3, 1, 2, 0)0010
(3, 2, 0, 1)1000
(3, 2, 1, 0)0100
Total:10662

4.0 Three Power Indices for Three Voting Games

Table 3 summarizes and expands on the above calculations. The Penrose-Banzhaf power index need not sum over the players to unity. Accordingly, I break this index down into two indices, where the second index is normalized. The Shapley-Shubik power index is guaranteed to sum to unity. I introduce two other voting games, with corresponding power indices, presented in Tables 4 and 5.

Table 3: Power Indices for (6: 4, 3, 2, 1)
PlayerPenrose-Banzhaf Power IndexShapley-Shubik
Power Index
IndexNormalized
05/165/1210/24 = 5/12
13/163/12 = 1/46/24 = 1/4
23/163/12 = 1/46/24 = 1/4
31/161/122/24 = 1/12

Table 4: Power Indices for (6: 4, 2, 2, 1)
PlayerPenrose-Banzhaf Power IndexShapley-Shubik
Power Index
IndexNormalized
06/16 = 3/86/10 = 3/516/24 = 2/3
12/16 = 1/82/10 = 1/54/24 = 1/6
22/16 = 1/82/10 = 1/54/24 = 1/6
3000

Table 5: Power Indices for (5: 4, 2, 2, 1)
PlayerPenrose-Banzhaf Power IndexShapley-Shubik
Power Index
IndexNormalized
06/16 = 3/86/12 = 1/212/24 = 1/2
12/16 = 1/82/12 = 1/64/24 = 1/6
22/16 = 1/82/12 = 1/64/24 = 1/6
32/16 = 1/82/12 = 1/64/24 = 1/6

5.0 Constitutional Changes

Consider a change in the constitution, from one of the three voting games with tables in the previous section to another such game. The calculations allow one to measure the impact on voting power for any such change. To simplify matters, I consider only rankings of voting power. And, for these three voting games, the three power indices consider here happen to yield the same ranks, for any given voting game out of these three.

Accordingly, Table 6 shows changes in the rules (the "constitution") for these cases. The change to the rules on the right superficially strengthens Player 1, either by increasing the weight of Player 1's vote or requiring less votes to pass a resolution. As noted below, I am unsure what naive intuition might be for the second row. For the third vote, the number of votes needed to pass a proposition is altered such that a simple majority is needed before and after the change in weight.

Table 6: Changing the Rules to Strengthen the Players?
Starting GamePlayer RanksEnding GamePlayer Ranks
(6: 4, 2, 2, 1)0 > 1 = 2 > 3(6: 4, 3, 2, 1)0 > 1 = 2 > 3
(6: 4, 2, 2, 1)(5: 4, 2, 2, 1)0 > 1 = 2 = 3
(5: 4, 2, 2, 1)0 > 1 = 2 = 3(6: 4, 3, 2, 1)0 > 1 = 2 > 3

The first row shows a case where the weight of Player 1's vote increases, which might intuitively give him more power with respect to the apparently weaker Players 2 and 3. Yet this increase in weight also increases the power of Players 2 and 3, even though the weight of their votes does not change. And Player 1 remains equal in power to Player 2, both before and after the change. In fact, the change has no effect on the ranking of the players' voting power.

The second row shows a case where the votes needed to pass a measure declines, after the change in rules, from a super-majority to a simple majority, given the total of weighted votes. Would one expect such a constitutional amendment to strengthen the most powerful, or moderately powerful voters before the change? I find that this change raises the power of the weakest voter to the power of the middling voters. I am not sure this is counter-intuitive, unlike the other two rows.

The third row shows a case in which, like the first row, the weight of Player 1's vote increases. Both before and after the change, a simple majority, given the total of weighted votes, is needed to pass a proposition. This change makes Player 1 more powerful than the weakest player, as one might intuitively expect. But Player 2 is also made more powerful than the weakest player, despite the weight of his vote not varying. And Player 1 ends up no more powerful than Player 2. These effects on Player 2 seem counter-intuitive to me.

6.0 Conclusions

So my examples above have presented somewhat counter-intuitive results in voting games.

I gather that the Deegan-Packel and Holler-Packel are some other power indices I might find of interest. And Straffin (1994) is one paper that explains axioms that characterize some power index or other.

References
  • Donald P. Green and Ian Shapiro (1996). Pathologies of Rational Choice Theory: A Critique of Applications in Political Science, Yale University Press
  • P. Straffin (1994). Power and stability in politics. Handbook of Game Theory with Economic Applications, V. 2, Elsevier.

Wednesday, June 15, 2016

The History and Sociology of Game Theory: A Reading List

For me, this list is aspirational. I've read Mirowski and the Weintraub-edited book. I've just checked the Erickson book out of a library.

Monday, May 16, 2016

A Turing Machine for a Binary Counter

Table 1: Tape in Successive Start States
Input/Output TapeDecimal
tb00
tb11
tb102
tb113
tb1004
tb1015

1.0 Introduction

This post describes another program for a Turing Machine. This Turing machine implements a binary counter (Table 1). I do not think I am being original here. (Maybe this was in the textbook on computability and automata that I have been reading.)

2.0 Alphabet

Table 2: The Alphabet For The Input Tape
SymbolNumber Of
Occurrences
Comments
t1Start-of-tape Symbol
bPotentially InfiniteBlank
0Potentially InfiniteBinary Digit Zero
1Potentially InfiniteBinary Digit One

3.0 Specification of Valid Input Tapes

At start, the (input) tape should contain, in this order:

  • t, the start-of-tape symbol.
  • b, a blank.
  • A sequence of binary digits, with a length of at least one.

The above specification allows for any number of unnecessary leading zeros in the binary number on the tape. The head shall be at the blank following the start-of-tape symbol.

4.0 Specification of State

The machine starts in the Start state. Error is the only halting state. Table 3 describes some conditions, for a non-erroneous input tape, that states are designed to satisfy, on entry and exit. For the states GoToEnd, FindZero, CreateTrailingOne, Increment, and ResetHead, the Turing machine may experience many transitions that leaves the machine in that state after the state has been entered. When the state PauseCounter has been entered, the next increment of a binary number appears on the tape.

Table 3: States
StateSelected Conditions
On EntryOn Exit
StartThe head is immediately to the left of the binary number on the tape. (The binary number on the tape at this point is referred to as "the original binary number" below.)Same as the entry condition for GoToEnd.
GoToEndThe head is under the first digit of the binary number on the tape.Same as the entry condition for FindZero.
FindZeroThe head is under the last digit of the binary number on the tapeIf all digits in the original binary number are 1 and that number has not been updated with a leading zero, the head is under the first digit of the binary number on the tape. If the original binary number contained at least one digit 0, the head is under the location of the last instance of 0 in the original binary number, and that digit has been changed to a 1. Otherwise, the head is under the first digit in the binary number now on the tape, and that digit is now a 1 (having once been a leading zero).
CreateLeadingZeroAll the digits in the original binary number are 1. The head is under the first digit of the binary number on the tape.Same as the entry condition for CreateTrailingOne
CreateTrailingOneAll the digits in the original binary number are 1. The first digit in the original binary number has been replaced by 0. The head is under that first digit.The original binary number has been shifted one digit to the left, and a leading zero has been prepended to it. The head is under the last digit of the binary number now on the tape.
StepForwardIf all digits in the original binary number are 1, that number has been shifted one digit to the left, that number has been updated with a leading 0 which is now a 1, and the head is under that digit. Otherwise, the last instance of 0 in the original number has been updated to a 1, and the head is now under that digit tape.Same as the entry condition for Increment.
IncrementIf all digits in the original binary number are 1, that number has been shifted one digit to the left, that number has been updated with a leading 0 which is now a 1, and the head is under the next location on the tape. Otherwise, the last instance of 0 in the original number has been updated to a 1, and the head is now under the next location on the tape.Same as the entry condition for ResetHead. All the 1's to the right of the 0 updated to a 1 have themselves been updated to a 0.
ResetHeadThe head is under the last digit of the binary number on the tape, and that number is the successor of the original binary number.Same as the entry condition for PauseCounter.
PauseCounterThe head is immediately to the left of the binary number on the tape, and that number is the successor of the original binary number.

I think one could express the conditions in the above lengthy table as logical predicates. And one could develop a formal proof that the state transition rules in the appendix ensure that these conditions are met on entry and exit of the non-halting tape, at least for non-erroneous input tapes. I do not quite see how invariants would be used here. (When trying to think rigorously about source code, I attempt to identify invariants for loops.)

5.0 Length of Tape and the Number of States

Suppose the state PauseCounter was a halting state. Then this Turing machine would be a linear bounded automaton. In the Chomsky hierarchy, automata that accept context-sensitive languages need not be more general than linear bound automata.

The program for this Turing machine consists of 10 states. The number of characters on the tape grows at the rate O(log2 n), where n is the number of cycles through the start state. I gather the above instructions could be easily modified to not use any start-of-tape symbol. Anyways, 20 people seems more than sufficient for the group activity I have defined, for this particular Turing machine.

Appendix A: State Transition Tables

This appendix provides detail specification of state transition rules for each of the non-halting states. I provide these rules by tables, with each table showing a pair of states.

Table A-1: Start and GoToEnd
StartGoToEnd
ttErrorttError
bForwardsGoToEndbBackwardsFindZero
00Error0ForwardsGoToEnd
11Error1ForwardsGoToEnd
Table A-2: FindZero and CreateLeadingZero
FindZeroCreateLeadingZero
ttErrorttError
bForwardsCreateLeadingZerobbError
01StepForward00Error
1BackwardsFindZero10CreateTrailingOne
Table A-3: CreateTrailingOne and StepForward
CreateTrailingOneStepForward
ttErrorttError
b1FindZerobbError
0ForwardsCreateTrailingOne00Error
1ForwardsCreateTrailingOne1ForwardsIncrement
Table A-4: Increment and ResetHead
IncrementResetHead
ttErrorttError
bBackwardsResetHeadbbPauseCounter
0ForwardsIncrement0BackwardsResetHead
10Increment1BackwardsResetHead
Table A-5: PauseCounter
PauseCounter
ttError
bbStart
00Error
11Error

Saturday, May 14, 2016

Choice Of Technique And Search Models Of Labor Markets

I do not have an analysis or example to go with this post title. I suggest this would be an interesting research topic. What are implications of the analysis of the choice of technique, if any, for search models of labor markets?

Consider the neoclassical theory of supply and demand in labor markets under perfect competition. We know (Opocher and Steedman 2015, Vienneau 2005) that that theory is fatally undermined by an analysis of cost-minimizing firms.

I have recently read an overview, by Steve Fleetwood (2016), of models of search and matching in labor markets. And he illustrates these models with graphs of two crossing monotone curves that, at a glance, look much like labor supply and demand curves. But these curves are drawn in a different space and have a different rationale and derivation than labor supply and demand curves. A wage curve is graphed with the job creation curve. The abscissa is the tightness of the labor market, as measured by the ratio of vacancies to unemployment. The ordinate is the wage, as in the mistaken introductory story. The wage curve is also graphed against the Beveridge curve in a different space, namely, with the present discounted value of expected profit from a vacant job against unemployment.

In a long run analysis, a higher wage is associated with a lower rate of profits. This wage-rate of profits curves has implications for present discounted values. I do not see why an analysis inspired by Sraffa could not undermine search models. But one would have to go further than this to confirm this intuition. And one would need to read some of the original literature.

I do not claim that search models might not have some use in a reconstituted economics.

Reference

Wednesday, May 11, 2016

A Turing Machine For Calculating The Fibonacci Sequence

Table 1: Representation of the Fibonacci Sequence
Input/Output TapeTerms in Series
0b1;1;1, 1
0b1;1;11;1, 1, 2
0b1;1;11;1111, 1, 2, 3
0b1;1;11;111;11111;1, 1, 2, 3, 5
0b1;1;11;111;11111;11111111;1, 1, 2, 3, 5, 8

1.0 Introduction

I thought I would describe the program for a specific Turing machine. This Turing machine computes the Fibonacci sequence in tally arithmetic, as illustrated in Table 1 above. The left-hand column shows the tape for the Turing machine for successive transitions into the Start state. (The location of the head is indicated by the bolded character.) The right-hand column shows a more familiar representation of a Fibonacci sequence. This Turing machine never halts for valid inputs. It can calculate other infinite sequences, such as specific Lucas sequences, for other valid inputs.

A Turing machine is specified by the alphabet of characters that can appear on the tape, possible valid sequences of characters for the start of the tape, the location of the head at the beginning of a computation, the states and the state transition rules, and the location of the state pointer at beginning of a computation.

2.0 Alphabet

Table 2: The Alphabet For The Input Tape
SymbolNumber Of
Occurrences
Comments
01Start of tape marker
bPotentially InfiniteBlank
;Potentially InfiniteSymbol for number termination
1Potentially InfiniteA tally
x1For internal use
y1For internal use
z1For internal use

3.0 Specification of Valid Input Tapes

At start, the (input) tape should contain, in this order:

  • 0, the start of tape marker.
  • b, a blank.
  • Zero or more 1s.
  • ;, a semicolon.
  • One or more of the following:
    • Zero or more 1s.
    • ;, a semicolon.

The head shall be at a blank or semicolon such that exactly two semicolons exist in the tape to the right of the head. Table 3 provides examples (with the head being at the bolded character).

Table 3: Examples of Valid Initial Input
0b;;
0b1;;
0b1;1;
0b11;1;
0b1;1;11;111;11111;11111111;

4.0 Definition of State

The states are grouped into two subroutines, CopyPair and Add. Error is the only halting state, to be entered when an invalid input tape is detected. The Turing machine begins the computation with the state pointer pointing to the Start state, in the CopyPair subroutine. Eventually, the Turing machine enters the PauseCopy state. The machine then transitions to the StartAdd state, in the Add subroutine. Another number in the sequence has been successfully appended to the tape when the Turing machine enters the PauseAdd state.

The Turing machine then transitions into the Start state. The CopyPair and Add subroutines are repeated in pairs forever.

4.1 CopyPair

The input tape for the CopyPair subroutine is any valid input tape, as described above. The state pointer starts in the Start tape. Error is the only halting state. The subroutine exits with a transition from the PauseCopy state to the StartAdd state. When the PauseCopy state is entered, the tape shall be in the following configuration:

  • The terminal semicolon in the tape, when the Start state was entered, shall be replaced with a z.
  • The head shall be at that z.
  • The tape to the right of the z shall contain a copy of the character string to the right of the head when the Start state was entered.

This subroutine can be implemented by the states described in Table 4. The detailed implementation of each state is provided in the appendix. Throughout these states, there are transitions to the Error state triggered by encountering on the tape a character that cannot be there in a valid computation.

Table 4: States in the CopyPair Subroutine
StateDescription
StartMoves the head forward one character.
ReadFirstCharReplaces first ; or 1 (after position of head when the subroutine was called) with x or y, respectively.
WriteFirstSemiWrites a ; at the end of the tape. Transitions to GoToTapeEnd.
WriteFirstOneWrites a 1 at the end of the tape. Transitions to GoToTapeEnd.
GoToTapeEndMoves the head backward one character to locate the head at the character that was at the end of the tape when the subroutine was called.
MarkTapeEndReplaces original terminating ; with z.
NexCharReplaces the x or y on the tape with ; or 1, respectively.
StepForwardMoves the head forward one character.
ReadCharReplaces the next ; or 1 with x or y, respectively.
WriteSemiWrites a ; at the end of the tape. Transitions to NextChar.
WriteOneWrites a 1 at the end of the tape. Transitions to NextChar.
WriteLastSemiWrites a ; at the end of the tape. Transitions to SetHead.
SetHeadMoves head to the z on the tape.
PauseCopyFor noting that last two numbers on the tape, when the subroutine was called, have been copied to the end of the tape.

4.2 Add

When the PauseAdd state is entered, the tape shall be in the following configuration:

  • The semicolon between the z and the last semicolon, when the StartAdd state is entered, shall be replaced by a 1, if there is at least one 1 between this character and the terminating semicolon.
  • The semicolon at the end of the tape, when the StartAdd state is entered, shall be erased (replaced by a blank).
  • The character before the erased semicolon shall be replaced by a semicolon.
  • The z shall be replaced by a semicolon.
  • The head shall be at a semicolon such that two semicolons exist to the right of the head.

Table 5: States in the Add Subroutine
StateDescription
StartAddMoves the head forward one character.
FindSemiForDeleReplaces the ; mid-number with 1.
FindSumEndErases terminating ;.
EndSumWrites terminating ; at the tape position one character backwards.
FindSumStartReplaces z with ;.
StepBackwardMoves the head backwards one character.
ResetHeadSet head to previous ;, before the ; just written.
PauseAddFor noting next number in Fibonacci series.

5.0 Length of Tape and the Number of States

After three run-throughs of this Turing machine, five numbers in the Fibonacci sequence will be calculated. And the tape will contain 19 characters. As shown in Table 6, the number of states is 22. For the group activity I have defined for simulating a Turing machine, 42 people are needed. (One more person is needed, in computing the next number in the sequence, to be erased from the tape than ends up as characters on the tape.) I suppose one could get by with 36 people, if one is willing to some represent two states, one in each subroutine.

Table 6: State Count
SubroutineNumber Of
States
State Names
CopyPair15Error, Start, ReadFirstChar,
WriteFirstSemi, WriteFirstOne,
GoToTapeEnd, MarkTapeEnd,
NextChar, StepForward,
ReadChar, WriteSemi,
WriteLastSemi, SetHead,
WriteOne, PauseCopy
Add7StartAdd, FindSemiForDele,
FindSumEnd, EndSum,
FindSumStart, StepBackward,
PauseAdd
Total22

Appendix A: State Transition Tables

A.1: The CopyPair Subroutine
Table A-1: Start and ReadFirstChar
StartReadFirstChar
00Error00Error
bForwardsReadFirstCharbbError
;ForwardsReadFirstChar;xWriteFirstSemi
11Error1yWriteFirstOne
xxErrorxxError
yyErroryyError
zzErrorzzError
Table A-2: WriteFirstSemi and WriteFirstOne
WriteFirstSemiWriteFirstOne
00Error00Error
b;GoToTapeEndb1GoToTapeEnd
;ForwardsWriteFirstSemi;ForwardsWriteFirstOne
1ForwardsWriteFirstSemi1ForwardsWriteFirstOne
xForwardsWriteFirstSemixForwardsWriteFirstOne
yForwardsWriteFirstSemiyForwardsWriteFirstOne
zzErrorzzError
Table A-3: GoToTapeEnd and MarkTapeEnd
GoToTapeEndMarkTapeEnd
000Error
bbbError
;BackwardsMarkTapeEnd;zNextChar
1BackwardsMarkTapeEnd11Error
xxxError
yyyError
zzzError
Table A-4: NextChar and StepForward
NextCharStepForward
00Error0
bbErrorb
;BackwardsNextChar;ForwardsReadChar
1BackwardsNextChar1ForwardsReadChar
x;StepForwardx
y1StepForwardy
zBackwardsNextCharz
Table A-5: ReadChar and WriteSemi
ReadCharWriteSemi
00Error00Error
b1Errorb;NextChar
;xWriteSemi;FowardsWriteSemi
1yWriteOne1ForwardsWriteSemi
xxErrorxForwardsWriteSemi
yyErroryForwardsWriteSemi
zzWriteLastSemizForwardsWriteSemi
Table A-6: WriteLastSemi and SetHead
WriteLastSemiSetHead
00Error00Error
b;SetHeadbbError
;ForwardsWriteLastSemi;BackwardsSetHead
1ForwardsWriteLastSemi1BackwardsSetHead
xForwardsWriteLastSemixxError
yForwardsWriteLastSemiyyError
zForwardsWriteLastSemizzPauseCopy
Table A-7: WriteOne and PauseCopy
WriteOnePauseCopy
00Error0
b1NextCharb
;ForwardsWriteOne;
1ForwardsWriteOne1
xForwardsWriteOnex
yForwardsWriteOney
zForwardsWriteOnezzStartAdd
A.2: The Add Subroutine
Table A-8: StartAdd and FindSemiForDele
StartAddFindSemiForDele
00
bb
;;1FindSumEnd
11ForwardsFindSemiForDele
xx
yy
zForwardsFindSemiForDelez
Table A-9: FindSumEnd and EndSum
FindSumEndEndSum
00
bBackwardsEndSumbBackwardsEndSum
;bEndSum;bEndSum
1ForwardsFindSumEnd1;FindSumStart
xx
yy
zz
Table A-10: FindSumStart and StepBackward
FindSumStartStepBackward
00
bb
;BackwardsFindSumStart;BackwardsResetHead
1BackwardsFindSumStart1
xx
yy
z;StepBackwardz
Table A-11: ResetHead and PauseAdd
ResetHeadPauseAdd
00
bb
;;PauseAdd;;Start
1BackwardsResetHead1
xx
yy
zz
A.3: Modifications?

The above is my first working version. I have not proven that cases can never arise where I have not specified rules in the tables for the states for the Add subroutine. Nor do I know that all rules can be triggered by some, possibly invalid, input tape. I know that I have not defined the minimum number of states for the system. For example, the ReadChar state could be defined as in Table A-12, along with the elimination of the WriteLastSemi and SetHead states. This would result in the CopyPair subroutine specification not being met and a tighter coupling between the two subroutines. On the other hand, the subroutines are already coupled through the appearance of z on the tape during the transition from one subroutine to the other.

Table A-12: Modified ReadChar
ReadChar
00Error
b1Error
;xWriteSemi
1yWriteOne
xxError
yyError
zzPauseCopy