# Inside Cortex

A Cortex program is an expression that gets transformed into an IR (Intermediate Representation) expressed in MathJSON, compiled and evaluated by the Cortex Compute Engine.

The process to convert a Cortex program into a MathJSON expression is pretty straightforward:

• Function calls gets converted into MathJSON functions:
``````Print("x =", x)
``````
``````["Print", "'x ='", "x"]
``````
• String get converted into MathJSON string. Interpolated strings get converted into MathJSON `String` functions:
``````"The solution is \(x)"
``````
``````["String", "'The solution is '", "x"]
``````
• Operators get converted into equivalent MathJSON functions:
``````2x + 1
``````
``````["Add", ["Multiply", 2, "x"], 1]
``````
• Collections (List, Set, Tuple, Sequence, Dicitionary) get converted into a corresponding MathJSON expression:
``````set =  {2, 5, 7, 11, 13}
list = [2, 7, 2, 4, 2]
tuple = (1.5, 0.5)
sequence = 2, 5, 7
``````
``````["Equal", "set", ["Set", 2, 5, 7, 11, 13]]
``````
``````[("Equal", "list", ["List", 2, 7, 2, 4, 2])]
``````
``````[("Equal", "tuple", ["Tuple", 1.5, 0.5])]
``````
``````[("Equal", "sequence", ["Sequence", 2, 5, 7])]
``````
• Control structures get converted to an appropriate expression:
``````if (x in PrimeNumber) {
Print(x);
x += 1;
} else {
x += 2;
}
``````
``````[
"If",