Next Article in Journal
Graph-to-Text Generation with Bidirectional Dual Cross-Attention and Concatenation
Previous Article in Journal
Darwiche and Pearl’s Iterated Belief Revision: Not Always Spohn-Expressible
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

On Signifiable Computability: Part II: An Axiomatization of Signifiable Computation and Debugger Theorems

by
Vladimir A. Kulyukin
Department of Computer Science, Utah State University, Logan, UT 84322, USA
Mathematics 2025, 13(6), 934; https://doi.org/10.3390/math13060934
Submission received: 11 February 2025 / Revised: 1 March 2025 / Accepted: 2 March 2025 / Published: 11 March 2025
(This article belongs to the Section E1: Mathematics and Computer Science)

Abstract

:
Signifiable computability aims to separate what is theoretically computable from what is computable through performable processes on computers with finite amounts of memory. Mathematical objects are signifiable in a formalism L on an alphabet A if they can be written as spatiotemporally finite texts in L on A . In a previous article, we formalized the signification and reference of real numbers and showed that data structures representable as multidimensional matrices of discretely finite real numbers are signifiable. In this investigation, we continue to formulate our theory of signifiable computability by offering an axiomatization of signifiable computation on discretely finite real numbers. The axiomatization implies an ontology of functions on discretely finite real numbers that classifies them as signifiable, signifiably computable, and signifiably partially computable. Relative to L and A , signification is performed with two formal systems: the Former F ¨ ^ A , L that forms texts in L on A and the Transformer T ¨ ^ A , L that transforms texts formed by F ¨ ^ A , L into other texts in L on A . Singifiable computation is defined relative to L on A as a finite sequence of signifiable program states, the first of which is generated by F ¨ ^ A , L and each subsequent state is deterministically obtained from the previous one by T ¨ ^ A , L . We define a debugger function to investigate signifiable computation on finite-memory devices and to prove two theorems, which we call the Debugger Theorems. The first theorem shows that, for a singifiably partially computable function signified by a program on a finite-memory device D , the memory capacity of D is exceeded when running the program on signifiable discretely finite real numbers outside of the function’s domain. The second theorem shows that there are functions signifiably computable in general that become partially signifiably computable when signified by programs on D insomuch as the memory capacity of D can be exceeded even when the programs are executed on some signifiable discretely finite real numbers in the domains of these functions.

1. Introduction

While general computability describes functions computable on devices without any memory limitations [1], or, equivalently, computable in principle [2], actual computability aims to characterize functions computable on devices with finite amounts of memory available for computation. We call such devices finite-memory devices (FMD) [3]. In a previous article [4], we began to formulate a theory of signifiable computability (or, equivalently, a signifiable computability theory (SCT)). The SCT separates general computability investigated in the classical computability theory (CCT) from actual computability when computation occurs within a finite amount of memory, as is the the case in many areas of applied computer science. In signifiable computability, names of intuitive objects, such as numbers, functions, data types and structures (i.e., instances of data types), programs, and program states are treated as spatiotemporally finite texts constructed with formal languages (or, equivalently, formalisms) on specific alphabets. Thus, these texts signify (or, equivalently, designate or name) intuitive objects, such as numbers, functions, data types and structures, programs, and program states in a given universe of discourse described by a formalism L on an alphabet A (e.g., Lisp on Unicode). When the texts are stored within the available memory units on an FMD D , they signify the corresponding objects in the finite memory of D , thereby making the universe of discourse conditional not only on L and A , but also on D . E.g., a human programmer using Lisp on Unicode on a computer with 5 terabytes (TB) of combined RAM and hard disk space cannot signify an intuitive object on this FMD if the storage size of the signifying text (i.e., the name of the object in Lisp on Unicode) exceeds 5 TB.
In a previous investigation [4], we defined the concepts of signification and reference of real numbers and extended signification to number tuples and data types and structures. We showed that data structures representable as tuples of discretely finite real numbers are signifiable. The signification of multidimensional matrices was introduced to show that data structures representable as multidimensional matrices of discretely finite real numbers are also signifiable. We argued that, in order to be sufficiently expressive, L on A must be not only decimal-sufficient (i.e., should contain finitely many rules to signify discretely finite real numbers in the standard decimal notation or an equivalent thereof) but also tuple-sufficient (i.e., should have finitely many rules to signify sequences of such numbers).
In this investigation, we continue to formulate the SCT by offering an axiomatization of signifiable computation on discretely finite real numbers. We show how a sufficiently expressive L on A can be extended with instruction types and how these types can be signified with texts and arranged into sequences. Signified instructions in a text sequence can be executed (or, equivalently, performed) one-by-one in order to carry out the prescribed numerical computation. If the computation exists (i.e., the execution finishes), its result (or, equivalently, output) is signified with a text in L on A . An independent party can verify the computation from (1) the input text; (2) the text of the instruction sequence; and (3) the text with the sequences of the numerals of the individual instructions used in the computation.
This investigation is motivated by the following limitations of the CCT reflected in its axioms: (1) what is computable in principle (general computability) is indistinguishable from what is actually computable on computers with finite amounts of memory (actual computability); (2) the investigation of computability properties is confined to functions on natural numbers; (3) the formation of programs is insufficiently axiomatized insomuch as it is unclear how programs are formed (or, equivalently, generated or produced); (4) the transformation of programs to obtain a computation in the form of a finite sequence of program states is insufficiently axiomatized in that there is no concept of error or cost; (5) interpretation of input and output texts is unresolved to the extent that no position is taken on whether interpretation (e.g., a denotational or operational semantics) is part of computation or not. While the SCT is grounded in the CCT, it extends the CCT, because it (1) separates general computability from actual; (2) extends the investigation of computability properties to functions on discretely finite real numbers; (3) makes actual computability properties of functions explicitly dependent on formalisms, alphabets, and FMDs on which those functions are signified and computed; (4) introduces error and cost into computation; (5) takes a position that interpretation is not part of computation and as such belongs to metacomputability. As we formulate the SCT in this article, we reference, when appropriate, the CCT axioms summarized for the reader’s convenience in the Appendix A.
The remainder of this article is organized as follows. In Section 2, we review the basic ontology of the CCT presented in [1,2] and the formalism in [4] that we continue to use in this article. In Section 3, we axiomatize the formation and transformation of texts. Signification is actualized with two formal systems: the Former F ¨ ^ A , L that generates texts in L on A , and the Transformer T ¨ ^ A , L that transforms texts formed by F ¨ ^ A , L into other texts in L on A . In Section 4, we define formable and transformable instructions and axiomatize the formation and transformation of program instructions and formation of programs. In Section 5, we axiomatize program states and computations. Computation is defined relative to L on A as a finite sequence of signifiable program states, the first of which is generated by F ¨ ^ A , L and each subsequent state is deterministically obtained from the previous one by T ¨ ^ A , L . In Section 6, we axiomatize the transformation of programs and discuss whether it is possible for T ¨ ^ A , L to transform program states that are not generated by F ¨ ^ A , L . In Section 7, we offer an ontology of functions on discretely finite real numbers that classifies functions as signifiable, signifiably computable, and signifiably partially computable. In Section 8, we introduce memory limitations on signifiable computation to characterize functions as signifiably computable and partially computable on FMDs. Section 2, Section 3, Section 4, Section 5, Section 6, Section 7 and Section 8 can be viewed as the preliminary, auxiliary steps to Section 9, where we present our main results. In particular, we define a debugger function to actualize signifiable computation on FMDs and use it to prove two theorems, which we call the Debugger Theorems, to investigate some of the effects of finite memory on signifiable computation. In Section 10, we discuss our results. In Section 11, we summarize our findings and outline the scope of the next part of our investigation of signifiable computability.

2. Prolegomena

The reader may skip this section on first reading and return to it as necessary. Here, we review the basic concepts of the CCT and the basic formal apparatus in [4] that we continue to use in this article.
The CCT ontology used in this article is based on [1,2] and includes the following concepts:
  • function—a mathematical object, i.e., a mapping from a given domain to a given range;
  • alphabet—a finite set of symbols (or, equivalently, signs) (e.g., A = { " 0 " , " 1 " } );
  • formalism—a formal language L on a specific alphabet A defined with a finite set of syntactic rules used to name (or, equivalently, signify or designate) intuitive mathematical objects (e.g., numbers, functions, sequences, etc.);
  • model—a formal model to compute functions, such as a Turing machine (TM) (cf., e.g., Ch. 6 in [1]);
  • program—a signified finite sequence of instructions in L on A that specifies how a function named by the program can be computed, i.e., how a signified sequence of inputs in L on A can be mapped (or, equivalently, transformed) to a signified sequence of outputs by a computer capable of performing instructions in L on A ;
  • computer—a device or an agent, physical or abstract, that executes programs in L on A on given inputs according to a specific model;
  • program state—a state of a program in L on A signified by a spatiotemporally finite text in L on A that, at a minimum, signifies the value of every variable used by the program and the next instruction in the program for a computer to perform;
  • computation—a finite sequence of program states signified by a spatiotemporally finite text in L on A that a computer goes through in order to compute the signified values of a function designated by a program in L on A on a signified input (or, equivalently, to transform a signified input to a signified output);
  • class of functions—a set of functions; in the CCT, the three most prominent classes are: primitive recursive; computable; and partially computable.
Finite automata (cf., e.g., [5]) such as finite state machines (FSA), stack machines (also known as push-down automata (PDA)), and TMs are formal models signifiable with different formalisms on different alphabets to compute different classes of functions. A formalism L is necessarily paired with an alphabet A . E.g., a programming language, such as Lisp, Perl, C/C++, etc., can be defined on Unicode or ASCII. Computability is a property of functions. E.g., a primitive recursive function (e.g., f ( x ) = x + 1 ) is signifiable in different formalisms on different alphabets and is computable by an FSA, a PDA, or a TM. There are functions signifiable with context-free formalisms and computable by PDAs that are not computable by FSAs (e.g., f ( n ) = ën ? n , n > 0 , where ën and ? n denote n consecutive occurences of ë and ?, respectively). There are functions signifiable with context-sensitive formalisms that are computable by TMs but not by PDAs (e.g., f ( n ) = ën ? n ! n , n > 0 ) (cf., e.g., [6]). In formal logic, some texts in L on A are referred to as names and the named classes of those objects are called extensions (cf. p. 94 and pp. 268–269 in [7]). If a text signifies a unique object, it signifies a singleton.
The statements S 1 S 2 and S 1 S 2 mean that S 1 is a proper subset and a subset of the set S 2 , respectively; ∅ denotes the empty set. N , Z , Z , Z + , Q , R respectively denote the infinite sets of natural numbers ( N = { 0 , 1 , 2 , } ), of whole numbers ( Z = { , 2 , 1 , 0 , 1 , 2 , } ), of negative whole numbers ( Z = { , 2 , 1 } ), of positive whole numbers ( Z + = { 1 , 2 , 3 , } ), of rational numbers ( Q = { m n | m Z ,   n Z Z + } ), and of real numbers that include the whole numbers, the rational numbers, and the irrational numbers. If T i 1 , T i 2 , , T i k , k Z + are sets, then
T i 1 × T i 2 × × T i k = { ( t i 1 , t i 2 , , t i k ) | t i 1 T i 1 , t i 2 T i 2 , , t i k T i k } ,
where ( t i 1 , t i 2 , t i k ) is called a k-tuple, i.e., a finite sequence of k elements.
A finite-memory device (FMD) D is a computational device with a finite number of memory units (or, equivalently, memory cells) available for computation. An FMD is not a model of computation insomuch as it can perform computations according to different models so long as each computation can be signified within its memory capacity. If D is the set of all FMDs, then the function C C A P : D Z + maps each FMD to the number of its memory cells. Thus, each FMD has a strictly positive memory capacity. It should be noted that if a device D D is an FSA, a PDA, or a TM, then
¬ ( k ) { k Z + C C A P ( D ) = k } .
On the other hand, if D is an FMD, then
( k ) { k Z + C C A P ( D ) = k } .
Thus, if D 1 and D 2 are two TMs, the predicates C C A P ( D 1 ) = C C A P ( D 2 ) , C C A P ( D 1 ) < C C A P ( D 2 ) , C C A P ( D 1 ) > C C A P ( D 2 ) are, respectively, equivalent to = , < , > , of which the first statement is vacuously true, whereas the second and third statements have no immediate logical satisfaction without a reinterpretation of < and > (e.g., along the lines of Cantor’s set theory, where 0 < 2 0 ). On the other hand, if D 1 and D 2 are FMDs, then the three CCAP statements above can be assigned the Boolean values of True and False under the standard interpretation of the three comparison operators on natural numbers.
If D is an FSA, a PDA, or a TM, then D can be turned into an FMD if, and only if, one of the two conditions holds. First, C C A P ( D ) = k , k Z + , i.e., an explicit upper bound in the form of a concrete positive integer is placed on the combined size of the the text that signifies the finite control of D and the size of the input tape. Second, D is signified in a specific formalism on a specific alphabet (e.g., Lisp, Perl, C/C++ on Unicode) on a specific FMD (e.g., a computer with 5 TB of RAM and hard disk space). In the latter case, D is an FMD, because its memory capacity is bounded by the memory capacity of the device on which it runs, i.e., C C A P ( D ) 5 TB.
An elementary sign is that which can be written in exactly one memory cell. We enclose all elementary signs in pairs of matching " (e.g., "0", "1", "+"). The elementary sign "" is the empty sign. An alphabet is an enumerably finite, non-empty set of non-empty elementary signs. A text is a spatiotemporally finite sequences of elementary signs of A . We intentionally use the term text instead of the term string to avoid allusions to the modern string theory in physics or to the classical finite automata theory of theoretical computer science. All texts are also enclosed in matching pairs of ". An alphabet A is decimal-sufficient if, and only if, A contains the signs of the standard decimal notation or their isomorphic equivalents. L on A is decimal-sufficient if, and only if, it allows, via a finite set of rules, for the mechanical formation of texts on A in the characteristic-mantissa form of the standard decimal notation.
A basic text formation operation in L on A is concatenation, denoted as A , L . The order of the sign concatenation in the formation of a text is arbitrarily assumed to be left to right, i.e., for n Z + ,
s i 1 s i 2 s i n = s i 1 A , L s i 2 A , L s i 3 A , L s i n 1 A , L s i n .
Two enumerably infinite sets, denoted as
A L + ; A L ,
are associated with L on A . The first set includes all signs of A and all non-empty texts in L on A formed according to the finite set of rules of L . The second set is defined as
A L = { " " } A L + .
For t i A L + , 1 i l Z + , l > 1 , we let
A , L t 1 , t 2 , , t l = A , L | i = 1 l t i = A , L t 1 A , L t 2 A , L A , L t l .
If t A L + , then | t | is the number of the elementary signs from A in t. If s A , then | s | = 1 and | " " | = 0 . If | t | = n Z + , then s 1 , s 2 , ,   s n designate the consecutive elementary signs of t = s 1 s 2 s n from the leftmost to the rightmost, where s i A , 1 i n .
If f is a function, d o m ( f ) and r a n ( f ) denote the domain and the range of f, respectively; f : S R abbreviates d o m ( f ) = S r a n ( f ) = R , where ∧ denotes the logical and. E.g., if f ( n ) = ën ? n ! n , n > 0 , then d o m ( f ) = Z + and r a n ( f )   =   { ë ? ! , ëë ? ? ! ! , ëëë ? ? ? ! ! ! , } or, equivalently, f : N { ë ? ! , ëë ? ? ! ! , ëëë ? ? ? ! ! ! , } . If f : T i 1 × T i 2 × × T i k T j and ( t i 1 , t i 2 , , t i k ) d o m ( f ) , then f is defined on ( t i 1 , t i 2 , , t i k ) or, in symbols, f ( t i 1 , t i 2 , , t i k ) if, and only if, there exists t j T j such that f ( t i 1 , t i 2 , , t i k ) = t j or, equivalently, ( t j T j ) { f ( t i 1 , t i 2 , , t i k ) = t j } , where ∃ designates the logical existential quantifier. If ¬ ( t j T j )   { f ( t i 1 , t i 2 , , t i k ) = t j } , where ¬ designates the logical not, then f is undefined on ( t i 1 , t i 2 , , t i k ) or, in symbols, f ( t i 1 , t i 2 , , t i k ) . If f : T i 1 × T i 2 × × T i k T j and
( ( t i 1 , t i 2 , , t i k ) T i 1 × T i 2 × × T i k ) ( t j T j ) { f ( t i 1 , t i 2 , , t i k ) = t j } ,
where ∀ designates the logical universal quantifier, f is total on T i 1 × T i 2 × × T i k . If
( ( t i 1 , t i 2 , , t i k ) T i 1 × T i 2 × × T i k ) { f ( t i 1 , t i 2 , , t i k ) } ,
then f is partial on T i 1 × T i 2 × × T i k . It should be noted that while the notation f : T i 1 × T i 2 × × T i k T j is used for partial and total functions, total functions on T i 1 × T i 2 × × T i k are defined for all ( t i 1 , t i 2 , , t i k ) T i 1 × T i 2 × × T i k , whereas partial functions on T i 1 × T i 2 × × T i k may not be defined for some ( t i 1 , t i 2 , , t i k ) T i 1 × T i 2 × × T i k . Thus, every total function on T i 1 × T i 2 × × T i k is partial on T i 1 × T i 2 × × T i k , but not vice versa.
Let r R . Then, r is discretely finite in L on A if, and only if, there exists
S r = t | t A L + ,
where each t signifies (or, equivalently, designates or names) r and no other number, or, in symbols,
r { = } A , L S r .
If t S r , then t signifies r in L on A , or, in symbols,
t ( = ) A , L r .
{ = } A , L and ( = ) A , L are symmetric.
Let r R such that r { = } A , L S r . Then, r is finite-memory signifiable (FM-signifiable) or, equivalently, FM-designatable in L on A on an FMD D if, and only if, there exists S r S r such that S r = { t | C C A P ( D ) | t | } , in which case,
r { = } A , L , D S r
holds. If t S r , then t FM-signifies or, equivalently, FM-designates r in L on A on D , or, in symbols,
t ( = ) A , L , D r .
{ = } A , L , D and ( = ) A , L , D are symmetric. In general, the subscript D when added to the right of the subscripts L and A means that a relationship is defined not only relative to L and A but also to D , and, in particular, relative to C C A P ( D ) .
A numeral is t A L + that designates a real number. A decimal-sufficient alphabet A can be extended with the unique signs ⊴, ⊵, ∓ that designate the beginning of a tuple, the end of a tuple, and a number separator inside a tuple, respectively. E.g., let
A = { " 0 " , " 1 " , " 2 " , " 3 " , " 4 " , " 5 " , " 6 " , " 7 " , " 8 " , " 9 " , " + " , " " , " . " } ,
be a decimal-sufficient alphabet and let
B = A A Δ ; A Δ = { " " , " | a " , " a | " , " ; " , " " , " " , " " , " " } .
B consists of the standard decimal notation signs in A and the signs in A Δ that can be used to signify number tuples, data types, and data instances. Specifically, in B in (7), we let ⊴ = " | a ", ⊵ = "a | ", and ∓ = ";". Alphabets that contain these unique signs are tuple-sufficient. Thus, B is tuple-sufficient. L on a tuple-sufficient A is tuple-sufficient if, and only if, L contains finitely many rules that allow for the signification of k-tuples of discretely finite real numbers on A . For brevity, we will say that L on A is tuple-sufficient to mean that both L and A are tuple-sufficient. E.g., Lisp, Perl, C/C++ on Unicode are tuple-sufficient.
Let t i A L + , 1 i l Z + , l > 1 , t i , t i , t i . Then,
A , L t 1 , , t 2 , , , , t l
is the unmarked concatenation of t 1 , , t l in L on A and
A , L , A , L t 1 , , t 2 , , , , t l ,
is the marked concatenation of t 1 , , t l in L on A . E.g., in a tuple-sufficient L on B , "1;2;3" is the unmarked concatenation of "1", "2", and "3", whereas " | a 1;2;3a | " is the marked concatenation of "1", "2", and "3".
A k-tuple r = ( r 1 , , r k ) R k , 1 < k Z + , is signifiable or, equivalently, designatable in L on A if, and only if, (a) r is of type T and T is signifiable in L on A , or, in symbols, T A , L t T A L + ; and (b) r i ( = ) A , L t i , t i A L + , 1 i k . If (a) and (b) hold, then r is signifiable in L on A by
t r = A , L , A , L t 1 , , t 2 , , , , t k ,
or, in symbols,
r A , L t r .
If r is not signifiable in L on A , then r   A , L  ""; A , L is symmetric.
A k-tuple r = ( r 1 , , r k ) R k , 1 < k Z + , is finite-memory signifiable (FM-signifiable) or, equivalently, FM-designatable in L on A on D if, and only if, (a) r   A , L t r A L + and (b) | t r | C C A P ( D ) . If (a) and (b) hold, then r   A , L , D t r . If r is not FM-signifiable in L on A on D , then r   A , L , D  ""; A , L , D is symmetric.
Let p i be the i-th prime so that p 1 = 2 , p 2 = 3 , p 3 = 5 , etc., and let
π ( i ) = p i .
Let ( n 1 , , n k ) be a k-tuple such that n i N , 1 i k . The Gödel number (G-number) of ( n 1 , , n k ) is
[ n 1 , , n k ] = i = 1 k π ( i ) n i .
Let ( z 1 , , z k ) be such that z i Z + , 1 i k . The j-shifted Gödel number (denoted as G Δ = j , j N ) of this k-tuple is
[ z 1 , , z k ] Δ = j = i = 1 k π ( i + j ) z i .
The G-number and G Δ = j -number of ( ) are defined to be 1.
Let γ A : A Z + be a 1–1 function that maps each sign of A to a unique odd prime, i.e.,
γ A ( s i ) = π ( i + 1 ) , 1 i l , l > 0 .
E.g., for B in (7), we have
γ B ( " 0 " ) = 3 ; γ B ( " 1 " ) = 5 ; γ B ( " 2 " ) = 7 ; γ B ( " 3 " ) = 11 ; γ B ( " 4 " ) = 13 ; γ B ( " 5 " ) = 17 ; γ B ( " 6 " ) = 19 ; γ B ( " 7 " ) = 23 ; γ B ( " 8 " ) = 29 ; γ B ( " 9 " ) = 31 ; γ B ( " + " ) = 37 ; γ B ( " " ) = 41 ; γ B ( " . " ) = 43 ; γ B ( " " ) = 47 ; γ B ( " | a " ) = 53 ; γ B ( " a | " ) = 59 ; γ B ( " ; " ) = 61 ; γ B ( " " ) = 67 ; γ B ( " " ) = 71 ; γ B ( " " ) = 73 ; γ B ( " " ) = 79 .
The 1–1 function in (12) maps t A L + (i.e., t = s 1 s n , n Z + , s j A , 1 j n ) to a unique positive integer and maps "" to 0 (cf. Theorem 4 in [4]).
g A , L ( t ) = [ γ A ( s 1 ) , , γ A ( s n ) ] Δ = 1 if | t | > 0 , 0 if | t | = 0 .

3. Formation, Transformation, Metacomputability

A programming formalism  L on A is a formalism by which one formal system generates texts in L on A that signify sequences of numerical instructions that another formal system can perform. Hence,
Definition 1 (Programming Formalism).
Let L be tuple-sufficient on A . Then, L on A is a programming formalism if it is used by two formal systems: the Former F ¨ ^ A , L and the Transformer T ¨ ^ A , L .
A formal system in (1) is specified by a finite set of formal rules and a rule application mechanism to form texts or to transform texts into other texts. The rules and rule application mechanisms have no meaning inside the systems and, in that sense, are purely syntactic (cf. Ch. IV in [8]).
Definition 2 (The Former).
The formal text formation system, denoted as F ¨ ^ A , L , is a finite set of rules
R F ¨ ^ A , L = f r 1 , , f r k | f r j : A L m A L + , 0 < j k , k , m Z + ,
and a rule application mechanism M F ¨ ^ A , L to form texts in A L + .
Each formation rule f r j R F ¨ ^ A , L is assigned a unique name t f r j A L + (i.e., signified with a unique t f r j ). Since g A , L ( t f r j ) is a unique natural number, we have
( t ) t A L + t ( = ) A , L g A , L ( t f r j ) ,
so that each formation rule is mapped to a unique natural number signifiable in L on A , which we abbreviate as
f r j ( = ) A , L t f r j .
If F ¨ ^ A , L uses the rule sequence f r i 1 , f r i 2 , , f r i l , l Z + , to form t A L + from "", then, by convention, the first argument of each rule takes the output of the previous rule and the first argument of f r i 1 is "", whence
t = f r i l f r i l 1 f r i 2 f r i 1 t i 1 1 , , t i 1 m , , t i 2 m , t i l 1 m , t i l m ,
where t i j 1 = "" and t i j k A L , 1 < j l , 1 < k m Z + . E.g., if L is tuple-sufficient on
A = { " 0 " , " 1 " , " 2 " , " 3 " , " 4 " , " 5 " , " 6 " , " 7 " , " 8 " , " 9 " , " + " , " " , " . " , " " , " | a " , " a | " , " ; " , " " , " " , " " , " " , " " }
and R F ¨ ^ A , L contains the rule for A , L , then
" 3.14 " = A , L A , L A , L A , L " " , " 3 " , " . " , " 1 " , " 4 " .
A designates the concatenation of the signs in A separated with A . E.g., if = "♡", then, for A in (15), we have
A = " 0 1 2 3 4 5 6 7 8 9 + . | a a | ; " .
Definition 3 (Text Formation).
A mechanical formation or, simply, formation of t A L + by F ¨ ^ A , L is a finite sequence of formation rules f r i 1 , f r i 2 , , f r i l , f r i l R F ¨ ^ A , L such that
t = f r i l f r i l 1 f r i 2 f r i 1 t i 1 1 , , t i 1 m , , t i 2 m , t i l 1 m , t i l m ,
where
f r i j ( = ) A , L t f r i j A L + ; t i j 1 = " " ; t i j k A L ; 1 j l Z + ; 1 < k m Z + .
Each rule f r j R F ¨ ^ A , L has access to A .
Definition 4 (Formation Signature).
Let f r i 1 , f r i 2 , , f r i l , f r i l R F ¨ ^ A , L , l Z + , be a formation of t A L + by F ¨ ^ A , L , where, for m Z + ,
t = f r i l f r i l 1 f r i 2 f r i 1 t i 1 1 , , t i 1 m , , t i 2 m , t i l 1 m , t i l m .
Then,
s = A , L , t f r i l , , t f r i l 1 , , , t f r i 2 , , t f r i 1 , , a f r i 1 , , a f r i 2 , , , a f r i l 1 , , a f r i l , , ,
where f r i j ( = ) A , L t f r i j , 1 j l , a f r i 1 = A , L t i 1 1 , , , , t i 1 m , a f r i 2 = A , L t i 2 1 , , , , t i 2 m , …, a f r i l = A , L t i l 1 , , , , t i l m , for t i j k , 1 j l , 1 k m , is a formation signature of t A L + by F ¨ ^ A , L , whence
( f r i 1 , f r i 2 , , f r i l ) A , L s ,
and ( f r i 1 , f r i 2 , , f r i l ) is a signed formation of t A L + by F ¨ ^ A , L designated by s.
E.g., let L be tuple-sufficient on B in (7), where ⊴ = " | a ", ⊵ = " | a ", ∓ = ";", and
A , L ( = ) A , L " " .
Then, if we keep the matching pairs of " only in "" and "." for clarity and omit them elsewhere for brevity, then
s = " | a | a | a | a " " ; 3 a | ; " . " a | ; 1 a | ; 4 a | "
designates the formation signature of "3.14" by F ¨ ^ A , L .
Thus, any t A L + formed by F ¨ ^ A , L exists as a spatiotemporally finite entity constructed from a finite number of signs of A by finitely many rules signified in the formation signature of t. Hence, our first two axioms.
SCT Axiom 1. 
A signed formation of  t A L +  by  F ¨ ^ A , L  takes a finite amount of physical time, and t occupies a finite amount of physical space.
SCT Axiom 2. 
If s designates a formation signature of t by  F ¨ ^ A , L , then, given  A , s, and  R F ¨ ^ A , L , another formal system can deterministically verify the formation of t by  F ¨ ^ A , L  within a finite amount of physical time and space.
No a priori knowledge is assumed on how time and space are physically measured (e.g., sun cycles, turns of a sand clock, nanoseconds, meters, centimeters, cubic meters, bits, bytes, megabytes, etc.). SCT Axioms 1 and 2 concretize CCT Axiom A1 (cf. Appendix A) by taking a definite position on the origin of texts that designate programs: (1) these texts are produced by one formal system for another formal system; (2) their production can be deterministically verified; and (3) the produced texts are spatiotemporally finite objects.
For t A L + , the predicate
F ¨ ^ A , L ( t )
holds if, and only if, t is formed by F ¨ ^ A , L through a signed formation. We let F ¨ ^ A , L ( " " ) vacuously hold and define
S F ¨ ^ A , L = t A L + | F ¨ ^ A , L ( t )
to be the enumerably infinite set of texts formed by F ¨ ^ A , L . E.g., if A is Unicode and L is Lisp and R F ¨ ^ A , L includes the finitely many Common Lisp program formation rules in [9], then
F ¨ ^ A , L ( " ( d e f u n f ( n ) ( + n 1 ) ) " ) " ( d e f u n f ( n ) ( + n 1 ) ) " S F ¨ ^ A , L .
Definition 5 (The Transformer).
The formal text transformation system, denoted as T ¨ ^ A , L , is a finite set of rules
R T ¨ ^ A , L = t r 1 , t r k | t r j : A L A A , 1 j k , k Z + ,
and a deterministic rule application mechanism M T ¨ ^ A , L to transform texts in S F ¨ ^ A , L into texts in  A L .
Each transformation rule t r j R F ¨ ^ A , L is assigned a unique name w t r j A L + (i.e., signified with a unique w t r j ). Since g A , L ( w f r j ) is a unique natural number,
( t ) t A L + t ( = ) A , L g A , L ( w f r j )
so that each transformation rule is mapped to a unique natural number signifiable in L on A , which we abbreviate as
t r j ( = ) A , L w f r j .
Associated with every tuple ( A , L ) is a finite, non-empty set of error messages
E R R A , L = t | t A L + , E R R A , L S F ¨ ^ A , L = ,
that the transformation rules of T ¨ ^ A , L can output to signal that specific transformations are impossible. E.g., if T ¨ ^ A , L cannot verify the formation of t A L + by F ¨ ^ A , L , then T ¨ ^ A , L issues an error message.
Suppose that T ¨ ^ A , L uses the rule sequence t r i 1 , t r i 2 , , t r i l , l Z + , to transform t A L + to t A L . By convention, the first argument of each subsequent rule takes the output of the previous rule and the first argument of t r i 1 is t, whence we have the following definition:
Definition 6 (Text Transformation).
A mechanical transformation, or simply transformation, of t S F ¨ ^ A , L by T ¨ ^ A , L into t A L , t E R R A , L , is a finite sequence of transformation rules t r i 1 , t r i 2 , , t r i l , t r i l R T ¨ ^ A , L , t r i l ( = ) A , L w t r i j A L + , 1 j l Z + , where
t = t r i l t r i l 1 t r i 2 t r i 1 t .
An example of a transformation rule is substitution which T ¨ ^ A , L can use to substitute t 1 A L + for all occurrences of t 2 A L + in t 3 A L + so long as the texts satisfy a finite set of syntactic requirements (cf., e.g., Ch. 18, p. 558 in [1]; Ch. IX, § 44 in [8]; Ch. 14, pp. 402–403 in [9]); Ch. 4, p. 66 in [10], for various definitions of substitution in different formal systems).
Definition 7 (Transformation Signature).
Let t r i 1 , t r i 2 , , t r i l , t r i l R T ¨ ^ , A , L , l Z + , be a transformation of t S F ¨ ^ A , L by T ¨ ^ A , L , where
t = t r i l t r i l 1 t r i 2 t r i 1 t .
Then,
s = A , L , w t r i l , , w t r i l 1 , , , w t r i 2 , , w t r i 1 , , t , , , , , , ,
where t r i j ( = ) A , L w t r i j , 1 j l , is a transformation signature of the transformation of t into t by T ¨ ^ A , L , in which case
( t r i 1 , t r i 2 , , t r i l ) A , L s
holds, and ( t r i 1 , t r i 2 , , t r i l ) is a signed transformation, designated by s, of t into t by T ¨ ^ A , L .
Let t S F ¨ ^ A , L , t A L , t E R R A , L . The predicate
T ¨ ^ A , L ( t , t )
holds if, and only if, there exists a signed transformation of t into t by T ¨ ^ A , L . The relation T ¨ ^ A , L t , t is clearly transitive, i.e., if
T ¨ ^ A , L t , t T ¨ ^ A , L t , t ,
then
T ¨ ^ A , L t , t .
E.g., if A is Unicode, L is Lisp, and R T ¨ ^ A , L is the standard transformation rules of Common Lisp applied deterministically by the rule application mechanism known as the read-eval-print loop (cf., e.g., Ch. 20 in [9]), then
T ¨ ^ A , L ( " ( p r o g n ( d e f u n g ( n ) ( + n 1 ) ) ( g 2.14 ) ) " , " 3.14 " )
holds, because T ¨ ^ A , L uses the Lisp progn construct that defines a sequence of Lisp operations to transform "(defun g (n) (+ n 1)) (g 2.14))" into a text of a procedure associated with the symbol named "g", substitutes "2.14" for the variable named "n" in "(+ n 1)" to obtain "(+ 2.14 1)", and then uses the transformation rules associated with the function named "+" to transform "(+ 2.14 1)" to "3.14". One can easily verify this transformation in any Lisp system that implements the Common Lisp formation and transformation rules in [9]. E.g., if T ¨ ^ A , L is GNU CLISP 2.49.60+ on Linux 18.04 LTS, and F ¨ ^ A , L is used to form
"(progn (defun g (n) (+ n 1)) (g 2.14))"
  • on Unicode, then the following transformation is produced in the GNU CLISP 2.49.60+ Linux terminal, where ">" is the CLISP prompt.
  • "> (progn (defun g (n) (+ n 1)) (g 2.14))
  • 3.14"
Suppose F ¨ ^ A , L generates and signs
"(loop while (= 3.14 3.14) do (+ 13.7 13.7))"
for T ¨ ^ A , L to transform. T ¨ ^ A , L cannot transform the above text into another text designating a result, because the program, while formally flawless, contains an infinite loop. Consequently, although the choice and the application of a transformation rule by T ¨ ^ A , L are mechanical and deterministic, and both actions take a finite amount of physical time, the transformation of a program into a text designating a result may not take a finite amount of physical time.
The next axiom states that spatiotemporally finite transformations are verifiable. If a transformation and its signature are available, another formal system can independently and deterministically verify the transformation from its signature and the set of transformation rules.
SCT Axiom 3. 
If  T ¨ ^ A , L ( t , t ) , where  t A L + ,  t A L , and  t E R R A , L , holds and s designates the transformation signature of the transformation of t into  t  by  T ¨ ^ A , L , then, given t,  t , s, and  R T ¨ ^ , A , L , another formal system can deterministically verify the transformation of t into  t  by  T ¨ ^ A , L within finite amounts of physical time and space.
SCT Axiom 3 extends the CCT axioms by introducing the concept of deterministic verifiability of transformation. We should note here that SCT Axioms 1, 2, and 3 take no position with respect to computing agents that use F ¨ ^ A , L and T ¨ ^ A , L or computing devices on which these systems are signified. Thus, neither F ¨ ^ A , L nor T ¨ ^ A , L are identical to the computing agent L in CCT Axioms A2, A4, A5, A9, and A10.
By interpretation of a program P in L on A , we will mean the application of a denotational or operational semantics of L on A to P with respect to the input text t and, when applicable, to the output text t (cf., e.g., Chapters 17, 18 in [1]; Ch. 2 in [10])). We will use the term metacomputability to refer to a denotational and operational semantics of L on A and the interpretation of programs with respect to given input and output texts and assume that metacomputability is captured by neither the formation nor the transformation rules. We will not tackle the question of whether metacomputability is algorithmic in nature and leave it outside of the scope of this article. Hence,
SCT Axiom 4. 
Metacomputability occurs outside of  F ¨ ^ A , L  and  T ¨ ^ A , L .

4. Formation and Transformation of Instructions and Formation of Programs

Some texts formed by F ¨ ^ A , L and transformed by T ¨ ^ A , L designate instructions from a finite set of instruction types
I A , L = { I ˜ 1 , J ˜ 2 , , I ˜ n } , n Z + .
The elements of I A , L denote operations of a specific type, e.g., addition or subtraction of finitely many discretely finite real numbers. E.g., L is Lisp on Unicode, then
" ( + x 1 y 1 ) " , " ( + x 2 y 2 ) " , " ( + x 3 y 3 ) " ,
designate the same numerical operation type of addition applied to numerals designated by specific variable names. If we switch L to Perl on Unicode, then we obtain
" $ x 1 + $ y 1 " , " $ x 2 + $ y 2 " , " $ x 3 + $ y 3 " ,
designating the same numerical operation type.
Definition 8 (Signifiable Instruction).
If t A L + and i k I ˜ j I A , L , then the predicate A , L ( t , i k ) holds if, and only if, t signifies i k in L on A , in which case i k is a signifiable or, equivalently, designatable instruction in L on A . A , L is symmetric.
E.g., let x , y R and L stand for Lisp, P for Perl, and U for Unicode. We have the following relations hold.
U , L ( x + y , " ( + x y ) " ) U , L ( " ( + x y ) " , x + y ) U , P ( x + y , " $ x + $ y ; " ) U , P ( " $ x + $ y ; " , x + y ) U , L ( x y , " ( x y ) " ) U , L ( " ( x y ) " , x y ) U , P ( " $ x $ y ; " , x y ) U , P ( x y , " $ x $ y ; " ) U , L ( x y , " ( x y ) " ) U , L ( " ( x y ) " , x y ) U , P ( " $ x $ y ; " , x y ) U , P ( " $ x $ y ; " , x y ) U , L ( x / y , " ( / x y ) " ) U , L ( " / x y ) " , x / y ) U , P ( " $ x / $ y ; " , x / y ) U , P ( x / y , " $ x / $ y ; " )
The elements of I A , L vary from alphabet to alphabet and from programming formalism to programming formalism due to the software-hardware duality principle of computer science: specific instructions are written to run on devices designed to perform those and only those instructions. E.g., while one formalism may restrict its set of instructions to addition and subtraction of natural numbers, another formalism may be designed for a device that adds, subtracts, multiplies, and divides discretely finite real numbers.
Definition 9 (Formable Instruction).
If i k I ˜ j I A , L , then
F ¨ ^ A , L ( i k , t ) t S F ¨ ^ A , L A , L ( t , i k ) ,
in which case i k is an instruction in L on A formable or, equivalently, generatable by F ¨ ^ A , L . F ¨ ^ A , L is symmetric.
Definition 10 (Transformable Instruction).
If i k I ˜ j I A , L , then
A , L ( i k , t , t ) F ¨ ^ A , L ( i k , t ) T ¨ ^ A , L t , t , t A L + , t E R R A , L ,
in which case, i k is an instruction in L on A transformable by T ¨ ^ A , L .
The next axiom is rooted in the existence of general programming languages such as Lisp and Perl.
SCT Axiom 5. 
There exists  L  on  A  in which the instruction types in Table A1 in the Appendix A are spatiotemporally finitely formable and transformable.
SCT Axiom 5 agrees with CCT Axiom A9 in that the computational capacity of the computing agent is always finite, i.e., any agent, physical or abstract, can execute only a finite number of instruction types. However, SCT Axiom 5 differs from CCT Axiom A9, because it makes it explicit that the computational capacity of a computing agent is a characteristic of not just the computing agent, but also of L on A . In this sense, SCT Axiom 5 offers yet another take on the software-hardware duality principle: programming formalisms are designed for computational devices and computational devices are constructed to perform computations prescribed by programs signified with specific formalisms. We will hereafter refer to a tuple-sufficient L on A that satisfies SCT Axiom 5 as minimally adequate. E.g., Lisp, Perl, and C/C++ Unicode are minimally adequate.
Definition 11 (Formable Program).
Let L on A be minimally adequate. Let m , n , q Z + , 1 j n . If z 1 ( = ) A , L 1 , …, z n ( = ) A , L n  and  ( j ) ( m ) A , L ( i m , t i j , t i j ) i m I ˜ q I ˜ q I A , L , then
P k = A , L , z 1 , , t i 1 , , , , , z n , , t i n ,
where t i j S F ¨ ^ A , L , is a program formable by F ¨ ^ A , L . The function n i ( P k ) = n denotes the number of the instructions in P k . The predicate
F ¨ ^ A , L ( P k )
holds if, and only if, P k is formable by F ¨ ^ A , L . The set
P F ¨ ^ A , L = P k A L + | F ¨ ^ A , L ( P k )
is the enumerably infinite set of programs in L on A formable by F ¨ ^ A , L .
Thus, P k is formable by F ¨ ^ A , L or, in symbols, P k P F ¨ ^ A , L if, and only if, it is a finite concatenation of the enumerated formable and transformable instruction texts in L on A . E.g., P j in Figure 1 is a Lisp program on Unicode formable by the GNU CLISP 2.49.60+ disassembler.
Definition 11 allows us to give a programmatic illustration of SCT Axiom 3 in Figure 2, where the bottom box contains a Lisp program on Unicode formed by the GNU CLISP 2.49.60+ disassembler that no Lisp transformer T ¨ ^ A , L whose R T ¨ ^ A , L consists of the standard transformation rules of the Lisp read-eval-print loop can transform into a text on Unicode within a finite amount of physical time. However, each individual enumerated instruction text of P k in Figure 2, is transformable by T ¨ ^ A , L within a finite amount of physical time.

5. Program States and Computations

To transform P j P F ˙ ^ A , L deterministically into an output text designating the result of the computation formalized in P j on a singified input, T ¨ ^ A , L goes through a sequence of states of P j . Hence,
Definition 12 (Program State).
Let P j P F ˙ ^ A , L . Then, σ A L + is a valid state of P j if, and only if, T ¨ ^ A , L can determine from σ: (a) the numeral designating the number 1 i n i ( P j ) + 1 of the instruction in P j to perform; (b) the numeral designating the total number of the instructions of P j already performed; (c) the texts designating the type and value of every variable name in P j , including the type and value of the unique output variable denoted by j ; (d) the text P j ; and (e) for every variable name in σ, T ¨ ^ A , L can assign exactly one type and exactly one value. If σ is a valid state, then P j contained in σ is referred to as P j of σ, while σ is referred to as σ of P j .
E.g., a valid state σ i 1 of P j in Figure 1, constructed according to the Common Lisp syntactic conventions, is given in (23), where the symbol "…" in the right-hand side of the equality designates the text of the lines 2–18 and j = " 2 " , i.e., "2" is the numeral designating the number of the output register in this case.
σ i 1 = " ( 1 0 ( n a t u r a l - n u m b e r - p n ) ( n 12 ) " A , L " ( n a t u r a l - n u m b e r - p 2 ) ( 2 0 ) " A , L " ( " A , L P j A , L " ) " A , L " ) " = " ( 1 0 ( n a t u r a l - n u m b e r - p n ) ( n 12 ) " A , L " ( n a t u r a l - n u m b e r - p 2 ) ( 2 0 ) " A , L " ( 1 ( J M P L 7 ) 19 ( S K I P & R E T 2 ) ) ) " = " ( 1 0 ( n a t u r a l - n u m b e r - p n ) ( n 12 ) ( n a t u r a l - n u m b e r - p 2 ) ( 2 0 ) ( 1 ( J M P L 7 ) 19 ( S K I P & R E T 2 ) ) ) "
T ¨ ^ A , L mechanically obtains from σ i 1 in (23) the following elements:
  • "1" — designates the instruction number to perform;
  • "0" — designates the total number of instructions already performed;
  • "(natural-number-p n)" — designates the type of the input variable "n";
  • "(n 12)" — designates that the current value of "n" is "12" that, according to the standard decimal notation in Lisp on Unicode, designates the natural number 12;
  • "(natural-number-p 2)"—designates the type specification of the output variable;
  • "(2 0)" — designates that the current value of the output variable named "2" is "0";
  • "(1 (JMP L7) ... 19 (SKIP&RET 2))"— designates that the nineteen instructions of P j are enumerated with "1", "2", …, "19" that designate the natural numbers 1, 2, …, 19 in Lisp on Unicode.
Thus, by Definition 12, P j in Figure 1 is the program of σ i i in (23) and σ i 1 is a valid state of P j .
Definition 12 and valid program states like the state in (23) imply the existence of several predicates and functions that we now proceed to define to subsequently formalize the concept of transformation of programs in P F ˙ ^ A , L .
The function in (24) (VLDS abbreviates Valid State) returns "1", if σ is a valid program state, and "0" otherwise.
V L D S A , L ( σ ) : A + { " 0 " , " 1 " } ; V L D S A , L ( σ ) = " 1 " if σ is a valid program state ; " 0 " otherwise ,
where "1" is arbitrarily interpreted as True and "0" as False. E.g., if σ 1 is a valid program state and σ 2 is not, then
V L D S A , L ( σ 1 ) ( = ) A , L 1 ; V L D S A , L ( σ 2 ) ( = ) A , L 0 ,
which can be, respectively, abbreviated as
V L D S A , L ( σ 1 ) = 1 ; V L D S A , L ( σ 2 ) = 0 .
The function in (27) (PROG abbreviates Program) returns the text of the program of σ , if the latter is valid, and t e r r otherwise.
P R O G A , L ( σ ) : A L + A L + { t e r r } ; P R O G A , L ( σ ) = t if V L D S A , L ( σ ) = 1 ; t e r r if V L D S A , L ( σ ) = 0 ,
where t is the program of σ , t e r r E R R A , L . For example, if σ i 1 is given in (23) and P j is given in Figure 1, then P R O G A , L ( σ i 1 ) = P j .
The function in (28) (NPIS abbreviates Number of Program Instructions) returns the numeral designating the number of the instructions in P R O G A , L ( σ ) if σ is valid and t e r r otherwise.
N P I S A , L ( σ ) : A L + A L + { t e r r } ; N P I S A , L ( σ ) = t if V L D S A , L ( σ ) = 1 ; t e r r if V L D S A , L ( σ ) = 0 , w h e r e t ( = ) A , L n Z + , t e r r E R R A , L .
E.g., for σ i 1 in (23), N P I S A , L ( σ i 1 ) = " 19 " ( = ) A , L 19 . If, for some valid σ , N P I S A , L ( σ i 1 ) = t A L + and t ( = ) A , L z Z + , we abbreviate N P I S A , L ( σ ) = t ( = ) A , L z to N P I S A , L ( σ ) = z = n i ( P R O G A , L ( σ ) ) (cf. (11)).
The function in (29) (CINS abbreviates Current Instruction) returns the numeral designating the number of the instruction to execute in P R O G A , L ( σ ) , if σ is valid, and t e r r otherwise.
C I N S A , L ( σ ) : A L + A L + { t e r r } ; C I N S A , L ( σ ) = t if V L D S A , L ( σ ) = 1 ; t e r r if V L D S A , L ( σ ) = 0 , w h e r e t ( = ) A , L n Z + , t e r r E R R A , L .
E.g., for σ i 1 in (23), C I N S A , L ( σ i 1 ) = " 1 " ( = ) 1 Z + or, more succinctly, C I N S A , L ( σ ) = 1 .
The function in (30) is a side-effect function that sets the value returned by C I N S A , L to the numeral t.
S E T C I N S A , L ( σ , t ) : A L + × A L + A L + { t e r r } ; S E T C I N S A , L ( σ , t ) = σ if V L D S A , L ( σ ) = 1 t ( = ) A , L z 1 z n i ( P R O G A , L ( σ ) ) + 1 ; t e r r otherwise . w h e r e C I N S A , L ( σ ) = t , t e r r E R R A , L .
The function in (31) (TOTI abbreviates Total Instructions) returns the numeral designating the total number of the transformed (or, equivalently, performed or executed) instruction texts in P R O G A , L ( σ ) if σ is valid and t e r r otherwise.
T O T I A , L ( σ ) : A L + A L + { t e r r } ; T O T I A , L ( σ ) = t if V L D S A , L ( σ ) = 1 ; t e r r if V L D S A , L ( σ ) = 0 , w h e r e t ( = ) A , L n Z + , t e r r E R R A , L .
E.g., for σ i 1 in (23), T O T I A , L ( σ i 1 ) = " 0 " ( = ) 0 . If, for some valid σ , T O T I A , L ( σ ) = t A L + and t ( = ) A , L z Z + , we abbreviate T O T I A , L ( σ ) = t   ( = ) A , L z to T O T I A , L ( σ ) = z .
The next function in (32) (VVRS abbreviates Values of Variables) returns a marked concatenation designating a tuple of 2-tuples, each of which designates a variable and its numerical value. Toward that end, we let σ be valid and let P R O G A , L ( σ ) contain l > 0 variables, including the unique output variable designated by j . We let x i A L + , 1 i l , designate the i-th variable and z i A L + , 1 i l , designate the variable’s numerical value, i.e., z i ( = ) A , L r R , 1 i l . We let ⊴, ⊵, A L + designate the beginning of a tuple, the end of a tuple, and the separator sign, respectively. With these conventions in place, the function in (32) returns the text designating the tuple of 2-tuples, each of which designates a variable and its numerical value in P R O G A , L ( σ ) , when σ is valid, and t e r r otherwise.
V V R S A , L ( σ ) : A L + A L + { t e r r } ; V V R S A , L ( σ ) = t if V L D S A , L ( σ ) = 1 ; t e r r if V L D S A , L ( σ ) = 0 , w h e r e t = A , L , t 1 , , t 2 , , , , t l , , t e r r E R R A , L , t i = A , L , x i , , z i , 1 i l , l > 0 .
E.g., if we recall that in Lisp  = " ( " , = " ) " , and ∓ is any non-empty sequence of white space Unicode characters, then V V R S A , L ( σ i 1 ) = " ( ( n 2 ) ( j 0 ) ) " .
The function in (33) (OUTV abbreviates Output Value) returns the numeral designating the value of the output variable of P R O G A , L ( σ ) , if σ is valid, and t e r r otherwise.
O U T V A , L ( σ ) : A L + A L + { t e r r } ; O U T V A , L ( σ ) = t if V L D S A , L ( σ ) = 1 ; t e r r if V L D S A , L ( σ ) = 0 , w h e r e t ( = ) A , L r R , t e r r E R R A , L .
E.g., O U T V A , L ( σ i 1 ) = " 0 "   ( = ) A , L 0 . If, for some valid σ , O U T V A , L ( σ ) = t A L + and t ( = ) A , L r R , we abbreviate O U T V A , L ( σ ) = t   ( = ) A , L r to O U T V A , L ( σ ) = r . O U T V A , L takes the output of V V R S A , L ( σ ) (i.e., O U T V A , L ( V V R S A , L ( σ ) ) ) and returns the numeral designating the value of the output variable in the tuple so long as σ is valid.
The function in (34) (VV abbreviates Variable Value) returns the text designating the value of the i-th variable in V V R S A , L ( σ ) and t e r r otherwise.
V V A , L ( σ , t ) : A L + × A L + A L + { t e r r } ; V V A , L ( σ , t ) = t if V L D S A , L ( σ ) = 1 ; t e r r if V L D S A , L ( σ ) = 0 , w h e r e t ( = ) A , L i , 1 i l , t e r r E R R A , L , t ( = ) A , L r R .
We now define a useful variant of V V A , L to obtain the numerals designating the values of the input variables for any program that takes k Z + input texts. If V V R S A , L ( σ ) contain l > 0 variable-value tuples, of which the first 0 < k < l tuples, by convention, designate the names and values of the input variables. The function in (35) (IVV abbreviates Input Variable Value) returns the numeral designating the value of the i-th input variable in V V R S A , L ( σ ) , if σ is valid, and t e r r otherwise.
I V V A , L ( σ , t ) : A L + × A L + A L + { t e r r } ; I V V A , L ( σ , t ) = t if V L D S A , L ( σ ) = 1 ; t e r r if V L D S A , L ( σ ) = 0 , w h e r e t ( = ) A , L i , 1 i l , t e r r E R R A , L , t ( = ) A , L r R .
The function in (36) (NXTS abbreviates Next State) returns the next valid program state of P R O G ( σ ) A , L if σ is valid and an error message otherwise.
N X T S A , L ( σ ) : A L + A L + { t e r r } ; N X T S A , L ( σ ) = t r j ( σ ) if V L D S A , L ( σ ) = 1 ; t e r r if V L D S A , L ( σ ) = 0 , t e r r E R R A , L , t r j R T ¨ ^ A , L .
This function looks at the current instruction and deterministically constructs the next valid state σ from the type of the instruction and the variables used in the instruction in the current program state σ so long as that latter is valid, or, equivalently, it transforms σ into σ . The choice of the transformation rule t r j is determined by σ . Since the next valid state t r j ( σ ) = σ (the notation t r j ( σ ) = σ denotes the application of t r j to σ to compute σ ) necessarily depends on the specifics of L on A , we offer an intuitive and abstract outline of how T ¨ ^ A , L uses N X T S A , L to transform σ to σ .
T ¨ ^ A , L transforms the text of the instruction whose number is designated by C I N S A , L ( σ ) according to its type (cf. Table A1) and then (1) updates, if necessary, the value numerals of the variable names involved in this instruction, i.e., updates the text returned by V V R S A , L ( σ ) ; (2) updates the numeral designating the number of the instruction to execute in σ ; and (3) updates the numeral designating the total number of the instructions (or, to be more exact, instruction texts) of P R O G A , L ( σ ) transformed thus far to the numeral designating the value of the total number incremented by 1. Per Definition 6, if σ is valid, then we define N X T S A , L 0 ( σ ) = σ and, for l Z + , define
N X T S A , L l ( σ ) = t r i l t r i l 1 t r i 2 t r i 1 σ = σ , t r i j R T ¨ ^ A , L , 1 j l .
Thus, we have
Lemma 1. 
Let L on A be minimally adequate and let A contain the signs of the standard decimal notation. If N X T S A , L ( σ ) = σ t e r r , then T O T I A , L ( σ )   ( = ) A , L n and T O T I A , L ( σ )   ( = ) A , L   n + 1 , n N .
Let us assume that a minimally adequate L on A , like many modern programming languages, has at least four types of numerical instructions on the numerals in the standard decimal notation: addition, multiplication, subtraction, and division applicable to finitely many discretely finite real numbers. Then, if the current instruction is addition, the numerals designating the values of two or more variable names are added and the numeral of the sum is assigned to a variable name, the numeral value of which is accordingly updated in σ . The numerals designating the values of the variable names that are not affected by the instruction text, remain in σ exactly as they are in σ . The transformation of the multiplication and subtraction instruction types is performed analogously. The transformation of the division instructions is performed with the convention that the division by zero (or, to be more exact, by the numeral designating 0 in L on A ) results in an error message.
If L on A has the assignment instruction type whereby the value of a variable is set to a value, then the numeral value of that variable’s name is accordingly updated in σ . If L has a GOTO/JUMP instruction type and the current instruction prescribes a jump to a label (e.g., "(JMP L7)" in P j in Figure 1 prescribes a jump to the label "L7"), then no updates of the variable numeral values are performed, and the numeral of the next instruction to execute in σ is set to the numeral of the program line with that label. If multiple instruction texts of P R O G A , L ( σ ) have the same label, the numeral of the instruction to execute in σ is set to the numeral designating the smallest such number. If the current instruction calls for a jump to a label that does not exist in P R O G A , L ( σ ) , then the numeral designating the number of the instruction to execute in σ is set to the numeral designating N P I S A , L ( σ ) + 1 . The transformation of a dispatch to a numeral designating an instruction number is performed analogously to the transformation of a dispatch to a label. Thus,
Lemma 2. 
If N X T S A , L ( σ ) = σ t e r r , then P R O G A , L ( σ ) = P R O G A , L ( σ ) .
Associated with the execution of P P F ¨ ^ A , L are two states: a program start state and a program end state. The predicate in (38) (STARTS abbreviates Start State) returns "1" if σ is a valid program start state and "0" otherwise.
S T A R T S A , L ( σ ) : A + { " 0 " , " 1 " } ; S T A R T S A , L ( σ ) = " 1 " if V L D S A , L ( σ ) = 1 C I N S A , L ( σ ) = 1 T O T I A , L ( σ ) = 0 ; " 0 " otherwise .
The predicate in (39) (ENDS abbreviates End State) returns "1" if σ is a valid end state and "0" otherwise.
E N D S A , L ( σ ) : A L + { " 0 " , " 1 " } ; E N D S A , L ( σ ) = " 1 " if C I N S A , L ( σ ) = N P I S A , L ( σ ) + 1 ; " 0 " otherwise .
Suppose that T ¨ ^ A , L starts in a valid start state σ i 1 S T ¨ ^ A , L such that P k = P R O G A , L ( σ i 1 ) , and then uses a sequence of its transformation rules through N X T S A , L (cf. Equation (37)) to transform σ i 1 into σ i 2 , and so on, thus generating a finite sequence of states σ i 1 , σ i 2 , , σ i l , 1 < l Z + , where σ i l and σ i l are valid start and end states of P k , respectively, then N X T S A , L l 1 ( σ i 1 ) = σ i l . Hence,
Definition 13 (Signifiable Computation).
A signifiable computation of P k P F ˙ ^ A , L is a finite sequence of valid program states σ i 1 , σ i 2 , , σ i l , 1 j < l , 1 < l Z + , σ i 1 S F ˙ ^ A , L , such that
S T A R T S A , L ( σ i 1 ) = 1 E N D S A , L ( σ i l ) = 1 N X T S A , L ( σ i j ) = σ i j + 1 P R O G A , L ( σ i l ) = P k .
The predicate
S G N C O M P A , L ( P k , ( σ i 1 , σ i 2 , , σ i l ) )
holds if, and only if, σ i 1 , σ i 2 , , σ i l is a signifiable computation of P k in L on A .
Hence,
Lemma 3. 
Let S G N C O M P A , L ( P k , ( σ i 1 , σ i 2 , , σ i l ) ) . Then, T ˙ ^ A , L ( σ i j , σ i j + 1 ) , 1 j < l Z + , and T ˙ ^ A , L ( σ i 1 , σ i l ) .

6. Transformation of Programs

Definition 14 (Transformation of Programs). 
Let l Z + , 1 j n Z + , t j A L + , P k P F ˙ ^ A , L , and σ i 1 S F ˙ ^ A , L . Then, P k is transformable by T ˙ ^ A , L from σ i 1 , which is denoted as T ˙ ^ A , L ( P k , σ i 1 ) , if, and only if, ( σ i 1 , σ i 2 , , σ i n ) S G N C O M P A , L ( P k , ( σ i 1 , σ i 2 , , σ i n ) ) .
The next lemma follows from Definition 14 and Lemmas 2 and 3.
Lemma 4. 
P k P F ˙ ^ A , L and S G N C O M P A , L ( P k , ( σ i 1 , σ i 2 , , σ i l ) ) , 1 < l Z + . Then, the following statements are equivalent, for 1 j < l :
  • T ˙ ^ A , L ( P k , σ i 1 ) ;
  • T ˙ ^ A , L ( σ i j , σ i j + 1 ) ;
  • T ˙ ^ A , L ( σ i 1 , σ i l ) ;
  • N X T S l 1 ( σ i 1 ) = σ i l t e r r .
A question naturally arises whether it is possible for T ˙ ^ A , L to transform, in finitely many steps, a valid start state σ i 1 of a program P k into another valid state of P k when P k is not formed by F ˙ ^ A , L . In other words, can T ˙ ^ A , L ( P k , σ i j ) hold if P R O G ( σ i j ) = P k but P k P F ˙ ^ A , L ? Definition 11 implies a negative answer, because for the program to be transformable by T ˙ ^ A , L from a valid start state σ i 1 , every enumerated instruction text in P k must be transformable. F ˙ ^ A , L and T ˙ ^ A , L are co-dependent in that F ˙ ^ A , L cannot place in a program an instruction text that T ˙ ^ A , L cannot transform.
E.g., consider a Lisp program by Steele in Figure 3. This text is formally impeccable insomuch as it is formed according to the Lisp syntactic conventions. However, the program is not transformable unless one supplies the definitions of the functions stroke, stuck, make-oar, winded, and dream, all of which, in turn, can be converted by the Lisp disassembler into finite sequences of instruction texts that T ¨ ^ U n i c o d e , L i s p can transform with the rules of the read-eval-print loop from a valid start state for this program. For example, if T ¨ ^ U n i c o d e , L i s p is GNU CLISP 2.49.60+, then the attempted transformation of "(life)" results in
t e r r = " - E V A L : u n d e f i n e d f u n c t i o n R O W " E R R U n i c o d e , L i s p ,
whence
¬ U n i c o d e , L i s p ( " ( l i f e ) " , σ i 1 ) .
The above observations lead to the next axiom.
SCT Axiom 6. 
There exists a minimally adequate  L  on  A , where any  P k P F ¨ ^ A , L  is reducible to an enumerated sequence of instruction texts from a finite set of transformable instruction types that are irreducible to any other instruction types.
SCT Axiom 6 does not appear to have a direct equivalent among the CCT axioms. It is related to CCT Axiom A9 insomuch as it reflects the fact that the computational capacity of any computing agent is finite. This axiom reflects a common fact of modern compiler theory: all higher level constructs (e.g., function definitions and macros) of programming languages are reduced to a finite set of irreducible (also known as primitive) instructions (cf., e.g., Ch. 3 in [1]). Therefore, for any L on A compliant with SCT Axiom 6, we can assume that a P k P F ¨ ^ A , L is a concatenation of enumerated instruction texts, each of which designates an irreducible instruction type. We will hereafter assume that L on A is minimally adequate and satisfies SCT Axiom 6.

7. Signifiable Computability of Functions

To characterize functions that are signifiably computable in principle, we remove memory limitations imposed on computation by an FMD D , which is formalized in our next definition.
Definition 15 (Signifiably Computable Function).
A total function f : R m R is signifiably computable in L on A if, and only if, there exists P k P F ˙ ^ A , L and, for 1 < n Z + , 1 j m Z + , ( r 1 , , r m ) R m ,
( ( r 1 , , r m ) d o m ( f ) ) f ( r 1 , , r m ) = r
if, and only if,
( ( σ i 1 , σ i 2 , , σ i n ) ) S G N C O M P A , L ( P k , ( σ i 1 , σ i 2 , , σ i n ) ) I V V A , L ( σ i 1 , t i j ) ( = ) A , L r j j ( = ) A , L t i j O U T V A , L ( σ i n ) ( = ) A , L r .
The predicate S G N C F A , L ( f , P k ) holds if, and only if, f is signifiably computable in L on A and P k is a program that signifies f in L on A .
We proceed to characterize functions that are signifiably partially computable in principle.
Definition 16 (Signifiably Partially Computable Function).
A partial function f : R m R is signifiably partially computable in L on A if, and only if, there exists P k P F ˙ ^ A , L and, for 1 < n Z + , 1 j m Z + , ( r 1 , , r m ) R m ,
( r 1 , , r m ) d o m ( f ) f ( r 1 , , r m ) = r
if, and only if,
( ( σ i 1 , σ i 2 , , σ i n ) ) S G N C O M P A , L ( P k , ( σ i 1 , σ i 2 , , σ i n ) ) I V V A , L ( σ i 1 , t i j ) ( = ) A , L r j j ( = ) A , L t i j O U T V A , L ( σ i n ) ( = ) A , L r .
The predicate S G N P C F A , L ( f , P k ) holds if, and only if, f is signifiably partially computable in L on A and P k is a program that signifies f in L on A .
Definitions 15 and 16 imply
Lemma 5. 
If S G N C F A , L ( f , P k ) , then S G N P C F A , L ( f , P k ) .
Definitions 15 and 16 and Lemma 5 broaden the scope of CCT Axiom A0 by making the properties computable and partially computable apply to functions on discretely finite real numbers. The next definition states that signifiable functions are those functions that can be signified with texts in L on A .
Definition 17 (Signifiable Function).
A function f is signifiable in L on A , which is denoted as S G N F A , L ( f ) , if, and only if, there exists t A L + such that
f ( = ) A , L t .
If t C C A P ( D ) , for some FMD D , then f is signifiable in L on A on D , which is denoted as S G N F A , L , D ( f ) .
E.g., f : N N , f ( x ) = x + 1 , then
S G N F U n i c o d e , L i s p ( f ) where t U n i c o d e L i s p + that signifies f is given in Figure 1.
Lemma 6. 
There exist L on A and a function f such that
S G N F A , L ( f ) P k P F ¨ ^ A , L ¬ S G N C F A , L ( f , P k ) .
Proof. 
Let x A L + such that x ( = ) A , L r R . Let s A L + such that s ( = ) A , L 1 . Let
f ( x , P ) : A L + × P F ¨ ^ A , L { " 0 " , " 1 " } ; f ( x , P ) = " 1 " if S G N C O M P A , L ( P , ( σ i 1 , , σ i n ) ) ; " 0 " otherwise ,
where I V V A , L ( σ i 1 , s ) = x and x ( = ) A , L r , r R . Take A = U n i c o d e , L = L i s p , and consider the following t U n i c o d e L i s p +
"(defun f (x p) (if (halts-p p x) 1 0))",
where "(halts-p p x)" returns the text in U n i c o d e L i s p + designating the Boolean value True if a Lisp funcallable object designated by p U n i c o d e L i s p + halts on the real number designated by x U n i c o d e L i s p + . Since t ( = ) U n i c o d e , L i s p f , we have
S G N F U n i c o d e , L i s p ( f ) .
However, since the predicate halts-p is not signifiably computable in Lisp on Unicode,
¬ ( P k ) P k P F ¨ ^ U n i c o d e , L i s p S G N C F U n i c o d e , L i s p ( f , P k ) .
   □

8. Signifiable Computability of Functions on Finite Memory Devices

We now proceed to modify some of the definitions in Section 5 for situations when functions signifiable by programs in L on A are computed on an FMD D . We associate with every triplet L , A , D a non-empty set of error messages
E R R A , L , D = { t c a p } { t E R R A , L | C C A P ( D ) | t | } ,
where t c a p A L + , | t c a p | C C A P ( D ) , t c a p E R R A , L , is a unique error message whose size does not exceed the memory capacity of D . An important difference between the functions and predicates in Section 5 and the functions and predicates in this section is that the latter return t c a p when the memory capacity of D is exceeded.
The function in (42) returns V L D S A , L ( σ ) if the size of σ does not exceed the memory capacity of D . Otherwise, the function returns t c a p .
V L D S A , L , D ( σ ) : A L + { " 0 " , " 1 " , t c a p } ; V L D S A , L , D ( σ ) = V L D S A , L ( σ ) if | σ | C C A P ( D ) ; t c a p otherwise .
The function in (43) returns P R O G A , L ( σ ) , if σ is a valid program state and the size of σ does not exceed the memory capacity of D . Otherwise, t e r r or t c a p are returned.
P R O G A , L , D ( σ ) : A L + A L + { t e r r , t c a p } ; P R O G A , L , D ( σ ) = P R O G A , L ( σ ) if V L D S A , L , D ( σ ) = " 1 " ; t e r r if V L D S A , L , D ( σ ) = " 0 " ; t c a p if V L D S A , L , D ( σ ) = t c a p .
The function in (44) returns C I N S A , L ( σ ) , if σ is valid and the size of σ does not exceed the memory capacity of D . Otherwise, t e r r or t c a p are returned.
C I N S A , L , D ( σ ) : A + A + { t e r r , t c a p } ; C I N S A , L , D ( σ ) = C I N S A , L ( σ ) if V L D S A , L , D ( σ ) = " 1 " ; t e r r if V L D S A , L , D ( σ ) = " 0 " ; t c a p if V L D S A , L , D ( σ ) = t c a p .
The function in (45) returns T O T I A , L ( σ ) , if σ is valid and the size of σ does not exceed the memory capacity of D . Otherwise, t e r r or t c a p are returned.
T O T I A , L , D ( σ ) : A L + A L + { t e r r , t c a p } ; T O T I A , L , D ( σ ) = T O T I A , L ( σ ) if V L D S A , L , D ( σ ) = " 1 " ; t e r r if V L D S A , L , D ( σ ) = " 0 " ; t c a p if V L D S A , L , D ( σ ) = t c a p .
The function in (46) S T A R T S A , L ( σ ) , if σ is valid and the size of σ does not exceed the memory capacity of D . Otherwise, the function returns t e r r or t c a p .
S T A R T S A , L , D ( σ ) : A + { " 0 " , " 1 " , t e r r , t c a p } ; S T A R T S A , L , D ( σ ) = S T A R T S A , L ( σ ) if V L D S A , L , D ( σ ) = " 1 " ; t e r r if V L D S A , L , D ( σ ) = " 0 " ; t c a p if V L D S A , L , D ( σ ) = t c a p .
The function in (47) returns N P I S A , L ( σ ) , if σ is valid and the size of σ does not exceed C C A P ( D ) . Otherwise, t e r r or t c a p is returned.
N P I S A , L , D ( σ ) : A L + A L + { t e r r , t c a p } ; N P I S A , L , D ( σ ) = N P I S A , L ( σ ) if V L D S A , L , D ( σ ) = " 1 " ; t e r r if V L D S A , L , D ( σ ) = " 0 " ; t c a p if V L D S A , L , D ( σ ) = t c a p .
The function in (48) returns E N D S A , L ( σ ) , if σ is a valid program state and the size of σ does not exceed the memory capacity of D . Otherwise, it returns t e r r or t c a p .
E N D S A , L , D ( σ ) : A + { " 0 " , " 1 " , t e r r , t c a p } ; E N D S A , L , D ( σ ) = E N D S A , L ( σ ) if V L D S A , L , D ( σ ) = " 1 " ; t e r r if V L D S A , L , D ( σ ) = " 0 " ; t c a p if V L D S A , L , D ( σ ) = t c a p .
The function in (49) returns N X T S A , L ( σ ) , if σ is valid and the size of σ does not exceed the memory capacity of D . Otherwise, t e r r or t c a p are returned.
N X T S A , L , D ( σ ) : A L + A L + { t e r r , t c a p } ; N X T S A , L , D ( σ ) = N X T S A , L ( σ ) if V L D S A , L , D ( σ ) = " 1 " ; t e r r if V L D S A , L , D ( σ ) = " 0 " ; t c a p if V L D S A , L , D ( σ ) = t c a p .
We now define memory-dependent signifiable computation on discretely finte real numbers in (18). This definition is similar to its memory-independent counterpart in (13), but is defined in terms of memory-dependent functions and predicates defined above in this section.
Definition 18 (Signifiable Computation on Finite Memory).
A signifiable computation of P k P F ˙ ^ A , L on an FMD D is a finite sequence of valid program states σ i 1 , σ i 2 , , σ i l , 1 j < l , 1 < l Z + , such that
σ i 1 S F ˙ ^ A , L S T A R T S A , L , D ( σ i l ) = " 1 " E N D S A , L , D ( σ i l ) = " 1 " N X T S A , L , D ( σ i j ) = σ i j + 1 P R O G A , L , D ( σ i l ) = P k .
The predicate
S G N C O M P A , L , D ( P k , ( σ i 1 , σ i 2 , , σ i l ) )
holds if, and only if, σ i 1 , σ i 2 , , σ i l is a signifiable computation of P k in L on A on D .
Definition 19 (Signifiably Computable Function on Finite Memory).
A total function f : R m R is signifiably computable in L on A on D if, and only if, there exists P k P F ˙ ^ A , L and, for 1 < n Z + , 1 j m Z + , ( r 1 , , r m ) R m ,
( ( r 1 , , r m ) d o m ( f ) ) f ( r 1 , , r m ) = r
if, and only if,
( ( σ i 1 , σ i 2 , , σ i n ) ) S G N C O M P A , L , D ( P k , ( σ i 1 , σ i 2 , , σ i n ) ) ( σ i k , σ i k + 1 ) A , L s k , k + 1 | s k , k + 1 | C C A P ( D ) I V V A , L ( σ i 1 , t i j ) ( = ) A , L r j j ( = ) A , L t i j O U T V A , L ( σ i n ) ( = ) A , L r .
The predicate
S G N C F A , L , D ( f , P k )
holds if, and only if, f is signifiably computable in L on A on D and P k is a program that signifies f in L on A on D .
The next definition formalizes signifiably computable partial functions when the memory available for computation is confined to the memory capacity of D on which the signifiable computation is performed.
Definition 20 (Signifiably Partially Computable Function on Finite Memory).
A partial function f : R m R is signifiably partially computable in L on A on D if, and only if, there exists P k P F ˙ ^ A , L and, for 1 < n Z + , 1 k < n , 1 j m Z + , ( r 1 , , r m ) R m ,
( r 1 , , r m ) d o m ( f ) f ( r 1 , , r m ) = r
if, and only if,
( ( σ i 1 , σ i 2 , , σ i n ) ) S G N C O M P A , L , D ( P k , ( σ i 1 , σ i 2 , , σ i n ) ) ( σ i k , σ i k + 1 ) ( = ) A , L s k , k + 1 | s k , k + 1 | C C A P ( D ) I V V A , L ( σ i 1 , t i j ) ( = ) A , L r j j ( = ) A , L t i j O U T V A , L ( σ i n ) ( = ) A , L r .
The predicate
S G N P C F A , L , D ( f , P k )
holds if, and only if, f is signifiably partially computable in L on A on D and P k is a program that signifies f in L on A on D .
The above definitions imply that D can hold s k , k + 1 in its memory. In other words, the text s k , k + 1 that signifies two consecutive valid program states in a signifiable computation does not exceed the memory capacity of D . We will hereafter state that such an FMD has a sufficiently large memory capacity, whence the next definition.
Definition 21 (Sufficient Memory Capacity).
Let D be an FMD and P k P F ˙ ^ A , L . Then, D has a sufficient memory capacity relative to P k if, for any sequence of states such that
S G N C O M P A , L , D ( P k , ( σ i 1 , σ i 2 , , σ i l ) ) ,
( σ i k , σ i k + 1 ) A , L s k , k + 1 | s k , k + 1 | C C A P ( D ) , 1 k < l Z + .
The predicate
S M C A P A , L , D ( P k )
holds if, and only if, D has a sufficient memory capacity relative to P k .
We now axiomatize the signifiable computability of V L D S A , L , D .
SCT Axiom 7. 
( P k ) P k P F ˙ ^ A , L S M C A P A , L , D ( P k ) S G N C F A , L , D ( V L D S A , L , D , P k ) .
SCT Axiom 7 concretizes CCT Axiom A3 by formalizing a facility (i.e., V L D S A , L , D ) to move a computation forward step-by-step when a step is identical to a valid program state. SCT Axiom 7 also broadens CCT Axiom A8 by stating that there is an explicit finite bound (i.e., C C A P ( D ) ) on the amount of memory available for signifiable computation whenever signifiable computation is carried out by a computing agent (e.g., an operating system or a virtual machine) on D .
Since the functions P R O G A , L , D  (43), C I N S A , L , D  (44), T O T I A , L , D  (45), S T A R T S A , L , D  (46), N P I S A , L , D  (47), E N D S A , L , D  (48), N X T S A , L , D  (49), and S G N C O M P A , L , D  (18) are defined in terms of V L D S A , L , D , we have
Definition 22 (Sufficiently Powerful Finite Memory Device).
An FMD D is sufficiently powerful relative to L on A if, for any f, such that
f { P R O G A , L , D , C I N S A , L , D , T O T I A , L , D , S T A R T S A , L , D , N P I S A , L , D , E N D S A , L , D , N X T S A , L , D , S G N C O M P A , L , D } ,
( P k ) P k P F ¨ ^ A , L S M C A P A , L , D ( P k ) S G N C F A , L , D ( f , P k ) .

9. Main Results

We now present the two theorems, which we refer to as the Debugger Theorems, that constitute the main results of this investigation. The theorems are so called, because they characterize some properties of the debugger (DBGR) function defined as
D B G R A , L , D ( σ , s ) : A + × A + A + { t c a p , t e r r } ; D B G R A , L , D ( σ , s ) = N X T S A , L , D n 1 ( σ ) if S T A R T S D , A , L ( σ ) = " 1 " ( σ i j , σ i j + 1 ) { N X T S A , L , D ( σ i j ) σ i j + 1 { σ i j + 1 t e r r σ i j + 1 t c a p } } ; t e r r if ( σ i j ) N X T S A , L , D ( σ i j ) = t e r r ; t c a p if ( σ i j ) N X T S A , L , D ( σ i j ) = t c a p , where σ = σ i 1 , s ( = ) A , L n Z + , n > 1 , 1 j < n .
We define a debuggable FMD relative to L on A as
Definition 23 (Debuggable Finite Memory Device).
An FMD D is debuggable relative to L on A if
( P k ) P k P F ¨ ^ A , L S M C A P A , L , D ( P k ) S G N C F A , L , D ( D B G R A , L , D , P k ) .
We now prove
Lemma 7. 
Let D be an FMD debuggable relative to L on A . Let s A L + such that, for 1 < n Z + ,
s ( = ) A , L n S T A R T S A , L , D ( σ ) = " 1 " .
Then,
D B G R A , L , D ( σ , s ) = t c a p
if, and only if, for 1 j < n ,
V L D S A , L , D ( σ i j ) = " 1 " N X T A , L , D ( σ i j ) = t c a p .
Proof. 
We omit the subscripts A , L , D for brevity and let σ = σ i 1 . If S T A R T S ( σ i 1 ) = " 1 " and, for 1 j < n , V L D S ( σ i j ) = " 1 " and N X T ( σ i j ) = t c a p , then D B G R ( σ i 1 , s ) = t c a p , for s ( = ) j + 1 = n . Conversely, assume that D B G R ( σ i 1 , s ) = t c a p . Since S T A R T S ( σ i 1 ) = " 1 " ,
{ N X T ( σ i 1 ) = σ i 2 V L D S ( σ i 2 ) = " 1 " } N X T ( σ i 1 ) = t c a p .
If N X T ( σ i 1 ) = t c a p , then j = 1 and n = 2 . Otherwise, we proceed from j = 2 and examine each consecutive pair ( σ i j , σ i j + 1 ) in the same fashion as the pair ( σ i 1 , σ i 2 ) to find 2 j < n and j + 1 = n ( = ) s such that V L D S ( σ i j ) = " 1 " and N X T ( σ i j ) = t c a p .    □
Corollary 7.1. 
Let D be an FMD debuggable relative to L on A . Let s A L + such that, for 1 < n Z + ,
s ( = ) A , L n S T A R T S A , L , D ( σ ) = " 1 " .
Then,
D B G R A , L , D ( σ , s ) = t e r r
if, and only if, for 1 j < n ,
V L D S A , L , D ( σ i j ) = " 1 " N X T A , L , D ( σ i j ) = t e r r .
We now prove
Theorem 1. 
Let D be an FMD debuggable relative to L and A . Let f : R m R such that
S G N P C F A , L , D ( f , P k ) P k P F ¨ ^ A , L .
Then, if
σ A L + ( r 1 , , r m ) d o m ( f ) S T A R T S A , L , D ( σ ) = " 1 " P R O G A , L , D ( σ ) = P k I V V A , L , D ( σ , t i j ) ( = ) A , L r j t i j ( = ) A , L j 1 j m Z + ¬ ( s ) D B G R A , L , D ( σ , s ) = t e r r ,
then
( n Z + ) 1 < n n ( = ) A , L s D B G R A , L , D , ( σ , s ) = t c a p .
Proof. 
We omit the subscripts A , L , D for brevity. Let σ = σ i 1 be such that S T A R T S ( σ i 1 ) = " 1 " , P R O G ( σ i 1 ) = P k , and I V V ( σ i 1 , t i j )   ( = )   r j , 1 j m Z + , t i j A + . Let P w P F ¨ ^ A , L be such that S G N C F ( D B G R , P w ) .
Since ( r 1 , , r m ) d o m ( f ) , we have
¬ ( n > 1 ) S G N C O M P ( P k , ( σ i 1 , σ i 2 , , σ i n ) ) ,
whence
¬ ( n > 1 ) N X T S n 1 ( σ i 1 ) = σ E N D S ( σ ) = " 1 " O U T V ( σ ) ( = ) f ( r 1 , , r m ) .
We observe that if, for some σ , V L D S ( σ ) = " 1 " , T O T I ( σ ) = t A L + , t ( = ) z Z + , N X T ( σ ) = σ , and V L D S ( σ ) = " 1 " , then, by Lemma 1,
T O T I ( σ ) = t A L + t ( = ) z Z + z = z + 1 .
Let N X T ( σ i 1 ) = σ i 2 . If | σ i 2 | > C C A P ( D ) , then n = 2 . Otherwise, we run P w to compute D B G R ( σ i 1 , s 3 ) , s 3 ( = ) 3 , whereby P w computes
N X T ( N X T ( σ i 1 ) ) = N X T ( σ i 2 ) = σ i 3 .
If | σ i 3 | > C C A P ( D ) , then n = 3 . Otherwise, we continue incrementing the natural number corresponding to the previous state counter numeral by 1 and running P w on σ i 1 and
s 4 ( = ) 4 , s 5 ( = ) 5 , ,
(i.e., the numerals corresponding to the natural numbers 4 , 5 , ). After a finite number of such iterations, we necessarily reach σ and σ such that
N X T ( σ ) = σ V L D S ( σ ) = V L D S ( σ ) = " 1 " | σ | < | σ | ,
because in the standard decimal notation the numeral encoding T O T I ( σ ) contains more digit signs than the numeral encoding T O T I ( σ ) , whence
( n > 3 ) s ( = ) n D B G R ( σ i 1 , s n ) = t c a p .
   □
We now prove
Theorem 2. 
Let D be an FMD debuggable relative to L and A . Then, there exists f : R m R such that S G N C F A , L ( f , P k ) , P k P F ¨ ^ A , L , and, for some ( r 1 , , r m ) d o m ( f ) , if
σ A L + S T A R T S A , L , D ( σ ) = " 1 " P R O G A , L , D ( σ ) = P k I V V A , L , D ( σ , t i j ) ( = ) A , L r j t i j ( = ) A , L j 1 j m Z + ¬ ( s ) D B G R A , L , D ( σ , s ) = t e r r ,
Then,
( m Z + ) ( n Z + ) m n n ( = ) A , L s D B G R A , L , D , ( σ , s ) = t c a p .
Proof. 
We omit the subscripts A , L , D for brevity. Let f : N Z + such that f ( x ) = x + 1 . Then, S G N C F ( f , P k ) , P k P F ¨ ^ A , L (cf., e.g., P j in Figure 1). Let z Z + be the smallest positive integer such that z ( = ) w and | w | > C C A P ( D ) . Let
σ A L + S T A R T S ( σ ) = " 1 " P R O G ( σ ) = P k I V V ( σ , t i 1 ) ( = ) 0 t i 1 ( = ) 1 .
Since S T A R T S ( σ ) = " 1 " , then, by (50),
( m ) 1 m z m ( = ) v D B G R ( σ , v ) = t c a p .
   □
Corollary 2.1. 
Let D be an FMD debuggable relative to L and A . Let f in Theorem (2) be such that if ( r 1 , , r m ) , ( r 1 , , r m ) d o m ( f ) and r 1 < r 1 , , r m < r m , then f ( r 1 , , r m ) < f ( r 1 , , r m ) . Then, for some ( y 1 , , y n ) d o m ( f ) , if
σ A L + S T A R T S A , L , D ( σ ) = " 1 " P R O G A , L , D ( σ ) = P k I V V A , L , D ( σ , t i j ) ( = ) A , L y j t i j ( = ) A , L j 1 j m Z + ¬ ( s ) D B G R A , L , D ( σ , s ) = t e r r ,
then
( m Z + ) ( n Z + ) m n n ( = ) A , L v D B G R A , L , D , ( σ , v ) = t c a p .

10. Discussion

The proposed axiomatization broadens the scope of CCT Axiom A0 in that it makes the properties computable and partially computable apply to functions on discretely finite real numbers (cf. Definitions 15 and 16 and Lemma 5). The ontology of functions on discretely finite real numbers implied by the proposed axiomatization distinguishes three classes of functions: signifiable, signifiably computable, and signifiably partially computable. Per Lemma 5, signifiably computable functions are signifiably partially computable, but not vice versa. Per Lemma 6, there are signifiable functions that are not signifiably partially computable.
The proposed axiomatization characterizes signifiable computation on discretely finite real numbers in terms of two formal systems: the Former F ¨ ^ A , L that generates texts in L in A and the Transformer T ¨ ^ A , L that transforms texts formed by F ¨ ^ A , L into other texts in L on A . These systems are co-dependent on each other and cannot exist in isolation. Neither system is involved in the interpretation of the results insomuch as such interpretation is outside of their scope. Both systems can be signified as programs in minimally adequate formalisms and those programs can be executed by different computing agents, such as human programmers or automated program synthesizers and debuggers. Consequently, F ¨ ^ A , L and T ¨ ^ A , L are not identical to the computing agent L of CCT Axioms A4, A5, A9 and A10. All texts produced by these two formal systems are spatiotemporally finite. While F ¨ ^ A , L always takes a finite amount of physical time, regardless of how time is measured, to form a text, T ¨ ^ A , L is not guaranteed to take a finite amount of physical time to transform a text into another text. The formation and transformation of texts can be signed by both systems and verified by third parties.
Programs that use continuous, random or analogue methods are evidently inconsistent with CCT Axioms A4 and A5. However, they are consistent with the proposed axiomatization in the following sense. If such programs are signified in a minimally adequate formalism, then their formation and transformation can be deterministically verified at least on some inputs in the domains of functions that those programs designate. Furthermore, if those programs are executed on an FMD debuggable relative to the said formalism, then, per the two Debugger Theorems, the programs can be effectively debugged on all signifiable inputs. It should be noted that this debugging is effective, because on any signifiable input, the program that signifies the debugger function in (50) on the said FMD returns either the output signifying a discretely finite real number, an error message, or a message that the computation cannot be carried forward, because the FMD’s memory capacity is exceeded. This integration of error into computation makes the proposed axiomatization different from the CCT axiomatization.
SCT Axiom 5 of the proposed axiomatization concretizes CCT Axiom A9, because it states that the computational capacity of a computing agent is a characteristic of not just the computing agent but also of the programming formalism. SCT Axiom 7 of the proposed axiomatization also concretizes CCT Axiom A8 by stating that there is an explicit finite bound on the memory available for signifiable computation whenever the computation is carried out by a computing agent on an FMD. Furthermore, the Debugger Theorems (cf. Section 9) indicate that CCT Axioms A6, A7, A8, and A10 do not apply to actual computability, i.e., situations when the signification of computation is performed on FMDs.
The concept of Debuggable FMD (cf. Definition 23) also bears on CCT Axiom A9 and distinguishes the proposed axiomatization from the CCT axiomatization. Debuggable FMDs are FMDs on which the debugger function (cf. Equation  (50)) can be signified by a program in a minimally adequate L on A . Intuitively, debuggable FMDs are computational devices with finite amounts of memory available for computation that can be effectively debugged. Thus, the computational capacity of a computing agent is limited not only by a finite number of instruction types the agent can perform but also by a concrete finite amount of memory available for signifiable computation.
A fundamental difference between the proposed axiomatization and the CCT axiomatization is the explicit integration of cost into computation through the function TOTI (cf. Equations (31) and (45)). Cost is different from the standard Big-O analysis of computer science (cf., e.g., Ch. 2 in [11]). The Big-O analysis is based on two assumptions: (1) the number of steps can be known ahead of computation as a function of the size of the input, and (2) constant factors do not matter (e.g., f ( n ) = k n O ( n ) , for k Z + , even when k = 10 58 , i.e., the estimated number of photons in the observable universe). A consequence of the second assumption, almost never explicitly stated, is that the energy is available on demand to carry forward the prescribed computation. The function TOTI is not based on either assumption. It simply states that the cost of computation increases by one abstract unit (e.g., one unit of energy required to obtain a result, one unit of hardware maintenance cost, one unit of economic unavailability of computed results for decision making, etc.) with every signified instruction performed by a computing agent. To put it differently, per Lemma 1, the cost of signifiable computation monotonically increases by one abstract unit with every new signifiable program state.
Our approach to typed instructions (cf., e.g., Equation (22) and Definition 8) is inspired by the approach originally proposed by Church in [12]. However, our end objective is different. We do not aim to integrate λ -calculus (or any other formalism) into Russell’s hierarchical theory of logical types (cf., e.g., [13,14]). Rather, we aim to formally characterize what is computable in principle and what is computable with performable processes on computational devices with finite amounts of memory.
The usage of logically quantified variables in our formalism makes no ontological commitment that assertions containing the said variables imply that the ranges of the variables actually exist [15] or that designating texts serve as senses of names [16]. While our formal apparatus (cf. Section 2) relies on the axiom of choice of the Zermelo–Fraenkel set theory, the proposed axioms, definitions, lemmas, theorems, and implications thereof should not be viewed as arguments for or against replacing the Zermelo–Fraenkel set theory with the axiom of choice with the modern type theory as the foundation of mathematics (cf., e.g., [17]). The alternative foundations of mathematics are beyond the scope of our article.
Finally, we make no claim that the proposed axiomatization has no alternatives. Rather, it is our hope that this investigation will motivate other computability theory and recursion theory researchers to take a closer look at the differences between general and actual computabilities and to seek alternative axiomatizations of computability to gain deeper insights into the theory and practice of computer science.

11. Conclusions

In our previous investigation [4], we formalized the signification and reference of real numbers and showed that discretely finite structures representable as tuples of discretely finite numbers are signifiable on finite memory devices. In this investigation, we offered an axiomatization of signifiable computation on discretely finite real numbers and proved two theorems to investigate the computability properties of signifiably and partially signifiably computable functions on finite memory devices. For the next part of our investigation of significable computability, which we intend to cover in our next article, we plan to further investigate connections between signifiable computability and the theory of primitive recursive functions (cf., e.g., [18,19]) and, if and when possible, to connect signifiable computability to formal approaches to symbolic AI [10].

Funding

This research received no external funding.

Data Availability Statement

No new data were created or analyzed in this study.

Conflicts of Interest

The author declares no conflicts of interest.

Appendix A

Below are the 11 axioms of the classical computability theory (CCT) based on Chapters 1–3 in [2]. CCT Axiom A0 is based on footnote 2 on p. 2 in [2] that states that the concepts function and partial function are restricted to mappings on non-negative integers. The ordinal numbers in the CCT Axioms A1–A10 correspond to the ordinals in the 10-item list of statements or questions to which affirmative or negative answers are given in Section 1.1 in [2], pp. 2–5. The assumptions reflected in the CCT axioms below are apparent in Chapters 2–8 in [1], another classical text on computability and recursion theory.
CCT Axiom A0. 
Functions map natural numbers to natural numbers.
CCT Axiom A1. 
An algorithm is given as a set of instructions of finite size.
CCT Axiom A2. 
There exists a computing agent that can react to the instructions and carry out the computations.
CCT Axiom A3. 
There are facilities for making, storing, and retrieving steps in a computation.
CCT Axiom A4. 
If P is the set of instructions in an algorithm and L is a computing agent, then, given an input to P, L reacts to P by performing the computation in a discrete, stepwise fashion without using continuous methods or analogue devices.
CCT Axiom A5. 
L reacts to P by performing a computation deterministically, without random methods or devices.
CCT Axiom A6. 
There is no fixed finite bound on the size of inputs.
CCT Axiom A7. 
There is no fixed finite bound on the size of a set of instructions P.
CCT Axiom A8. 
There is no fixed finite bound on the amount of memory storage available to L to carry out a computation in P.
CCT Axiom A9. 
There is a fixed finite bound on the capacity of the computing agent L.
CCT Axiom A10. 
There is no fixed finite bound on the length of the computation performed by L on P; it is only required that the computation terminate after some finite number of steps.
Table A1. Instruction types in I A , L spatiotemporally finitely formable and transformable in programming formalisms that satisfy SCT Axiom 5. The subscripts A and L in the right column are omitted for brevity.
Table A1. Instruction types in I A , L spatiotemporally finitely formable and transformable in programming formalisms that satisfy SCT Axiom 5. The subscripts A and L in the right column are omitted for brevity.
Instruction TypeSemantics
S E T ( v , t ) , v A + , t A set the value of the variable
named v to t
A D D ( t 1 , , t k ) , t i A + , 1 i k , k > 1 t i ( ) r i R
( i = 1 k r i , t) ∧ ( i = 1 k r i , t , t )
t ( ) i = 1 k r i
S U B ( t 1 , , t k ) , t i A + , 1 i k , k > 1 t i ( ) r i R
( r 1 r 2 r k , t )
( r 1 r 2 r k , t , t )
t ( ) r 1 r k
M U L ( t 1 , , t k ) , t i A + , 1 i k , k > 1 t i ( ) r i R
( i = 1 k r i , t )
( i = 1 k r i , t , t )
t ( ) i = 1 k r i
D I V ( t 1 , t 2 ) , t i A + , 1 i 2 t 1 ( ) r 1 R
t 2 ( ) r 2 R r 2 0
r 1 r 2 , t r 1 r 2 , t , t
t ( ) r 1 r 2
C O N C ( t 1 , , t k ) , t i A + , 1 i k , k > 1 | i = 1 k t i , t
| i = 1 k t i , t , t
t = A | i = 1 k t i
S U B S T ( t , v 1 , t 1 , , v k , t k ) , t , t i , v i A + , 1 i k , k > 1 return the text obtained by
substituting in t  t 1 for v 1 , ,
t k for v k .

References

  1. Davis, M.; Sigal, R.; Weyuker, E. Computability, Complexity, and Languages: Fundamentals of Theoretical Computer Science, 2nd ed.; Harcourt, Brace & Company: Boston, MA, USA, 1994. [Google Scholar]
  2. Rogers, H., Jr. Theory of Recursive Functions and Effective Computability; The MIT Press: Cambridge, MA, USA, 1988. [Google Scholar]
  3. Kulyukin, V. On Correspondences between feedforward artificial neural networks on finite memory automata and classes of primitive recursive functions. Mathematics 2023, 11, 2620. [Google Scholar] [CrossRef]
  4. Kulyukin, V.A. On Signifiable Computability: Part I: Signification of Real Numbers, Sequences, and Types. Mathematics 2024, 12, 2881. [Google Scholar] [CrossRef]
  5. Hopcroft, J.E.; Ullman, J.D. Introduction to Automata Theory, Languages, and Computation; Narosa Publishing Hourse: New Delhi, India, 2002. [Google Scholar]
  6. Kuroda, S.Y. Classes of languages and linear-bounded automata. Inf. Control 1964, 7, 207–223. [Google Scholar] [CrossRef]
  7. Quine, W.V. Methods of Logic; Harvard University Press: Cambridge, MA, USA, 1982. [Google Scholar]
  8. Kleene, S.C. Introduction to Metamathematics; D. Van Nostrand: New York, NY, USA, 1952. [Google Scholar]
  9. Steele, G.L. Common Lisp: The Language, 2nd ed.; Digital Press: Bedform, MA, USA, 1990. [Google Scholar]
  10. Genesereth, M.R.; Nilsson, N.J. Logical Foundations of Artificial Intelligence; Morgan Kaufmann: Los Altos, CA, USA, 1987. [Google Scholar]
  11. Cormen, T.H.; Leiserson, C.E.; Rivest, R.L. Introduction to Algorithms; MIT Press: Cambridge, MA, USA, 1993. [Google Scholar]
  12. Church, A. A formulation of the simple theory of types. J. Symb. Log. 1940, 5, 56–68. [Google Scholar] [CrossRef]
  13. Russell, B. Mathematical logic as based on the theory of types. Am. J. Math. 1908, 30, 222–262. [Google Scholar] [CrossRef]
  14. Kamareddine, F.; Laan, T.; Nederpelt, R. Types in logic and mathematics before 1940. Bull. Symb. Log. 2002, 8, 185–245. [Google Scholar] [CrossRef]
  15. Church, A. Ontological commitment. J. Philos. 1958, 55, 1008–1014. [Google Scholar] [CrossRef]
  16. Church, A. A revised formulation of the logic of sense and denotation. Alternative (1). Nous 1993, 27, 141–157. [Google Scholar]
  17. Altenkirch, T. Should type theory replace set theory as the foundation of mathematics? Glob. Philos. 2023, 33, 21. [Google Scholar] [CrossRef]
  18. Petersen, U. Induction and primitive recursion in a resource conscious logic—With a new suggestion of how to assign a measure of complexity to primitive recursive functions. Dilemmata Jahrb. Asfpg 2008, 3, 49–106. [Google Scholar]
  19. Paolini, L.; Piccolo, M.; Roversi, L. A class of recursive permutations which is primitive recursive complete. Theor. Comput. Sci. 2020, 813, 218–233. [Google Scholar] [CrossRef]
Figure 1. (Top box) A definition in Lisp on Unicode of a strongly typed function f ( n ) = n + 1 on natural numbers, from which P j in the bottom box is automatically formed by the GNU CLISP 2.49.60+ disassembler. (Bottom box) The program P j in Lisp on Unicode is a concatenation of enumerated instruction texts generated from the definition of the function f in the top box by the GNU CLISP 2.49.60+ disassembler. The statements to the right of the semicolons, which are single line comment markers in Lisp, are comments automatically generated by the disassembler.
Figure 1. (Top box) A definition in Lisp on Unicode of a strongly typed function f ( n ) = n + 1 on natural numbers, from which P j in the bottom box is automatically formed by the GNU CLISP 2.49.60+ disassembler. (Bottom box) The program P j in Lisp on Unicode is a concatenation of enumerated instruction texts generated from the definition of the function f in the top box by the GNU CLISP 2.49.60+ disassembler. The statements to the right of the semicolons, which are single line comment markers in Lisp, are comments automatically generated by the disassembler.
Mathematics 13 00934 g001
Figure 2. (Top box) A definition in Lisp on Unicode of an infinite loop, from which the Lisp program P k in the bottom box is automatically formed by the GNU CLISP 2.49.60+ disassembler. (Bottom box) The program P k in Lisp on Unicode is a concatenation of enumerated instruction texts formed from the definition of the loop in the top box by the GNU CLISP 2.49.60+ disassembler. The statements to the right of the semicolons, which are single line comment markers in Lisp, are comments automatically generated by the disassembler.
Figure 2. (Top box) A definition in Lisp on Unicode of an infinite loop, from which the Lisp program P k in the bottom box is automatically formed by the GNU CLISP 2.49.60+ disassembler. (Bottom box) The program P k in Lisp on Unicode is a concatenation of enumerated instruction texts formed from the definition of the loop in the top box by the GNU CLISP 2.49.60+ disassembler. The statements to the right of the semicolons, which are single line comment markers in Lisp, are comments automatically generated by the disassembler.
Mathematics 13 00934 g002
Figure 3. (Top box) A Lisp program by Guy Steele on p. 191 in [9] to illustrate the operational semantics of catch and throw with unwind-protect. (Bottom box) The program generated from the definition of the Lisp function l i f e in the top box by the GNU CLISP 2.49.60+ disassembler. The statements to the right of the semicolons, which are single line comment markers in Lisp, are comments automatically generated by the disassembler.
Figure 3. (Top box) A Lisp program by Guy Steele on p. 191 in [9] to illustrate the operational semantics of catch and throw with unwind-protect. (Bottom box) The program generated from the definition of the Lisp function l i f e in the top box by the GNU CLISP 2.49.60+ disassembler. The statements to the right of the semicolons, which are single line comment markers in Lisp, are comments automatically generated by the disassembler.
Mathematics 13 00934 g003
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Kulyukin, V.A. On Signifiable Computability: Part II: An Axiomatization of Signifiable Computation and Debugger Theorems. Mathematics 2025, 13, 934. https://doi.org/10.3390/math13060934

AMA Style

Kulyukin VA. On Signifiable Computability: Part II: An Axiomatization of Signifiable Computation and Debugger Theorems. Mathematics. 2025; 13(6):934. https://doi.org/10.3390/math13060934

Chicago/Turabian Style

Kulyukin, Vladimir A. 2025. "On Signifiable Computability: Part II: An Axiomatization of Signifiable Computation and Debugger Theorems" Mathematics 13, no. 6: 934. https://doi.org/10.3390/math13060934

APA Style

Kulyukin, V. A. (2025). On Signifiable Computability: Part II: An Axiomatization of Signifiable Computation and Debugger Theorems. Mathematics, 13(6), 934. https://doi.org/10.3390/math13060934

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop