Three modest proposals for fixing the C standard.
PLOS paper ISO C is not suitable for operating systems.
Torvalds on aliasing. Ritchie on aliasing.
Three modest proposals for the C standard WG14

The automata theoretic roots of process algebra.
Large State Machines and Sequential functions
Hartmanis “Loop free products”
Rabin-Scott Finite Automata and Their Decision Problems
Hundreds of Paper-Mill Papers Peddled in Ads Were Later Published
A study by social scientist Anna Abalkina of Germany’s Free University of Berlin and colleagues found that nearly half of 4,407 IEEE conference paper titles advertised by suspected paper mills between 2021 and 2025 were later published. The ads openly sold authorship positions for as little as $64, with more than 2,000 advertised papers eventually appearing in conference proceedings. IEEE has retracted 66 identified papers and is considering expanded screening software and stronger oversight of conference contractors. — Science; Jeffrey Brainard (August 12, 2026)
These papers introduce sequential functions for specifying digital systems like operating systems and networks. The mathematical basis comes from Moore machines, Moore machine products, and primitive recursive functions on finite sequences. Primitive recursive functions on sequences were described by Rózsa Péter in the 1950s but their connection with automata was not explored. They provide an alternative to state diagrams and other traditional methods of defining Moore machines, and can concisely define very large scale state machines, interconnected machines, and abstract properties of the machines. Composition of primitive recursive sequential functions corresponds to automata products. The method is aimed at system designs, not verification of program text and is intended as an aid to system designers so that they can understand properties of their systems before writing code. The first paper is an introduction to the method and includes a number of examples, one of which is a proof that Paxos is safe.
State machines for large scale computer software and systems
The second paper shows how to use sequential functions define temporal logic like properties – for example, that something is always true, or must become true “eventually”. The sequential function analogs are more expressive – for example, eventually can be made to depend on different types of events and to work with systems that combine components that change state at different rates and in response to different events.
Specifications like temporal logic but with ordinary mathematics
The third paper gives some historical background on automata theory and argues that the 1970s consensus in Computer Science, that classical automata theory is too limited, was incorrect and ignored, in particular algebraic automata theory and automata products. The paper includes a discussion of “machine homomorphism” introduced in the 1960s, then modified in process algebra, and then eventually forgotten in the process algebra and larger formal methods literature. By the mid 1960s, Moore machines and concurrent products of Moore machines were well understood in the automata theory literature, but for a number of reasons, they were not applied to software specification.
Process algebra and automata theory
Also see Digital Circuits as Moore Machines for models of the real-time behavior of simple digital circuits
Unlike most Computer Science research on specification, there is no formal logic or other use of axiomatic methods, no lambda calculus, no non-determinism, no completed infinities (e.g. infinite sequences of events), not even any category theory needed for sequential functions. Then there is a paper defining modularity mathematically in terms of automata products (improving A mathematical basis for understanding software modularity ). And there is a paper that just presents the theory of sequential functions focused on the mathematics, not the CS applications.
The works are released under the creative commons NC-ND license with the added condition that use for training or other purpose in Artificial Intelligence systems is specifically prohibited as violating the prohibition on creating derivative works and/or use for profit.
One of the most important Computer Science papers introduced finite state machine language recognizers, the equivalence between non-deterministic and deterministic finite automata (in terms of what languages they recognize) , the Myhill congruences, etc.
Al Gore really did have a pivotal role in the development of the Internet and the incessant and ignorant jeering from the media on this issue did no favors to the American public.
From https://web.eecs.umich.edu/~fessler
Here is the definitive statement on Gore's involvement in "inventing" the Internet, from the guys who really did: **************************************************************************** Al Gore and the Internet By Robert Kahn and Vinton Cerf Al Gore was the first political leader to recognize the importance of the Internet and to promote and support its development. No one person or even small group of persons exclusively "invented" the Internet. It is the result of many years of ongoing collaboration among people in government and the university community. But as the two people who designed the basic architecture and the core protocols that make the Internet work, we would like to acknowledge VP Gore's contributions as a Congressman, Senator and as Vice President. No other elected official, to our knowledge, has made a greater contribution over a longer period of time. Last year the Vice President made a straightforward statement on his role. He said: "During my service in the United States Congress I took the initiative in creating the Internet." We don't think, as some people have argued, that Gore intended to claim he "invented" the Internet. Moreover, there is no question in our minds that while serving as Senator, Gore's initiatives had a significant and beneficial effect on the still-evolving Internet. The fact of the matter is that Gore was talking about and promoting the Internet long before most people were listening. We feel it is timely to offer our perspective. As far back as the 1970s Congressman Gore promoted the idea of high speed telecommunications as an engine for both economic growth and the improvement of our educational system. He was the first elected official to grasp the potential of computer communications to have a broader impact than just improving the conduct of science and scholarship. Though easily forgotten, now, at the time this was an unproven and controversial concept. Our work on the Internet started in 1973 and was based on even earlier work that took place in the mid-late 1960s. But the Internet, as we know it today, was not deployed until 1983. When the Internet was still in the early stages of its deployment, Congressman Gore provided intellectual leadership by helping create the vision of the potential benefits of high speed computing and communication. As an example, he sponsored hearings on how advanced technologies might be put to use in areas like coordinating the response of government agencies to natural disasters and other crises. As a Senator in the 1980s Gore urged government agencies to consolidate what at the time were several dozen different and unconnected networks into an "Interagency Network." Working in a bi-partisan manner with officials in Ronald Reagan and George Bush's administrations, Gore secured the passage of the High Performance Computing and Communications Act in 1991. This "Gore Act" supported the National Research and Education Network (NREN) initiative that became one of the major vehicles for the spread of the Internet beyond the field of computer science. As Vice President Gore promoted building the Internet both up and out, as well as releasing the Internet from the control of the government agencies that spawned it. He served as the major administration proponent for continued investment in advanced computing and networking and private sector initiatives such as Net Day. He was and is a strong proponent of extending access to the network to schools and libraries. Today, approximately 95% of our nation's schools are on the Internet. Gore provided much-needed political support for the speedy privatization of the Internet when the time arrived for it to become a commercially-driven operation. There are many factors that have contributed to the Internet's rapid growth since the later 1980s, not the least of which has been political support for its privatization and continued support for research in advanced networking technology. No one in public life has been more intellectually engaged in helping to create the climate for a thriving Internet than the Vice President. Gore has been a clear champion of this effort, both in the councils of government and with the public at large. The Vice President deserves credit for his early recognition of the value of high speed computing and communication and for his long-term and consistent articulation of the potential value of the Internet to American citizens and industry and, indeed, to the rest of the world. Version 1.2 Word count: 709 ================================================================= Vint Cerf WorldCom 22001 Loudoun County Parkway Building F2, Room 4115, ATTN: Vint Cerf Ashburn, VA 20147 Telephone (703) 886-1690 FAX (703) 886-0047 Alan M. Gaines Senior Science Associate for Spatial Data and Information National Science Foundation 4201 Wilson Blvd., Suite 1070 Arlington, VA 22230 Voice: +1.703.292.7857 FAX: +1.703.292.9152 email: againes@nsf.gov
Taken from Knuth Algorithm S mergesort P162-163 Vol 3 Second edition 1998
The major change is that the scratch buffer is not required to be adjacent and there are some changes because C array indexing starts with 0. This is very much how a mathematician writes code. You have to remember a larger than usual number of single letter variables and it has a very clever clockwork mechanism as the algorithm shifts between using the two arrays as source and destination, and as it merges in both directions (which seems cache foolhardy). It’s pretty efficient even so.
//x is the list to sort, z is a scratch list, N is the number of elements
inline static void kmsort(sort_t *restrict x, sort_t *restrict z, const int N)
{
int s,p; //s=0 if from x to scratch, p is sublist size
int i, j;
int k, l; //2 sublists start,end
int d; // direction of merging
int q, r; // remaining elements of list 1 and 2 to merge
sort_t *R,*D; //the rource and destination array
L1: s = 0; p = 1;
L2: if (!s) { R = x; D = z; } else { R = z; D = x; }
i = 0; j = N - 1; k = -1; l = N; d = 1; q = p; r = p;
L3: if (!LEQ(R [i], R[j]))
goto L8;
L4: k += d;
D[k] = R[i];
L5: i += 1;
q -= 1;
if (q > 0)
goto L3;
L6: k += d;
if (k == l)
goto L13;
else
D[k] = R[j];
L7: j -= 1;
r -= 1;
if (r > 0)
goto L6;
else
goto L12;
L8: k += d;
D[k] = R[j];
L9: j -= 1;
r -= 1;
if (r > 0)
goto L3;
L10: k += d;
if (k == l)
goto L13;
else
D[k] = R[i];
L11: i += 1;
q -= 1;
if (q > 0)
goto L10;
L12: q = p;
r = p;
d = -d;
{
int temp = k;
k = l;
l = temp;
}
if ((j - i) < p)
goto L10;
else
goto L3;
L13: p = p + p;
if (p < N) {
s = 1 - s;
goto L2;
} else {
if (s == 0) { //copy back from scratch
for (i = 0; i < N; i++) {
x[i] = z[i];
}
}
}
return; //done
}