User:Blashyrkh/Crazy J
Note: this page is discontinued 2026-01-09, everything is in global scope now. Visit the recent version: Crazy J
Intro
Crazy J, designed and implemented by User:Blashyrkh in late 2025, is a crippled little brother of Lazy K. It resembles the syntax of its older brother (two of them, actually), uses the same IO model (with tiny modification), but based on different set of combinators. Which makes it slightly... different.
Instructions
Crazy J is based on non-complete IJ basis:
I = λ x . x J = λ x y z w . x y (x w z)
Nevertheless, Crazy J is proven to be Turing-complete (by implementing Cyclic tag system in it).
Syntax
Syntax of Crazy J is more strict than the one of Lazy K: it doesn't allow to mix styles. The whole program must be written either in combinator calculus style or in unlambda style, but not both.
Syntax Semantics
Program ::= CCExpr CCExpr
| ULExpr ULExpr
| "" (λ x . x)
CCExpr ::= "I" (λ x . x)
| "J" (λ xyzw . xy(xwz))
| CCExpr1 CCExpr2 ... CCExprN ((CCExpr1 CCExpr2) ... CCExprN)
| "(" CCExpr ")" CCExpr
ULExpr ::= "i" (λ x . x)
| "j" (λ xyzw . xy(xwz))
| "`" ULExpr1 ULExpr2 (ULExpr1 ULExpr2)
Whitespace is ignored. The rest of a string starting from # until the end of line is a comment and is ignored too.
Obviously, Iota and Jot styles are not applicable to Crazy J since it must remain non-complete to justify its existence.
IO model
Almost exactly as of Lazy K. To be precise:
- Input is Church list of Church numerals where each element represents single byte of input stream. Contrary to Lazy K, ASCII character 0 is represented as Church numeral 1, ASCII character 1 - as Church numeral 2, and so on. The input stream is terminated with Church value 257 infinitely repeated.
- The program is called as a function with the input list passed as a parameter.
- Result of program evaluation must be a Church list of Church numerals. First value greater than or equal to 257 marks the end of output. This value minus 257 is the program's exit code. Output list is never examined beyond EOF, and it's not just implementation detail as of Lazy K. It's essential part of Crazy J specification.
- Input is as lazy as possible: next byte is read from standard input only when it's needed to apply it to an argument.
Church numeral 0 is impossible in IJ basis, and therefore all input codes are incremented on input and decremented back before output.
Lack of K combinator
Whereas Lazy K's motto is "there's more than one way to do it", Crazy J's motto is "there's no way to do it, but we do it anyway."
To be precise:
- No constant function (known as "K combinator")
- No Church booleans
- No Church zero
- No Scott numerals
- No familiar list access primitives like
car,cdrandnth - You'll have to find IJ representation of your favorite combinators (but we can help you here: we bruteforced several common ones)
Some common combinators in IJ basis
We performed an exhaustive computer search for expressions of common combinators in IJ basis. The table will be appended by new findings since the search is still on.
| Combinator name | LC expression | Bruteforced Crazy J expression |
|---|---|---|
| T | λ x y . y x | ``jii
|
| Q1 | λ x y z . x (z y) | `ji
|
| R | λ x y z . y z x | `j``jii
|
| Q4 | λ x y z . z (y x) | ``ji``jii
|
| Q3 | λ x y z . z (x y) | ``j``ji``jiii
|
| Q2 | λ x y z . y (z x) | ```j``jii`ji`j``jii
|
| F | λ x y z . z y x | ```j``jiii`j`j``jii
|
| C | λ x y z . x z y | ```j``jii`j``jii`j``jii
|
| Q | λ x y z . y (x z) | ```j`j`j``jii```jiii`j`ji
|
| B | λ x y z . x (y z) | ```j``jii``ji``jii`j`j``jii
|
| V | λ x y z . z x y | ```j``j```jii`j`j``jii``jiiij
|
| F* | λ x y z w . x w z y | ```j``jii`j`j``jii`j``jii
|
| V* | λ x y z w . x z y w | ```j``jii`j``jii````jiji`ji
|
| C* | λ x y z w . x y w z | ```j`j``jii`j``jii``ji`j``jii
|
| G | λ x y z w . x w (y z) | ```j``jii``ji`j``jii`j`j``jii
|
| B1 | λ x y z w . x (y z w) | ````j```jj``j```jiiii`j``jiiiij
|
| D (B') | λ x y z w . x y (z w) | ```j`j``jii``ji``jii``ji`j`j``jii
|
| R* | λ x y z w . x z w y | ```j`j`j``jiii```j``j```jiiij`ji`jj
|
| C' | λ x y z w . x (y w) z | ```j```j`j`j`j``jiii`j`j`j`j``jiii`jj
|
| B3 | λ x y z w . x (y (z w)) | ```j`j``jii``jji```j``ji`jii`j`j``jii
|
| Combinator name or expression | LC expression | Bruteforced Crazy J expression | Notes |
|---|---|---|---|
| BJT | λ x y z w . y x (w x z) | ```j``jii``jii``jij |
Occurs quite often during abstraction elimination |
| C(BJT)T | λ x y z . z x y x | ````j```jj``jiiii``jiji |
|
| BC(C(BJT)T) | λ x y z . y x z x | ````j`j``jii`ji```j``jjii``jiii |
|
| W | λ x y . x y y | ````j``ji``j`j``jiii`j``jii`jij |
|
| W' | λ x y . y x x | ```j``ji``j``jiii`j``jii``jij |
|
| M (sometimes called U) | λ x . x x | ````j`j``ji```jiiii``j```jjiiij |
|
| M2 | λ x y . x y (x y) | ````````jjji`j`j```j``j`jiii``jiiiiji |
|
| L | λ x y . x (y y) | `````j`j`j`j``jiii``jiji``j`jii |
|
| O | λ x y . y (x y) | ```j`j``jiii```j```j``j`jiiiiij |
|
| U | λ x y . y (x x y) | ```j`j```j``j`j```jiiiii`jii``jj`jj |
|
| λ x . x x x | `````j`j```j```jj`j``jiiii`jiiiji |
No official name, we call it XXX or X3 | |
| S | λ x y z . x z (y z) | `````j`j````jjii`j`j``jiii`j```jjiijj |
|
| H | λ x y z . x y z y | ```j`j``jiii```j```j``j`jiiii`j``jiij |
|
| Y = M2L | λ x . x (Y x) | `````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii |
| Combinator name or expression | LC expression | Bruteforced Crazy J expression | Notes |
|---|---|---|---|
| Church 1 | λ f x . f x | i |
|
| Church 2 | λ f x . f (f x) | ```j``ji``j``jiii``jii``jij |
|
| Church 3 | λ f x . f (f (f x)) | ```j```j`j``ji``j``jiiiiii``j`jj``jij |
|
| Church 4 | λ f x . f (f (f (f x))) | ```j``ji```ji``j``jiiii```jjii``j`jij |
|
| ++(1) | λ n f x . f (n f x) | ``````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii |
|
| ++(2) | λ n f x . n f (f x) | ````j`j``jii````j``ji``j`j``jiii`j``jii`jij``ji``jii```j`j``jii``ji``jii``ji`j`j``jii |
It's of purely historical interest, ++(1) is much shorter |
| Mx | x x | ````j```jii x ii``jii |
Version of M combinator with inlined argument |
| n+1 | λ f x . n f (f x) | `````j``ji``j`j``jiii`j``jii`jij````j`j``jii``ji``jii``ji`j`j``jii n |
Version of ++(2) with inlined n argument. It is of purely historical interest since ++(1) is neither shorter nor longer.
|
Abstraction elimination rules
We worked out the following rules of abstraction elimination. Still you're free to try and reorder variables using various combinators and then use eta-reduction (examples below use this approach).
Rule 1
λ x . Fx = F (if x is not used in F)
Rule 2
λ x . F(x)G = JTG(λ x . F(x)) (T = λxy.yx = JII, F(x) is a function of x, G is not)
Rule 3
λ x . FG(x) = JT(JIF)(JT)(λ x . G(x)) (T = JII, G(x) is a function of x, F is not)
Rule 4 (obsolete)
λ x . F(x)G(x) = JTT(JT(λ x . G(x))(JT(λ x . F(x))(JTT(JIJ)))) (T = JII, F(x) and G(x) are both functions of x)
Note: this rule was worked out before we bruteforced an expression for S combinator. It's obsolete now, see rule 5.
Rule 5
λ x . F(x)G(x) = S(λ x . F(x))(λ x . G(x)) (S = J(J(JJII(J(J(JII)))))I(J(JJII))JJ, F(x) and G(x) are both functions of x)
TODO: probably, it's not correct to put equality sign in the formulas. Tromp uses ≡ sign in his paper, maybe I should too.
Examples
Simplest example - program which ignores its input and prints nothing
Lambda calculus expression of the program:
λ input . λ f . f 257 ? (where ? is anything we like since no one looks there anyway)
We have to get rid of input somehow since there's no K combinator to destroy it. The simplest thing that can be done is to sweep all dust under the carpet beyond EOF. So, we have:
λ input . λ f . f 257 input =
... just rewrite ...
= λ input f . f 257 input =
... let's introduce V = λ x y z . z x y ...
= λ input f . V 257 input f =
... eta-reduce ...
= V 257
Church numeral 257 can be expressed as 256+1, whereas 256 = 4 4 = M 4.
Finally, replacing V and 257 with their IJ expressions, we get:
````j``j```jii`j`j``jii``jiiij`````j``ji``j`j``jiii`j``jii`jij````j`j``jii``ji``jii``ji`j`j``jii````j```jii````j```jii```j``ji``j``jiii``jii``jijii``jiiii``jii
This program does nothing at all!
Truth-machine
This time let's play Golf a little bit: we'll not just implement Truth-machine but also use some tricks to shorten it.
Since Crazy J is fully IO-capable, we want our program to read input character from standard input and produce real output. Moreover, we'll implement ASCII input and output to make the coding more challenging:
- read single character from standard input;
- if the character read is '0' then print it and exit;
- if the character read is '1' then print '1' infinitely;
- we are free to do anything if the input is neither '0' nor '1'.
Lambda calculus expression for the Truth-machine:
'0' = 49
'1' = 50
EOF = 257
le = λ n m . n T (K true) (m T (K false))
is_'0' = λ x . le x 49
truth-machine = λ input . input (λ ch _ . is_'0' ch (λ f . f '0' (K EOF))
(Y λ self f . f '1' self)
)
Unfortunately, this LC expression can't be compiled to IJ basis:
- several explicit uses of
K - use of Church booleans (which can never be expressed in IJ)
- ignored second argument of the second lambda (denoted as
_)
Let's start with booleans. We suggest this approach: let true be denoted as I (what can be simpler anyway?) and if be denoted as I as well (or omitted in most cases). In this case then-branch receives the else-branch as a parameter (garbage which we can't get rid of and have to pass it through). What should we use to denote false then? Of course it's T = λ x y . y x = JII: let else-branch receive the then-branch as a (junk) parameter. So, conditional branching looks like this:
<cond> (λ garbage . <then-branch>) (λ garbage . <else-branch>)
Now let's look at le function (as far as we know, this masterpiece first appeared at The Unlambda home page). Let's write it in this more general form:
le = λ n m . n T THEN (m T ELSE), where T = λ x y . y x
and look how it works for pairs of small numbers:
le 2 3 = (λ n m . n T THEN (m T ELSE)) 2 3 =
= 2 T THEN (3 T ELSE) =
= T (T THEN) (T (T (T ELSE))) =
= T (T (T ELSE)) (T THEN) =
= T THEN (T (T ELSE)) =
= T (T ELSE) THEN =
= THEN (T ELSE)
le 2 2 = (λ n m . n T THEN (m T ELSE)) 2 2 =
= 2 T THEN (2 T ELSE) =
= T (T THEN) (T (T ELSE)) =
= T (T ELSE) (T THEN) =
= T THEN (T ELSE) =
= T ELSE THEN =
= THEN ELSE
le 2 1 = (λ n m . n T THEN (m T ELSE)) 2 1 =
= 2 T THEN (1 T ELSE) =
= T (T THEN) (T ELSE) =
= T ELSE (T THEN) =
= T THEN ELSE =
= ELSE THEN
le 3 1 = (λ n m . n T THEN (m T ELSE)) 3 1 =
= 3 T THEN (1 T ELSE) =
= T (T (T THEN)) (T ELSE) =
= T ELSE (T (T THEN)) =
= T (T THEN) ELSE
= ELSE (T THEN)
But that's exactly the booleans we've invented earlier! When first argument of le is less than the second argument, the then-branch is evaluated with some junk parameter, otherwise the else-branch is evaluated (again, with a junk parameter).
Let's rewrite the program using the knowledge we've just obtained:
0-branch = λ garbage f . f '0' (K EOF)
1-branch = λ garbage . Y λ self f . f '1' self
truth-machine = λ input . input (λ ch _ . ch T 0-branch ('0' T 1-branch))
It's still doesn't compile to IJ because we can't just ignore garbage. We have to pass it through.
truth-machine = λ input . input (λ ch garbage . ch T 0-branch ('0' T 1-branch) garbage) =
... eta-reduce ...
= λ input . input (λ ch . ch T 0-branch ('0' T 1-branch)) =
... reorganize expression using T ...
= λ input . T (λ ch . ch T 0-branch ('0' T 1-branch)) input =
... eta-reduce ...
= T (λ ch . ch T 0-branch ('0' T 1-branch)) =
... use Rule 2 ...
= T (J T ('0' T 1-branch) (λ ch . ch T 0-branch)) =
... introduce V = λ x y z . z x y =
= T (J T ('0' T 1-branch) (λ ch . V T 0-branch ch)) =
... eta-reduce ...
= T (J T ('0' T 1-branch) (V T 0-branch)) =
... or, maybe, not V but F = λ x y z . z y x? It's shorter in IJ basis ...
= T (J T ('0' T 1-branch) (F 0-branch T))
Now both 0-branch and 1-branch get extra garbage parameter:
0-branch = λ garbage1 garbage2 f . f '0' (λ g . g EOF <something with garbage1 and garbage2>)
1-branch = λ garbage1 garbage2 . (Y λ self g1 g2 f . f '1' (self g1 g2)) garbage1 garbage2 =
... eta-reduction and alpha-conversion ...
= Y λ self garbage1 garbage2 f . f '1' (self garbage1 garbage2)
This should work but still requires abstraction elimination. But let's stop now and look at those two lumps of garbage we need to pass through in both functions. Can we pack them into single lump to reduce number of abstraction eliminations?
garbage_packer1 = λ f g1 g2 . f (g1 g2) = B
garbage_packer2 = λ f g1 g2 . f (g2 g1) = Q1
Both pack two lumps of garbage into single one and pass to a function, but the second one's IJ representation is shorter. Let's use it.
0-branch = Q1 (λ g f1 . f1 '0' (λ f2 . f2 EOF g)) =
= Q1 (λ g f1 . f1 '0' (λ f2 . V EOF g f2)) =
= Q1 (λ g f1 . f1 '0' (V EOF g)) =
= Q1 (λ g f1 . V '0' (V EOF g) f1) =
= Q1 (λ g . V '0' (V EOF g)) =
= Q1 (λ g . B (V '0') (V EOF) g) =
= Q1 (B (V '0') (V EOF)) =
... with Q instead of B it would be shorter ...
= Q1 (Q (V EOF) (V '0'))
1-branch = Q1 (Y λ self g f . f '1' (self g)) =
= Q1 (Y λ self g f . V '1' (self g) f) =
= Q1 (Y λ self g . V '1' (self g)) =
= Q1 (Y λ self g . B (V '1') self g) =
= Q1 (Y λ self . B (V '1') self) =
= Q1 (Y (B (V '1')))
The final result:
```jii```j``jii`````j``jiii``j```jii``````j```jii```j``ji``j``jiii``jii``jijii``jii````j`j``jii````j``ji``j`j``jiii`j``jii`jij``ji``jii```j`j``jii``ji``jii``ji`j`j``jii`````j``ji``j`j``jiii`j``jii`jij````j`j``jii``ji``jii``ji`j`j``jii```j``ji``j``jiii``jii``jiji``jii``ji``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii````j``jii``ji``jii`j`j``jii````j``j```jii`j`j``jii``jiiij`````j``ji``j`j``jiii`j``jii`jij````j`j``jii``ji``jii``ji`j`j``jii```j``jiii``j```jii``````j```jii```j``ji``j``jiii``jii``jijii``jii````j`j``jii````j``ji``j`j``jiii`j``jii`jij``ji``jii```j`j``jii``ji``jii``ji`j`j``jii`````j``ji``j`j``jiii`j``jii`jij````j`j``jii``ji``jii``ji`j`j``jii```j``ji``j``jiii``jii``jiji`````j``jiii`j`j``jii``ji`````j`j`j``jii```jiii`j`ji````j``j```jii`j`j``jii``jiiij`````j``ji``j`j``jiii`j``jii`jij````j`j``jii``ji``jii``ji`j`j``jii````j```jii````j```jii```j``ji``j``jiii``jii``jijii``jiiii``jii````j``j```jii`j`j``jii``jiiij```j``jiii``j```jii``````j```jii```j``ji``j``jiii``jii``jijii``jii````j`j``jii````j``ji``j`j``jiii`j``jii`jij``ji``jii```j`j``jii``ji``jii``ji`j`j``jii`````j``ji``j`j``jiii`j``jii`jij````j`j``jii``ji``jii``ji`j`j``jii```j``ji``j``jiii``jii``jiji``jii
Summing up the tricks we've used:
- Packing garbage into single lump makes it easier to pass through.
- When two arguments of V or B combinator are known, it's worth replacing these combinators with their counterparts whose IJ representation is shorter.
Hello, world!
Reverse input
One more exercise before serious work.
init_list = λ v g f . f v g = V
push_front = λ v l g f . f v (l g) = D V
reverse = λ1 input . input (Y (λ2 self l g ch tail . ch T (λ3 g1 g2 . tail (self (push_front ch l) (g2 g1)))
(256 T (Q1 l)) g)
(init_list EOF)
I
)
init_list and push_front primitives are designed not only to provide an access to stored items but also to pass garbage through and put it finally after the last element (the one put first).
Lambdas are marked with indices to reference them from the following explanation text:
- λ3 packs lumps of garbage and makes recursive call of λ2 by passing
selfas a parameter totail. - λ2 is called to handle each character of input. First parameter (
self) is provided byY,l(currently accumulated reversed list) andg(garbage) - by λ3 (recursive call) or by λ1 (topmost call),chandtail- by input list element. - λ1 is an entry point which provides initial values for accumulated list and garbage.
Compiled program:
```jii````````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j``jii``ji``jii`j`j``jii````j``ji``j`j``jiii`j``jii`jij```j``jii``````j`j``jii``ji``jii``ji`j`j``jii````j```jii````j```jii```j``ji``j``jiii``jii``jijii``jiiii``jii``jii`ji````j`j``jii``ji``jii``ji`j`j``jii`````j``jii``ji``jii`j`j``jii```j``jii`j``jii`j``jii`````j``jii``ji``jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij```j``jii`j`j``jii`j``jii`````j```jj``j```jiiii`j``jiiiij```j``jii`j`j``jii`j``jii````j``jii`j`j``jii`j``jii`````j``ji``j`j``jiii`j``jii`jij`````j``jii`j``jii`j``jii`````j``jii``ji``jii`j`j``jii````j```jj``j```jiiii`j``jiiiij```ji````j```jj``j```jiiii`j``jiiiij``jii``````j```jj``j```jiiii`j``jiiiij````j``jii`j`j``jii`j``jii`````j``jii``ji``jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij`ji````j```jj``j```jiiii`j``jiiiij````j`j``jii``ji``jii``ji`j`j``jii```j``j```jii`j`j``jii``jiiij````j``j```jii`j`j``jii``jiiij`````j``ji``j`j``jiii`j``jii`jij````j`j``jii``ji``jii``ji`j`j``jii````j```jii````j```jii```j``ji``j``jiii``jii``jijii``jiiii``jiii
Sequential tag system
This is going to be a weak proof of Turing completeness of Crazy J. The stronger proof will follow.
Since the Sequential tag system page is not detailed enough (at least at the moment), let's formulate the pseudo-code for our program:
- Read initial content of "data" binary string from standard input. It consists of '0's and '1's and delimited with LF (ASCII 10). All other characters are ignored, and premature EOF aborts the program (exit code 1).
- If "data" string is empty, stop execution (exit code 0).
- Read "production rule" binary string ('0's and '1's, delimited with LF).
- If "data" binary string starts from '1' then append the content of current "production rule" string to the end of the "data" string.
- Drop first character of the "data" string.
- Go to step 2.
Here's the lambda calculus "source code" (with some comments):
# GBPS (garbage bin passing style) -capable list implementation
nil = λ ne e g . e (ne g)
cons = λ h t ne e g . ne h t (e g)
append = Y λ self what whereto . whereto (λ h t g1 ne e g2 . ne h (self what t) (g1 e g2)) (λ g1 ne e g2 . what ne e (g g2)) I
push_back = λ value . append (cons value nil)
# Print list of booleans as ASCII '0's and '1's with trailing LF
# Continuation (cont) is called with some garbage as a parameter
print = Y (λ self g1 list cont . list (λ h t g2 f . f (+ 48 (h 1 2)) (self g2 t cont)) (λ g2 f . f LF (cont g2)) g1) I
# Compare two Church numerals for equality
eq = λ n m then . (λ nT mT then' else . nT (mT then' (nT (Q1 else))) (mT else)) (n T) (m T) (Q1 then)
# Adapter to make input list provide not ASCII codes but already half-initialized comparators
input_adapter = Y λ self input f . input (λ ch tail . f (eq ch) (self tail))
# Takes data string already split into head and tail, rule string, and continuation.
# Calls the continuation with two parameters: new data string and some garbage
apply_rule = λ h t r cont . (λ f . h (f (append r t)) (f t)) (λ newdata g1 . print newdata (λ g2 . cont newdata (g1 g2)))
# Read rule string until LF is encountered and calls apply_rule. The execution is then returned (recursively) to this function
read_rule = Y λ self input data rule g1 . data (λ dh dt dg . input λ eqch itail . eqch '0' (λ g2 . self itail data (push_back false rule) (g2 dg))
(λ g2 . eqch '1' (λ g3 . self itail data (push_back true rule) (g3 g2))
(λ g2 . eqch LF (λ g3 . apply_rule dh dt rule (λ newdata g4 . self itail newdata nil (g3 g2 g4)))
(λ g2 . eqch EOF (λ g3 . V (+1 EOF) (g3 g2))
(λ g2 . self itail data rule g2))))) (V EOF) g1
# Read initial data string until LF, then read_rule is called
read_data = Y (λ self data g1 eqch itail . eqch '0' (λ g2 . itail (self (push_back false data) (g2 g1)))
(λ g1 . eqch '1' (λ g2 . itail (self (push_back true data) (g2 g1)))
(λ g1 . eqch LF (λ g2 . read_rule itail data nil (g2 g1))
(λ g1 . eqch EOF (lambda g2 . V (+1 EOF) (g2 g1))
(λ g1 . itail (self data g1)))))) nil I
# Entry point
sts = λ input . input_adapter input read_data
"Compiled" version:
`````j``jii`j``jii`j``jii``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii```j``jii`````j`j`j``jii```jiii`j`ji```jii``jii`````````j```jii`j`j`j`j``jii``jijiii`jj``````jj`j``jiiij```j``ji`jii`j`j``jii````j`j`j``jii```jiii`j`ji`ji`````j``ji``j`j``jiii`j``jii`jij`````j`j`j``jii```jiii`j`ji````````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij````j`j``jii`j``jii``ji`j``jii```````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j`j`j``jii```jiii`j`ji`ji``````j```jii`j`j`j`j``jii``jijiii`jj`````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij````j``ji``j`j``jiii`j``jii`jij```j``jii`j``jii`j``jii```jii``jii``````j```jj``j```jiiii`j``jiiiij`````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```j`j``jii``ji``jii``ji`j`j``jii````j``jii`j`j``jii`j``jii``````j```jii`j`j`j`j``jii``jijiii`jj````````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii```````j`j````jjii`j`j``jiii`j```jjiijj```````j`j````jjii`j`j``jiii`j```jjiijj````````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii```ji``````j```jj``j```jiiii`j``jiiiij`````j`j````jjii`j`j``jiii`j```jjiijj`````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji`````````j```jii`j`j`j`j``jii``jijiii`jj``````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj`````````j```jii`j`j`j`j``jii``jijiii`jj````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii`````j``jii`j`j``jii`j``jii``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii```````j`j````jjii`j`j``jiii`j```jjiijj```````j`j````jjii`j`j``jiii`j```jjiijj```````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji```j``jii```j`j`j``jii```jiii`j`ji````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij```````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij````j`j`j``jii```jiii`j`ji```j``jii``ji``jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii````j```jj``j```jiiii`j``jiiiij````````j```jii`j`j`j`j``jii``jijiii`jj`````jj`j``jiiij```j``ji`jii`j`j``jii``j``jii````j``j```jii`j`j``jii``jiiij```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii````j```jii```j``ji```ji``j``jiiii```jjii``j`jijii``jii```j``jii````j``ji``j`j``jiii`j``jii`jij`````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj``````j```jj``j```jiiii`j``jiiiij`````j`j````jjii`j`j``jiii`j```jjiijj``````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij`````j``jii`j`j``jii`j``jii``````j```jj``j```jiiii`j``jiiiij`````j`j````jjii`j`j``jiii`j```jjiijj`````j`j````jjii`j`j``jiii`j```jjiijj`````````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii````j``jii`j`j``jii`j``jii```````j```jii`j`j`j`j``jii``jijiii`jj````j``jii`j`j``jii`j``jii````j```jj``j```jiiii`j``jiiiij`````j`j`j``jii```jiii`j`ji````````jj`j``jiiij```j``ji`jii`j`j``jii````j`j`j``jii```jiii`j`ji``jii````````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij````j``jii`j``jii`j``jii``````j```jj``j```jiiii`j``jiiiij``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```j`j``jii``ji``jii``ji`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj````j`j``jii``ji``jii``ji`j`j``jii```````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji````````jj`j``jiiij```j``ji`jii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj```````j```jj``j```jiiii`j``jiiiij```j``jiii`j`j``jii```j``jii``ji``jii`j`j``jii````j``j```jii`j`j``jii``jiiij``````j``ji``j`j``jiii`j``jii`jij`````j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```j``ji``j``jiii``jii``jij```j```j`j``ji``j``jiiiiii``j`jj``jij```````jj`j``jiiij```j``ji`jii`j`j``jii````j`j`j``jii```jiii`j`ji``````j``jii`j`j``jii`j``jii`````j```jj``j```jiiii`j``jiiiij``````j`j`j``jii```jiii`j`ji```j```j`j``ji``j``jiiiiii``j`jj``jij``````j`j```j```jj`j``jiiii`jiiiji```j``ji``j``jiii``jii``jij``````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```j``ji``j``jiii``jii``jiji````````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```j``j```jii`j`j``jii``jiiij```j``jii`j`j``jii`j``jii```j``jii`j`j``jii`j``jiii`````j`j````jjii`j`j``jiii`j```jjiijj`````````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij`ji``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji````j``jii`j``jii`j``jii````j`j``jii``ji``jii``ji`j`j``jii````j`j`j``jiii```j``j```jiiij`ji`jj```j`j``jii``ji``jii``ji`j`j``jii``````j```jj``j```jiiii`j``jiiiij``j``jiii```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```j`j`j``jii```jiii`j`ji```j``jii``````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii``````j``jii`j`j``jii`j``jii``````j```jii`j`j`j`j``jii``jijiii`jj``ji````j``j```jii`j`j``jii``jiiij```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii````j```jii```j``ji```ji``j``jiiii```jjii``j`jijii``jii```jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii````j```jii```j``ji```ji``j``jiiii```jjii``j`jijii``jii````````j```jii`j`j`j`j``jii``jijiii`jj`````j`j````jjii`j`j``jiii`j```jjiijj````j``jii``ji``jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii``j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii````j``jii`ji`j``jii```j`j`j``jii```jiii`j`ji```j`j`j``jii```jiii`j`ji``````j```jii`j`j`j`j``jii``jijiii`jj```jii``````j``ji``j`j``jiii`j``jii`jij`````j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```j``ji``j``jiii``jii``jij```j```j`j``ji``j``jiiiiii``j`jj``jij`````jj`j``jiiij```j``ji`jii`j`j``jii````j`j``jii`j``jii``ji`j``jii```j``jii`j`j``jii`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii```j``jii`ji```````j```jii`j`j`j`j``jii``jijiii`jj```````j```jii`j`j`j`j``jii``jijiii`jj``````j```jj``j```jiiii`j``jiiiij````````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j``jii``ji``jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii`````j`j`j``jii```jiii`j`ji```j```j`j``ji``j``jiiiiii``j`jj``jij``````j`j```j```jj`j``jiiii`jiiiji```j``ji``j``jiii``jii``jij``````j```jii`j`j`j`j``jii``jijiii`jj````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```j``jii````j``jii```j`j`j``jii```jiii`j`ji``````j```jj``j```jiiii`j``jiiiij``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji````j``jii`j``jii`j``jii````j`j``jii``ji``jii``ji`j`j``jii````j`j`j``jiii```j``j```jiiij`ji`jj```j`j``jii``ji``jii``ji`j`j``jii``````j```jj``j```jiiii`j``jiiiij``j``jiii```j``jiii`j`j``jii````j``jii`j`j``jii`j``jii```````j```jii`j`j`j`j``jii``jijiii`jj```j`j``jii``ji``jii``ji`j`j``jiii``````j```jii`j`j`j`j``jii``jijiii`jj```j``jii`j`j``jii`j``jii`````j`j`j``jii```jiii`j`ji```j``jii`j`j``jii`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii```j``jii``ji``jii`j`j``jii``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```j``jii````j```jj``j```jiiii`j``jiiiij`````jj`j``jiiij```j``ji`jii`j`j``jii``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jii`j`j`j`j``jii``jijiii`jj``j``jii```jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii`````j`j`j``jii```jiii`j`ji```j```j`j``ji``j``jiiiiii``j`jj``jij``````j`j```j```jj`j``jiiii`jiiiji```j``ji``j``jiii``jii``jij``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij`````j`j````jjii`j`j``jiii`j```jjiijj```j``jii`j`j``jii`j``jii``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii```j``jii```j``jii`ji`j``jii``````jj`j``jiiij```j``ji`jii`j`j``jii``````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j``jii`j``jii`j``jii````j```jj``j```jiiii`j``jiiiij```j``jii````j``jii```j`j`j``jii```jiii`j`ji``````j```jj``j```jiiii`j``jiiiij``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji````j``jii`j``jii`j``jii````j`j``jii``ji``jii``ji`j`j``jii````j`j`j``jiii```j``j```jiiij`ji`jj```j`j``jii``ji``jii``ji`j`j``jii``````j```jj``j```jiiii`j``jiiiij``j``jiii```j``jiii`j`j``jii````j``jii`j`j``jii`j``jii```````j```jii`j`j`j`j``jii``jijiii`jj```j`j``jii``ji``jii``ji`j`j``jii``jii``````j```jii`j`j`j`j``jii``jijiii`jj```j`j`j``jii```jiii`j`ji`ji```ji``````j```jii`j`j`j`j``jii``jijiii`jj``````j``ji``j`j``jiii`j``jii`jij`````j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```j``ji``j``jiii``jii``jij```j```j`j``ji``j``jiiiiii``j`jj``jij`````j`j````jjii`j`j``jiii`j```jjiijj`````j`j````jjii`j`j``jiii`j```jjiijj````j``jii``ji``jii`j`j``jii``````jj`j``jiiij```j``ji`jii`j`j``jii`j``jii```````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j``jii`j``jii`j``jii``````j```jj``j```jiiii`j``jiiiij`````j`j````jjii`j`j``jiii`j```jjiijj``````j``jii`j`j``jii`j``jii```````jj`j``jiiij```j``ji`jii`j`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jii`j`j`j`j``jii``jijiii`jj`ji```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii`````j`j`j``jii```jiii`j`ji```j```j`j``ji``j``jiiiiii``j`jj``jij``````j`j```j```jj`j``jiiii`jiiiji```j``ji``j``jiii``jii``jij````````j```jii`j`j`j`j``jii``jijiii`jj````j``jii`j`j``jii`j``jii````j```jj``j```jiiii`j``jiiiij````j``jii```j`j`j``jii```jiii`j`ji``````j```jj``j```jiiii`j``jiiiij``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji````j``jii`j``jii`j``jii````j`j``jii``ji``jii``ji`j`j``jii````j`j`j``jiii```j``j```jiiij`ji`jj```j`j``jii``ji``jii``ji`j`j``jii``````j```jj``j```jiiii`j``jiiiij``j``jiii```j``jiii`j`j``jii````j``jii`j`j``jii`j``jii```````j```jii`j`j`j`j``jii``jijiii`jj```j`j``jii``ji``jii``ji`j`j``jiii````j``jii`j``jii`j``jii``````j```jj``j```jiiii`j``jiiiij````j`j`j``jii```jiii`j`ji```j``jii``ji````j``j```jii`j`j``jii``jiiij```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii````j```jii```j``ji```ji``j``jiiii```jjii``j`jijii``jii```ji``````j```jii`j`j`j`j``jii``jijiii`jj```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii````j```jii```j``ji```ji``j``jiiii```jjii``j`jijii``jii``````j```jj``j```jiiii`j``jiiiij```j`j`j``jii```jiii`j`ji````j``jii`j`j``jii`j``jii````j```jj``j```jiiii`j``jiiiij`````j`j`j``jii```jiii`j`ji````````j```jii`j`j`j`j``jii``jijiii`jj````j``jii`j`j``jii`j``jii````j```jj``j```jiiii`j``jiiiij````j``jii```j`j`j``jii```jiii`j`ji``````j```jj``j```jiiii`j``jiiiij``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji````j``jii`j``jii`j``jii````j`j``jii``ji``jii``ji`j`j``jii````j`j`j``jiii```j``j```jiiij`ji`jj```j`j``jii``ji``jii``ji`j`j``jii``````j```jj``j```jiiii`j``jiiiij``j``jiii```j``jiii`j`j``jii````j``jii`j`j``jii`j``jii```````j```jii`j`j`j`j``jii``jijiii`jj```j`j``jii``ji``jii``ji`j`j``jii``jii```````jj`j``jiiij```j``ji`jii`j`j``jii```````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj``j``jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii`````j`j`j``jii```jiii`j`ji```j```j`j``ji``j``jiiiiii``j`jj``jij``````j`j```j```jj`j``jiiii`jiiiji```j``ji``j``jiii``jii``jij``````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj```j`j`j``jii```jiii`j`ji```````j```jii`j`j`j`j``jii``jijiii`jj`ji```j`j`j``jii```jiii`j`jii
Cyclic tag system
All we need to make Cyclic tag system machine out of Sequential tag system machine is an adapter that does this:
data <LF> data <LF>
rule1 <LF> rule1 <LF>
rule2 <LF> rule2 <LF>
... ==> ...
ruleN <LF> ruleN <LF>
<EOF> rule1 <LF>
rule2 <LF>
...
<all rules infinitely repeated>
Here's a lambda calculus source code of the adapter:
repeat = λ buffer g . buffer (Y λ self h t g2 . V h (push_back h t self I g2))
(λ g2 . V EOF (g2 g))
I
accumulate = Y (λ self buffer input g . input (λ ch tail . eq ch EOF (λ g2 . repeat buffer g2)
(λ g2 . self (push_back ch buffer) tail (g2 g)))) nil
adapter = Y (λ self g input . input (λ ch tail . V ch (eq ch LF (λ g2 . accumulate tail g2)
(λ g2 . self (g g2) tail)))) I
In compiled form:
```````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii``````j```jj``j```jiiii`j``jiiiij`````j`j`j``jii```jiii`j`ji````````jj`j``jiiij```j``ji`jii`j`j``jii```j``jii```j``jii``````j``ji``j`j``jiii`j``jii`jij`````j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii```j``ji``j``jiii``jii``jij```j```j`j``ji``j``jiiiiii``j`jj``jij`````j`j`j``jii```jiii`j`ji```jii``jii`````````j```jii`j`j`j`j``jii``jijiii`jj``````jj`j``jiiij```j``ji`jii`j`j``jii````j`j`j``jii```jiii`j`ji`ji`````j``ji``j`j``jiii`j``jii`jij`````j`j`j``jii```jiii`j`ji````````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij````j`j``jii`j``jii``ji`j``jii```````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j`j`j``jii```jiii`j`ji`ji``````j```jii`j`j`j`j``jii``jijiii`jj`````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij````j``ji``j`j``jiii`j``jii`jij```j``jii`j``jii`j``jii```jii``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j`j`j``jii```jiii`j`ji```j``j```jii`j`j``jii``jiiij`````````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij````````j```jii`j`j`j`j``jii``jijiii`jj`````j`j````jjii`j`j``jiii`j```jjiijj````j`j`j``jii```jiii`j`ji```````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii```j``jii```j``jii````j``jii`j``jii`j``jii```j``jii```j`j`j``jii```jiii`j`ji``````j```jj``j```jiiii`j``jiiiij``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji````j``jii`j``jii`j``jii````j`j``jii``ji``jii``ji`j`j``jii````j`j`j``jiii```j``j```jiiij`ji`jj```j`j``jii``ji``jii``ji`j`j``jii``````j```jj``j```jiiii`j``jiiiij``j``jiii```j``jiii`j`j``jii````j``jii`j`j``jii`j``jii```````j```jii`j`j`j`j``jii``jijiii`jj```j`j``jii``ji``jii``ji`j`j``jii````j``jii`j`j``jii`j``jii````j```jj``j```jiiii`j``jiiiij````````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj``````j``jii`j`j``jii`j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii`````````j```jii`j`j`j`j``jii``jijiii`jj```j`j`j``jii```jiii`j`ji`````````j```jii`j`j`j`j``jii``jijiii`jj````j``jii`j`j``jii`j``jii`````j`j`j``jii```jiii`j`ji```jii``jii`````````j```jii`j`j`j`j``jii``jijiii`jj``````jj`j``jiiij```j``ji`jii`j`j``jii````j`j`j``jii```jiii`j`ji`ji`````j``ji``j`j``jiii`j``jii`jij`````j`j`j``jii```jiii`j`ji````````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij````j`j``jii`j``jii``ji`j``jii```````jj`j``jiiij```j``ji`jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj````j`j`j``jii```jiii`j`ji`ji``````j```jii`j`j`j`j``jii``jijiii`jj`````jj`j``jiiij```j``ji`jii`j`j``jii``````j```jj``j```jiiii`j``jiiiij````j``ji``j`j``jiii`j``jii`jij```j``jii`j``jii`j``jii```jii``jii``````j``jii`j`j``jii`j``jii```ji``````j```jii`j`j`j`j``jii``jijiii`jj``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji````j`j`j``jiii```j``j```jiiij`ji`jj```j``jii```j`j`j``jii```jiii`j`ji``````j```jj``j```jiiii`j``jiiiij``````j``j`j`j```j``j`jiii``jiii``jiiji`````j`j`j`j``jiii``jiji``j`jii`````j`j`j``jii```jiii`j`ji```````jj`j``jiiij```j``ji`jii`j`j``jii`````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```j``jiii`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj`````j`j`j``jii```jiii`j`ji````j``jii`j``jii`j``jii````j`j``jii``ji``jii``ji`j`j``jii````j`j`j``jiii```j``j```jiiij`ji`jj```j`j``jii``ji``jii``ji`j`j``jii``````j```jj``j```jiiii`j``jiiiij``j``jiii```j``jiii`j`j``jii````j``jii`j`j``jii`j``jii```````j```jii`j`j`j`j``jii``jijiii`jj```j`j``jii``ji``jii``ji`j`j``jii``````j`j````jjii`j`j``jiii`j```jjiijj````````jj`j``jiiij```j``ji`jii`j`j``jii```j``jii``ji``jii`j`j``jii`````j`j`j``jiii```j``j```jiiij`ji`jj````j```jj``j```jiiii`j``jiiiiji```j``j```jii`j`j``jii``jiiiji``ji````j``j```jii`j`j``jii``jiiij```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii````j```jii```j``ji```ji``j``jiiii```jjii``j`jijii``jii```````j`j````jjii`j`j``jiii`j```jjiijj```j``jii``ji``jii`j`j``jii````j```jii```j``ji```ji``j``jiiii```jjii``j`jijii``jii```j``jii``ji``jii`j`j``jii`````j`j````jjii`j`j``jiii`j```jjiijj```j``jii`````jj`j``jiiij```j``ji`jii`j`j``jii````````jj`j``jiiij```j``ji`jii`j`j``jii````j```jj``j```jiiii`j``jiiiij````j``jii`j`j``jii`j``jii````j```jj``j```jiiii`j``jiiiij```````j```jii`j`j`j`j``jii``jijiii`jj```````j```jii`j`j`j`j``jii``jijiii`jj`ji```j`j`j``jii```jiii`j`ji````j```jj``j```jiiii`j``jiiiij``jii``````j```jii`j`j`j`j``jii``jijiii`jji
Conclusion: Crazy J is Turing-complete because it can emulate Cyclic tag system.
FizzBuzz
ROT13
QUINE
Links
TODO: push my interpreter (written in C) to github, give link here
TODO: add the article (when/if finished and moved to the top namespace) to the following categories: Languages, Implemented, Turing tarpits, Turing complete, Functional paradigm.