0 =============================================
( ++ false )

(++ false)

(++ false)

false++

EvalException: cannot increment a literal: (++ false)

1 =============================================
( --- 2 )

(--- 2)

(--- 2)

--2

EvalException: cannot increment a literal: (--- 2)

2 =============================================
( ++ x )

(++ x)

(++ x)

x++

EvalException: undefined variable: x

3 =============================================
( prog ( var x 3 ) ( ++ x 1 ) )

(prog (var x 3) (++ x 1))

(prog (var x 3) (++ x 1))

Program
{
   x = 3;
   x++;
}

[Global Environment
 x = [tag->int, valueI->3, valueB->false]]

EvalException: wrong number of arguments for ++: (++ x 1)

4 =============================================
( -- ( + 2 3 ) )

(-- (+ 2 3))

(-- (+ 2 3))

2 + 3--

EvalException: wrong kind of argument for --: (-- (+ 2 3))

5 =============================================
( prog ( var x 3 ) ( print ( ++ x ) ) x )

(prog (var x 3) (print (++ x)) x)

(prog (var x 3)
      (print (++ x))
      x)

Program
{
   x = 3;
   print( x++ );
   x;
}

[Global Environment
 x = [tag->int, valueI->3, valueB->false]]

[tag->int, valueI->3, valueB->false]

result = [tag->int, valueI->4, valueB->false]

6 =============================================
( prog ( var x 3 ) ( print ( +++ x ) ) x )

(prog (var x 3) (print (+++ x)) x)

(prog (var x 3)
      (print (+++ x))
      x)

Program
{
   x = 3;
   print( ++x );
   x;
}

[Global Environment
 x = [tag->int, valueI->3, valueB->false]]

[tag->int, valueI->4, valueB->false]

result = [tag->int, valueI->4, valueB->false]

7 =============================================
( prog ( var x 3 ) ( print ( -- x ) )  x )

(prog (var x 3) (print (-- x)) x)

(prog (var x 3)
      (print (-- x))
      x)

Program
{
   x = 3;
   print( x-- );
   x;
}

[Global Environment
 x = [tag->int, valueI->3, valueB->false]]

[tag->int, valueI->3, valueB->false]

result = [tag->int, valueI->2, valueB->false]

8 =============================================
( prog ( var x 3 ) ( print ( --- x ) ) x )

(prog (var x 3) (print (--- x)) x)

(prog (var x 3)
      (print (--- x))
      x)

Program
{
   x = 3;
   print( --x );
   x;
}

[Global Environment
 x = [tag->int, valueI->3, valueB->false]]

[tag->int, valueI->2, valueB->false]

result = [tag->int, valueI->2, valueB->false]

9 =============================================
( prog ( var x true ) ( print ( ++ x ) ) x )

(prog (var x true) (print (++ x)) x)

(prog (var x true)
      (print (++ x))
      x)

Program
{
   x = true;
   print( x++ );
   x;
}

[Global Environment
 x = [tag->bool, valueI->0, valueB->true]]

[tag->bool, valueI->0, valueB->true]

result = [tag->bool, valueI->0, valueB->false]

10 =============================================
( prog ( var x true ) ( print ( +++ x ) ) x )

(prog (var x true) (print (+++ x)) x)

(prog (var x true)
      (print (+++ x))
      x)

Program
{
   x = true;
   print( ++x );
   x;
}

[Global Environment
 x = [tag->bool, valueI->0, valueB->true]]

[tag->bool, valueI->0, valueB->false]

result = [tag->bool, valueI->0, valueB->false]

11 =============================================
( prog ( var x true ) ( print ( -- x ) ) x )

(prog (var x true) (print (-- x)) x)

(prog (var x true)
      (print (-- x))
      x)

Program
{
   x = true;
   print( x-- );
   x;
}

[Global Environment
 x = [tag->bool, valueI->0, valueB->true]]

[tag->bool, valueI->0, valueB->true]

result = [tag->bool, valueI->0, valueB->false]

12 =============================================
( prog ( var x true ) ( print ( --- x ) ) x )

(prog (var x true) (print (--- x)) x)

(prog (var x true)
      (print (--- x))
      x)

Program
{
   x = true;
   print( --x );
   x;
}

[Global Environment
 x = [tag->bool, valueI->0, valueB->true]]

[tag->bool, valueI->0, valueB->false]

result = [tag->bool, valueI->0, valueB->false]

13 =============================================
( prog ( var x false ) ( print ( ++ x ) ) x )

(prog (var x false) (print (++ x)) x)

(prog (var x false)
      (print (++ x))
      x)

Program
{
   x = false;
   print( x++ );
   x;
}

[Global Environment
 x = [tag->bool, valueI->0, valueB->false]]

[tag->bool, valueI->0, valueB->false]

result = [tag->bool, valueI->0, valueB->true]

14 =============================================
( prog ( var x false ) ( print ( +++ x ) ) x )

(prog (var x false) (print (+++ x)) x)

(prog (var x false)
      (print (+++ x))
      x)

Program
{
   x = false;
   print( ++x );
   x;
}

[Global Environment
 x = [tag->bool, valueI->0, valueB->false]]

[tag->bool, valueI->0, valueB->true]

result = [tag->bool, valueI->0, valueB->true]

15 =============================================
( prog ( var x false ) ( print ( -- x ) ) x )

(prog (var x false) (print (-- x)) x)

(prog (var x false)
      (print (-- x))
      x)

Program
{
   x = false;
   print( x-- );
   x;
}

[Global Environment
 x = [tag->bool, valueI->0, valueB->false]]

[tag->bool, valueI->0, valueB->false]

result = [tag->bool, valueI->0, valueB->true]

16 =============================================
( prog ( var x false ) ( print ( --- x ) ) x )

(prog (var x false) (print (--- x)) x)

(prog (var x false)
      (print (--- x))
      x)

Program
{
   x = false;
   print( --x );
   x;
}

[Global Environment
 x = [tag->bool, valueI->0, valueB->false]]

[tag->bool, valueI->0, valueB->true]

result = [tag->bool, valueI->0, valueB->true]

17 =============================================
( prog ( var x 1 ) ( + ( * 3 ( ++ x ) ) ( * 2 ( ++ x ) ) ) )

(prog (var x 1) (+ (* 3 (++ x)) (* 2 (++ x))))

(prog (var x 1)
      (+ (* 3 (++ x))
         (* 2 (++ x))))

Program
{
   x = 1;
   3 * x++ + 2 * x++;
}

[Global Environment
 x = [tag->int, valueI->1, valueB->false]]

result = [tag->int, valueI->7, valueB->false]

18 =============================================
( prog ( var x 1 ) ( + ( * 2 ( ++ x ) ) ( * 3 ( ++ x ) ) ) )

(prog (var x 1) (+ (* 2 (++ x)) (* 3 (++ x))))

(prog (var x 1)
      (+ (* 2 (++ x))
         (* 3 (++ x))))

Program
{
   x = 1;
   2 * x++ + 3 * x++;
}

[Global Environment
 x = [tag->int, valueI->1, valueB->false]]

result = [tag->int, valueI->8, valueB->false]

19 =============================================
( prog ( var x 1 ) ( + ( * 3 ( +++ x ) ) ( * 2 ( ++ x ) ) ) )

(prog (var x 1) (+ (* 3 (+++ x)) (* 2 (++ x))))

(prog (var x 1)
      (+ (* 3 (+++ x))
         (* 2 (++ x))))

Program
{
   x = 1;
   3 * ++x + 2 * x++;
}

[Global Environment
 x = [tag->int, valueI->1, valueB->false]]

result = [tag->int, valueI->10, valueB->false]

20 =============================================
( prog ( var x 1 ) ( + ( * 2 ( +++ x ) ) ( * 3 ( ++ x ) ) ) )

(prog (var x 1) (+ (* 2 (+++ x)) (* 3 (++ x))))

(prog (var x 1)
      (+ (* 2 (+++ x))
         (* 3 (++ x))))

Program
{
   x = 1;
   2 * ++x + 3 * x++;
}

[Global Environment
 x = [tag->int, valueI->1, valueB->false]]

result = [tag->int, valueI->10, valueB->false]

21 =============================================
( prog ( var x 1 ) ( print ( ++ x ) ) ( print ( +++ x ) ) ( print ( ++ x ) ) ( print ( +++ x ) ) ( print ( -- x ) ) ( print ( --- x ) ) ( print ( -- x ) ) ( print ( --- x ) ) )

(prog (var x 1) (print (++ x)) (print (+++ x)) (print (++ x)) (print (+++ x)) (print (-- x)) (print (--- x)) (print (-- x)) (print (--- x)))

(prog (var x 1)
      (print (++ x))
      (print (+++ x))
      (print (++ x))
      (print (+++ x))
      (print (-- x))
      (print (--- x))
      (print (-- x))
      (print (--- x)))

Program
{
   x = 1;
   print( x++ );
   print( ++x );
   print( x++ );
   print( ++x );
   print( x-- );
   print( --x );
   print( x-- );
   print( --x );
}

[Global Environment
 x = [tag->int, valueI->1, valueB->false]]

[tag->int, valueI->1, valueB->false]

[tag->int, valueI->3, valueB->false]

[tag->int, valueI->3, valueB->false]

[tag->int, valueI->5, valueB->false]

[tag->int, valueI->5, valueB->false]

[tag->int, valueI->3, valueB->false]

[tag->int, valueI->3, valueB->false]

[tag->int, valueI->1, valueB->false]

result = [tag->int, valueI->1, valueB->false]
