# Transet

Paradigm(s) | Markov Algorithm & Set |
---|---|

Designed by | User:GUAqwq |

Appeared in | 2023 |

Computational class | Turing complete |

Major implementations | Implemented |

File extension(s) | `.ts_` |

**Transet** is a *Set Rewriting System*. There are no integers or characters in Transet, but only sets. It's the 2nd esolang of TS Series by User:GUAqwq

## Overview

The systax is similar to wikipedia:Markov algorithm. This is a example for the rules:

{{_}} -> {_}

Which means transform the set in the form `{{_}}`

to `{_}`

The "_" means any set. In this case, if the input is:

{{{{{{}}}}}}

Then the process will be:

{{{{{{}}}}}} -> {{{{{}}}}} // _ = {{{{}}}} {{{{{}}}}} -> {{{}}} // _ = {{}} {{{}}} -> {{}} // _ = {} {{}} // END

The output is the set after process.

The algorithm will always matches the outermost set in form.

## Syntactic Sugar

These are the set brackets which can be used (the brackets must be matched):

`{}`

`()`

`[]`

`<>`

These are the identefiers which can be used (at most 1 of them in the same rule):

`_`

`?`

`*`

`#`

`A-Z`

`a-z`

## Computational class

Transet is Turing complete because the rules are wikipedia:Markov algorithm-like and any string(in another way, list) can be encoded to set using the following method:

Integer:

0 : {} successor of n : {n}

List/String:

List : {[value],([rest_of_list],<>)} Nil : <>

In this way, every wikipedia:Markov algorithm rules can be corresponding to two list which end with `*`

## Examples

### Binary numbers to integer

Input : a binary string which is encoded to set

Output : integer which is encoded to set

{[<<<>>>],([{[<>],([*],<>)}],<>)} -> {[<>],([{[<<<>>>],([{[<<<>>>],([*],<>)}],<>)}],<>)} {[<<>>],([*],<>)} -> {[<>],([{[<<<>>>],([*],<>)}],<>)} {[<>],([*],<>)} -> * {[<<<>>>],([<>],<>)} -> {[<<>>],(<>,<<>>,<<>,<<>>>)} {[<<<>>>],([{[x],(<>,<<>>,<<>,<<>>>)}],<>)} -> {[<x>],(<>,<<>>,<<>,<<>>>)} {[x],(<>,<<>>,<<>,<<>>>)} -> x

Rule 1,2,3 is equivalent to the following Markov Algorithm program: ( "0":`<>`

, "1":`<<>>`

, "|":`<<<>>>`

)

"|0" -> "0||" "1" -> "0|" "0" -> ""

Rule 4,5,6 means: (Protect by the form you see in Rule 5)

the last "|" -> Protected 1 "|" (Protected x) -> Protected (x+1) Protected x -> x

You can just not using Rule 4,5,6. In that way you'll get the String-form anwser which includes many `2`

s

## Interpreters

- Interpreter written in Haskell by User:Hakerh400