A IS B

A IS B is a derivative of Set, but with a different, more natural syntax. 
==Set vs. A IS B==
The difference between Set and A IS B is like stated, the syntax. You can say it resembles a certain block-puzzle game.
Instead of:
 set a b
you use:
 AA IS BB
Natural, isn't it?
Also, unlike Set, you're not setting things, you reference things. For example:
 AA IS 2 > set AA to 2
 BB IS AA > reference BB as AA
 BB IS 3 > set BB to 3
 > AA is 3
The same thing applies backwards.
Variables that don't exist or referenced to nothing will have a value of null.
Should you use A IS B instead of Set? I don't know, both of them are pretty pointless.
==Variables==
A IS B supports 8353082550 variables. Variables in A IS B can be at most 7 characters long, at least 2 characters long, and are strictly uppercase only. One-character "variables" are literals. There's also some system variables. Unlike regular variables, system variables (and literals) are not reference-able; variables that read or set it will not be affected by it.
==TERM variable==
TERM indicates input/output. It works exactly the same as the ! in Set.
==LINE variable==
LINE represent the line of code which is being executed. It works exactly the same as the ? in Set.
==AND combiner==
AND has 2 functions:
If used after IS, it will combine/add things:
 AA IS BB AND 2 > AA is BB plus 2
Note that AA is still referenced with BB (self reference sets the variable, not reference it to itself, that would be very weird). 
For example:
 AA IS 3
 BB IS AA AND 2
 AA IS 5
 > BB is 7 (AA plus 2)
The same thing applies backwards.
If used before IS, it will apply the reference to both objects:
 AA AND BB IS CC > AA IS CC and BB IS CC but AA IS NOT BB
==IF...THEN conditional==
It's pretty obvious.
Example:
 AA IS 1
 IF AA IS 0 THEN AA IS 2 > If AA equals 0, then set AA to 2
 IF AA IS NOT 0 THEN AA IS 3 > If AA is not equal to 0, then set AA to 3
 > AA IS 3
==NOT negation==
NOT has 3 functions:
If used before variables, it will reference every variable but the variable being NOTed.
 AA IS 1
 BB IS 2
 NOT AA IS 3 
 > BB is 3, AA is still 1
If used after IS, it will set a flag such that if the variable equals the flag, it will raise an error.
 AA IS 1
 AA IS NOT 3 > AA should not be 3
 AA IS 3 > error, since AA should not be 3
It may also be used inside IF...THEN. In this case, it equals to [.../...] in Set.
If used after IS and before variables before IS, it will de-reference that variable to every variable.
 AA IS 1
 AA IS NOT AA > AA is de-referenced
If used after AND (right side), it will negate instead of adding.
 AA IS 5
 AA IS BB AND NOT 3 
 > AA IS 2
==Computational class==
Any 2-counter Minsky machine can be translated into an equivalent A IS B program. AND 1 as well as AND NOT 1 perform increment and decrement, respectively, with IF ... THEN statements that alter the LINE variable used to perform conditional control depending on decrement. Assuming variables are unbounded as in Set, any Minsky machine can be expressed as an A IS B program.
==Example Codes==
===Hello, world!===
 TERM IS H
 TERM IS e
 TERM IS l
 TERM IS l
 TERM IS o
 TERM IS ,
 TERM IS 32
 TERM IS w
 TERM IS o
 TERM IS r
 TERM IS l
 TERM IS d
 TERM IS 33
===Truth machine===
 INPUT IS TERM
 IF INPUT IS NOT 48 THEN LINE IS 5
 TERM IS 49
 LINE IS 3
 TERM IS 48
Category:Languages
Category:2021
Category:Unimplemented
Category:Turing complete