about summary refs log tree commit diff stats
path: root/cpp/.traces
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/.traces')
-rw-r--r--cpp/.traces/add14
-rw-r--r--cpp/.traces/add_literal6
-rw-r--r--cpp/.traces/and12
-rw-r--r--cpp/.traces/brace_conversion2
-rw-r--r--cpp/.traces/break_cascading2
-rw-r--r--cpp/.traces/break_cascading26
-rw-r--r--cpp/.traces/break_empty_block2
-rw-r--r--cpp/.traces/break_if8
-rw-r--r--cpp/.traces/break_label8
-rw-r--r--cpp/.traces/break_nested8
-rw-r--r--cpp/.traces/break_nested_degenerate6
-rw-r--r--cpp/.traces/break_nested_degenerate24
-rw-r--r--cpp/.traces/calling_recipe6
-rw-r--r--cpp/.traces/copy8
-rw-r--r--cpp/.traces/copy_array20
-rw-r--r--cpp/.traces/copy_indirect12
-rw-r--r--cpp/.traces/copy_literal4
-rw-r--r--cpp/.traces/copy_multiple_locations12
-rw-r--r--cpp/.traces/divide14
-rw-r--r--cpp/.traces/divide_literal6
-rw-r--r--cpp/.traces/divide_with_remainder16
-rw-r--r--cpp/.traces/divide_with_remainder_literal8
-rw-r--r--cpp/.traces/equal14
-rw-r--r--cpp/.traces/equal214
-rw-r--r--cpp/.traces/first_recipe4
-rw-r--r--cpp/.traces/get15
-rw-r--r--cpp/.traces/get_address14
-rw-r--r--cpp/.traces/get_address_indirect16
-rw-r--r--cpp/.traces/get_handles_record_fields19
-rw-r--r--cpp/.traces/get_indirect17
-rw-r--r--cpp/.traces/greater_or_equal14
-rw-r--r--cpp/.traces/greater_or_equal214
-rw-r--r--cpp/.traces/greater_or_equal314
-rw-r--r--cpp/.traces/greater_than14
-rw-r--r--cpp/.traces/greater_than214
-rw-r--r--cpp/.traces/index20
-rw-r--r--cpp/.traces/index_address20
-rw-r--r--cpp/.traces/jump_backward6
-rw-r--r--cpp/.traces/jump_can_skip_instructions6
-rw-r--r--cpp/.traces/jump_if8
-rw-r--r--cpp/.traces/jump_if_fallthrough6
-rw-r--r--cpp/.traces/jump_unless6
-rw-r--r--cpp/.traces/jump_unless_fallthrough8
-rw-r--r--cpp/.traces/lesser_or_equal14
-rw-r--r--cpp/.traces/lesser_or_equal214
-rw-r--r--cpp/.traces/lesser_or_equal314
-rw-r--r--cpp/.traces/lesser_than14
-rw-r--r--cpp/.traces/lesser_than214
-rw-r--r--cpp/.traces/loop6
-rw-r--r--cpp/.traces/multiply14
-rw-r--r--cpp/.traces/multiply_literal6
-rw-r--r--cpp/.traces/next_ingredient10
-rw-r--r--cpp/.traces/not8
-rw-r--r--cpp/.traces/or12
-rw-r--r--cpp/.traces/parse_comment_after_instruction4
-rw-r--r--cpp/.traces/parse_comment_amongst_instruction4
-rw-r--r--cpp/.traces/parse_comment_amongst_instruction24
-rw-r--r--cpp/.traces/parse_comment_amongst_instruction38
-rw-r--r--cpp/.traces/parse_comment_outside_recipe4
-rw-r--r--cpp/.traces/parse_multiple_ingredients8
-rw-r--r--cpp/.traces/parse_multiple_products6
-rw-r--r--cpp/.traces/parse_multiple_properties4
-rw-r--r--cpp/.traces/parse_multiple_types8
-rw-r--r--cpp/.traces/parse_properties4
-rw-r--r--cpp/.traces/reply18
-rw-r--r--cpp/.traces/run_label8
-rw-r--r--cpp/.traces/store_indirect8
-rw-r--r--cpp/.traces/subtract14
-rw-r--r--cpp/.traces/subtract_literal6
69 files changed, 342 insertions, 339 deletions
diff --git a/cpp/.traces/add b/cpp/.traces/add
index 59515bf1..ff1c01b5 100644
--- a/cpp/.traces/add
+++ b/cpp/.traces/add
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 2
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/add_literal b/cpp/.traces/add_literal
index dc2755f2..a111878f 100644
--- a/cpp/.traces/add_literal
+++ b/cpp/.traces/add_literal
@@ -1,7 +1,7 @@
 parse/0: instruction: 2
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 after-brace/0: recipe main
 after-brace/0: add ...
 run/0: instruction main/0
diff --git a/cpp/.traces/and b/cpp/.traces/and
index 0b259036..73efbe72 100644
--- a/cpp/.traces/and
+++ b/cpp/.traces/and
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 7
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/brace_conversion b/cpp/.traces/brace_conversion
index b00da286..2c082bad 100644
--- a/cpp/.traces/brace_conversion
+++ b/cpp/.traces/brace_conversion
@@ -2,7 +2,7 @@ parse/0: label: {
 parse/0: instruction: 25
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: label: }
 brace/0: 24: push (open, 0)
 brace/0: push (close, 3)
diff --git a/cpp/.traces/break_cascading b/cpp/.traces/break_cascading
index 09ba7965..56a532a7 100644
--- a/cpp/.traces/break_cascading
+++ b/cpp/.traces/break_cascading
@@ -1,6 +1,6 @@
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: label: {
 parse/0: instruction: 25
 parse/0: label: }
diff --git a/cpp/.traces/break_cascading2 b/cpp/.traces/break_cascading2
index 313c607c..7b837b2a 100644
--- a/cpp/.traces/break_cascading2
+++ b/cpp/.traces/break_cascading2
@@ -1,14 +1,14 @@
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: label: {
 parse/0: instruction: 25
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 parse/0: label: }
 parse/0: label: {
 parse/0: instruction: 25
diff --git a/cpp/.traces/break_empty_block b/cpp/.traces/break_empty_block
index 37e4ced7..d66fe136 100644
--- a/cpp/.traces/break_empty_block
+++ b/cpp/.traces/break_empty_block
@@ -1,6 +1,6 @@
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: label: {
 parse/0: instruction: 25
 parse/0: label: }
diff --git a/cpp/.traces/break_if b/cpp/.traces/break_if
index fdfce24d..34274a91 100644
--- a/cpp/.traces/break_if
+++ b/cpp/.traces/break_if
@@ -1,15 +1,15 @@
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: label: {
 parse/0: instruction: 25
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 parse/0: label: }
 parse/0: label: {
 parse/0: instruction: 26
diff --git a/cpp/.traces/break_label b/cpp/.traces/break_label
index cefe3e2e..23ce2727 100644
--- a/cpp/.traces/break_label
+++ b/cpp/.traces/break_label
@@ -1,17 +1,17 @@
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: label: {
 parse/0: instruction: 25
-parse/0:   ingredient: {name: "3", value: 3, type: 0, properties: [3: offset]}
+parse/0:   ingredient: {name: "+foo", value: 0, type: 0, properties: [+foo: offset]}
 parse/0: label: }
 brace/0: 24: push (open, 1)
 brace/0: push (close, 3)
 after-brace/0: recipe main
 after-brace/0: copy ...
-after-brace/0: jump 3:offset
+after-brace/0: jump +foo:offset
 run/0: instruction main/0
 run/0: ingredient 0 is 0
 mem/0: storing in location 1
 run/0: instruction main/2
-run/0: ingredient 0 is 3
+run/0: ingredient 0 is +foo
diff --git a/cpp/.traces/break_nested b/cpp/.traces/break_nested
index 3212847b..ed3afda6 100644
--- a/cpp/.traces/break_nested
+++ b/cpp/.traces/break_nested
@@ -1,19 +1,19 @@
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: label: {
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 25
 parse/0: label: {
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 parse/0: label: }
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
+parse/0:   product: {name: "4", value: 0, type: 1, properties: [4: integer]}
 parse/0: label: }
 brace/0: 24: push (open, 1)
 brace/0: 24: push (open, 4)
diff --git a/cpp/.traces/break_nested_degenerate b/cpp/.traces/break_nested_degenerate
index 90a0d57f..2f09b01d 100644
--- a/cpp/.traces/break_nested_degenerate
+++ b/cpp/.traces/break_nested_degenerate
@@ -1,16 +1,16 @@
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: label: {
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 25
 parse/0: label: {
 parse/0: label: }
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
+parse/0:   product: {name: "4", value: 0, type: 1, properties: [4: integer]}
 parse/0: label: }
 brace/0: 24: push (open, 1)
 brace/0: 24: push (open, 4)
diff --git a/cpp/.traces/break_nested_degenerate2 b/cpp/.traces/break_nested_degenerate2
index 6ca10a5c..7dd3ba16 100644
--- a/cpp/.traces/break_nested_degenerate2
+++ b/cpp/.traces/break_nested_degenerate2
@@ -1,10 +1,10 @@
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: label: {
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 25
 parse/0: label: {
 parse/0: label: }
diff --git a/cpp/.traces/calling_recipe b/cpp/.traces/calling_recipe
index 078963f6..d1b79af2 100644
--- a/cpp/.traces/calling_recipe
+++ b/cpp/.traces/calling_recipe
@@ -1,8 +1,8 @@
 parse/0: instruction: 25
 parse/0: instruction: 2
-parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
-parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]}
+parse/0:   ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: f ...
 after-brace/0: recipe f
diff --git a/cpp/.traces/copy b/cpp/.traces/copy
index 3c12980d..075945a3 100644
--- a/cpp/.traces/copy
+++ b/cpp/.traces/copy
@@ -1,9 +1,9 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/copy_array b/cpp/.traces/copy_array
index 0cd0074a..00cab3ff 100644
--- a/cpp/.traces/copy_array
+++ b/cpp/.traces/copy_array
@@ -1,18 +1,18 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "3", value: 0, type: 0, properties: [3: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "14", value: 14, type: 0, properties: [14: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "14", value: 0, type: 0, properties: [14: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "15", value: 15, type: 0, properties: [15: literal]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "15", value: 0, type: 0, properties: [15: literal]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "16", value: 16, type: 0, properties: [16: literal]}
-parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
+parse/0:   ingredient: {name: "16", value: 0, type: 0, properties: [16: literal]}
+parse/0:   product: {name: "4", value: 0, type: 1, properties: [4: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 6, properties: [1: integer-array]}
-parse/0:   product: {name: "5", value: 5, type: 6, properties: [5: integer-array]}
+parse/0:   ingredient: {name: "1", value: 0, type: 6, properties: [1: integer-array]}
+parse/0:   product: {name: "5", value: 0, type: 6, properties: [5: integer-array]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/copy_indirect b/cpp/.traces/copy_indirect
index aa429126..8f83cd0c 100644
--- a/cpp/.traces/copy_indirect
+++ b/cpp/.traces/copy_indirect
@@ -1,12 +1,12 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
-parse/0:   product: {name: "1", value: 1, type: 2-1, properties: [1: address:integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 0, type: 2-1, properties: [1: address:integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 2-1, properties: [1: address:integer, deref: ]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 2-1, properties: [1: address:integer, deref: ]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/copy_literal b/cpp/.traces/copy_literal
index a5a1dd6c..2530b7b7 100644
--- a/cpp/.traces/copy_literal
+++ b/cpp/.traces/copy_literal
@@ -1,6 +1,6 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 run/0: instruction main/0
diff --git a/cpp/.traces/copy_multiple_locations b/cpp/.traces/copy_multiple_locations
index c4b8edb6..18c61d2d 100644
--- a/cpp/.traces/copy_multiple_locations
+++ b/cpp/.traces/copy_multiple_locations
@@ -1,12 +1,12 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 4, properties: [1: point]}
-parse/0:   product: {name: "3", value: 3, type: 4, properties: [3: point]}
+parse/0:   ingredient: {name: "1", value: 0, type: 4, properties: [1: point]}
+parse/0:   product: {name: "3", value: 0, type: 4, properties: [3: point]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/divide b/cpp/.traces/divide
index c521ccd8..c361b85d 100644
--- a/cpp/.traces/divide
+++ b/cpp/.traces/divide
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "27", value: 27, type: 0, properties: [27: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "27", value: 0, type: 0, properties: [27: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "3", value: 0, type: 0, properties: [3: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 5
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/divide_literal b/cpp/.traces/divide_literal
index 85335d47..882a3e7e 100644
--- a/cpp/.traces/divide_literal
+++ b/cpp/.traces/divide_literal
@@ -1,7 +1,7 @@
 parse/0: instruction: 5
-parse/0:   ingredient: {name: "8", value: 8, type: 0, properties: [8: literal]}
-parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "8", value: 0, type: 0, properties: [8: literal]}
+parse/0:   ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 after-brace/0: recipe main
 after-brace/0: divide ...
 run/0: instruction main/0
diff --git a/cpp/.traces/divide_with_remainder b/cpp/.traces/divide_with_remainder
index 8ae52475..4c417eed 100644
--- a/cpp/.traces/divide_with_remainder
+++ b/cpp/.traces/divide_with_remainder
@@ -1,14 +1,14 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "27", value: 27, type: 0, properties: [27: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "27", value: 0, type: 0, properties: [27: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "11", value: 11, type: 0, properties: [11: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "11", value: 0, type: 0, properties: [11: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 6
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
-parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
+parse/0:   product: {name: "4", value: 0, type: 1, properties: [4: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/divide_with_remainder_literal b/cpp/.traces/divide_with_remainder_literal
index be1f8f85..4447d109 100644
--- a/cpp/.traces/divide_with_remainder_literal
+++ b/cpp/.traces/divide_with_remainder_literal
@@ -1,8 +1,8 @@
 parse/0: instruction: 6
-parse/0:   ingredient: {name: "9", value: 9, type: 0, properties: [9: literal]}
-parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "9", value: 0, type: 0, properties: [9: literal]}
+parse/0:   ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 after-brace/0: recipe main
 after-brace/0: divide_with_remainder ...
 run/0: instruction main/0
diff --git a/cpp/.traces/equal b/cpp/.traces/equal
index e852c144..e114b915 100644
--- a/cpp/.traces/equal
+++ b/cpp/.traces/equal
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 13
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/equal2 b/cpp/.traces/equal2
index 3435ba18..1589df01 100644
--- a/cpp/.traces/equal2
+++ b/cpp/.traces/equal2
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 13
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/first_recipe b/cpp/.traces/first_recipe
index 2d13cf1d..3ca1f8f4 100644
--- a/cpp/.traces/first_recipe
+++ b/cpp/.traces/first_recipe
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
diff --git a/cpp/.traces/get b/cpp/.traces/get
index 7043c0ef..7f1a7336 100644
--- a/cpp/.traces/get
+++ b/cpp/.traces/get
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "12", value: 12, type: 1, properties: [12: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "12", value: 0, type: 1, properties: [12: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
-parse/0:   product: {name: "13", value: 13, type: 1, properties: [13: integer]}
+parse/0:   ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "13", value: 0, type: 1, properties: [13: integer]}
 parse/0: instruction: 18
-parse/0:   ingredient: {name: "12", value: 12, type: 4, properties: [12: point]}
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
-parse/0:   product: {name: "15", value: 15, type: 1, properties: [15: integer]}
+parse/0:   ingredient: {name: "12", value: 0, type: 4, properties: [12: point]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]}
+parse/0:   product: {name: "15", value: 0, type: 1, properties: [15: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
@@ -19,6 +19,7 @@ run/0: instruction main/1
 run/0: ingredient 0 is 35
 mem/0: storing in location 13
 run/0: instruction main/2
+run/0: foo: ingredient 0 is 12/12
 run/0: ingredient 0 is 12
 run/0: ingredient 1 is 1
 run/0: address to copy is 13
diff --git a/cpp/.traces/get_address b/cpp/.traces/get_address
index 2011a897..7391d986 100644
--- a/cpp/.traces/get_address
+++ b/cpp/.traces/get_address
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "12", value: 12, type: 1, properties: [12: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "12", value: 0, type: 1, properties: [12: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
-parse/0:   product: {name: "13", value: 13, type: 1, properties: [13: integer]}
+parse/0:   ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "13", value: 0, type: 1, properties: [13: integer]}
 parse/0: instruction: 19
-parse/0:   ingredient: {name: "12", value: 12, type: 4, properties: [12: point]}
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
-parse/0:   product: {name: "15", value: 15, type: 2-1, properties: [15: address:integer]}
+parse/0:   ingredient: {name: "12", value: 0, type: 4, properties: [12: point]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]}
+parse/0:   product: {name: "15", value: 0, type: 2-1, properties: [15: address:integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/get_address_indirect b/cpp/.traces/get_address_indirect
index 398e28d1..b7e71e53 100644
--- a/cpp/.traces/get_address_indirect
+++ b/cpp/.traces/get_address_indirect
@@ -1,16 +1,16 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 parse/0: instruction: 19
-parse/0:   ingredient: {name: "1", value: 1, type: 2-4, properties: [1: address:point, deref: ]}
+parse/0:   ingredient: {name: "1", value: 0, type: 2-4, properties: [1: address:point, deref: ]}
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: offset]}
-parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
+parse/0:   product: {name: "4", value: 0, type: 1, properties: [4: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/get_handles_record_fields b/cpp/.traces/get_handles_record_fields
index a5e4b6eb..428a9d2c 100644
--- a/cpp/.traces/get_handles_record_fields
+++ b/cpp/.traces/get_handles_record_fields
@@ -1,16 +1,16 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "12", value: 12, type: 1, properties: [12: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "12", value: 0, type: 1, properties: [12: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
-parse/0:   product: {name: "13", value: 13, type: 1, properties: [13: integer]}
+parse/0:   ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "13", value: 0, type: 1, properties: [13: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "36", value: 36, type: 0, properties: [36: literal]}
-parse/0:   product: {name: "14", value: 14, type: 1, properties: [14: integer]}
+parse/0:   ingredient: {name: "36", value: 0, type: 0, properties: [36: literal]}
+parse/0:   product: {name: "14", value: 0, type: 1, properties: [14: integer]}
 parse/0: instruction: 18
-parse/0:   ingredient: {name: "12", value: 12, type: 5, properties: [12: point-integer]}
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
-parse/0:   product: {name: "15", value: 15, type: 1, properties: [15: integer]}
+parse/0:   ingredient: {name: "12", value: 0, type: 5, properties: [12: point-integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]}
+parse/0:   product: {name: "15", value: 0, type: 1, properties: [15: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
@@ -26,6 +26,7 @@ run/0: instruction main/2
 run/0: ingredient 0 is 36
 mem/0: storing in location 14
 run/0: instruction main/3
+run/0: foo: ingredient 0 is 12/12
 run/0: ingredient 0 is 12
 run/0: ingredient 1 is 1
 run/0: address to copy is 14
diff --git a/cpp/.traces/get_indirect b/cpp/.traces/get_indirect
index 8aa7606c..192f79cb 100644
--- a/cpp/.traces/get_indirect
+++ b/cpp/.traces/get_indirect
@@ -1,16 +1,16 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 parse/0: instruction: 18
-parse/0:   ingredient: {name: "1", value: 1, type: 2-4, properties: [1: address:point, deref: ]}
+parse/0:   ingredient: {name: "1", value: 0, type: 2-4, properties: [1: address:point, deref: ]}
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: offset]}
-parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
+parse/0:   product: {name: "4", value: 0, type: 1, properties: [4: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
@@ -26,6 +26,7 @@ run/0: instruction main/2
 run/0: ingredient 0 is 35
 mem/0: storing in location 3
 run/0: instruction main/3
+run/0: foo: ingredient 0 is 1/1
 run/0: ingredient 0 is 1
 mem/0: location 1 is 2
 run/0: ingredient 1 is 0
diff --git a/cpp/.traces/greater_or_equal b/cpp/.traces/greater_or_equal
index d625a3f7..b91ff266 100644
--- a/cpp/.traces/greater_or_equal
+++ b/cpp/.traces/greater_or_equal
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 16
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/greater_or_equal2 b/cpp/.traces/greater_or_equal2
index eb68b27a..dbaac94f 100644
--- a/cpp/.traces/greater_or_equal2
+++ b/cpp/.traces/greater_or_equal2
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 16
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/greater_or_equal3 b/cpp/.traces/greater_or_equal3
index e78e6178..24d3969c 100644
--- a/cpp/.traces/greater_or_equal3
+++ b/cpp/.traces/greater_or_equal3
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 16
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/greater_than b/cpp/.traces/greater_than
index 9c3a2523..9d7645b3 100644
--- a/cpp/.traces/greater_than
+++ b/cpp/.traces/greater_than
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 14
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/greater_than2 b/cpp/.traces/greater_than2
index 31203a57..21ecf7ae 100644
--- a/cpp/.traces/greater_than2
+++ b/cpp/.traces/greater_than2
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 14
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/index b/cpp/.traces/index
index 20460ed5..e56fcb07 100644
--- a/cpp/.traces/index
+++ b/cpp/.traces/index
@@ -1,19 +1,19 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "3", value: 0, type: 0, properties: [3: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "14", value: 14, type: 0, properties: [14: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "14", value: 0, type: 0, properties: [14: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "15", value: 15, type: 0, properties: [15: literal]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "15", value: 0, type: 0, properties: [15: literal]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "16", value: 16, type: 0, properties: [16: literal]}
-parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
+parse/0:   ingredient: {name: "16", value: 0, type: 0, properties: [16: literal]}
+parse/0:   product: {name: "4", value: 0, type: 1, properties: [4: integer]}
 parse/0: instruction: 20
-parse/0:   ingredient: {name: "1", value: 1, type: 6, properties: [1: integer-array]}
+parse/0:   ingredient: {name: "1", value: 0, type: 6, properties: [1: integer-array]}
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "5", value: 5, type: 1, properties: [5: integer]}
+parse/0:   product: {name: "5", value: 0, type: 1, properties: [5: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/index_address b/cpp/.traces/index_address
index d00a6a7c..87d6fdfc 100644
--- a/cpp/.traces/index_address
+++ b/cpp/.traces/index_address
@@ -1,19 +1,19 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "3", value: 0, type: 0, properties: [3: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "14", value: 14, type: 0, properties: [14: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "14", value: 0, type: 0, properties: [14: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "15", value: 15, type: 0, properties: [15: literal]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "15", value: 0, type: 0, properties: [15: literal]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "16", value: 16, type: 0, properties: [16: literal]}
-parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
+parse/0:   ingredient: {name: "16", value: 0, type: 0, properties: [16: literal]}
+parse/0:   product: {name: "4", value: 0, type: 1, properties: [4: integer]}
 parse/0: instruction: 21
-parse/0:   ingredient: {name: "1", value: 1, type: 6, properties: [1: integer-array]}
+parse/0:   ingredient: {name: "1", value: 0, type: 6, properties: [1: integer-array]}
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "5", value: 5, type: 1, properties: [5: integer]}
+parse/0:   product: {name: "5", value: 0, type: 1, properties: [5: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/jump_backward b/cpp/.traces/jump_backward
index 2fc0f399..b9cf549c 100644
--- a/cpp/.traces/jump_backward
+++ b/cpp/.traces/jump_backward
@@ -1,9 +1,9 @@
 parse/0: instruction: 10
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]}
 parse/0: instruction: 10
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]}
 parse/0: instruction: 10
-parse/0:   ingredient: {name: "-2", value: -2, type: 0, properties: [-2: offset]}
+parse/0:   ingredient: {name: "-2", value: 0, type: 0, properties: [-2: offset]}
 after-brace/0: recipe main
 after-brace/0: jump ...
 after-brace/0: jump ...
diff --git a/cpp/.traces/jump_can_skip_instructions b/cpp/.traces/jump_can_skip_instructions
index 8dbf5748..3e0f1bfd 100644
--- a/cpp/.traces/jump_can_skip_instructions
+++ b/cpp/.traces/jump_can_skip_instructions
@@ -1,8 +1,8 @@
 parse/0: instruction: 10
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 after-brace/0: recipe main
 after-brace/0: jump ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/jump_if b/cpp/.traces/jump_if
index c56b028b..1d0d7739 100644
--- a/cpp/.traces/jump_if
+++ b/cpp/.traces/jump_if
@@ -1,9 +1,9 @@
 parse/0: instruction: 11
-parse/0:   ingredient: {name: "999", value: 999, type: 0, properties: [999: literal]}
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
+parse/0:   ingredient: {name: "999", value: 0, type: 0, properties: [999: literal]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 after-brace/0: recipe main
 after-brace/0: jump-if ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/jump_if_fallthrough b/cpp/.traces/jump_if_fallthrough
index 601bbc3d..74e1a479 100644
--- a/cpp/.traces/jump_if_fallthrough
+++ b/cpp/.traces/jump_if_fallthrough
@@ -1,9 +1,9 @@
 parse/0: instruction: 11
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
-parse/0:   product: {name: "123", value: 123, type: 1, properties: [123: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "123", value: 0, type: 1, properties: [123: integer]}
 after-brace/0: recipe main
 after-brace/0: jump-if ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/jump_unless b/cpp/.traces/jump_unless
index 15587ff0..62fc389a 100644
--- a/cpp/.traces/jump_unless
+++ b/cpp/.traces/jump_unless
@@ -1,9 +1,9 @@
 parse/0: instruction: 12
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 after-brace/0: recipe main
 after-brace/0: jump-unless ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/jump_unless_fallthrough b/cpp/.traces/jump_unless_fallthrough
index e87ac12e..b640b6be 100644
--- a/cpp/.traces/jump_unless_fallthrough
+++ b/cpp/.traces/jump_unless_fallthrough
@@ -1,9 +1,9 @@
 parse/0: instruction: 12
-parse/0:   ingredient: {name: "999", value: 999, type: 0, properties: [999: literal]}
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
+parse/0:   ingredient: {name: "999", value: 0, type: 0, properties: [999: literal]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
-parse/0:   product: {name: "123", value: 123, type: 1, properties: [123: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "123", value: 0, type: 1, properties: [123: integer]}
 after-brace/0: recipe main
 after-brace/0: jump-unless ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/lesser_or_equal b/cpp/.traces/lesser_or_equal
index 6898935d..f0f012e2 100644
--- a/cpp/.traces/lesser_or_equal
+++ b/cpp/.traces/lesser_or_equal
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "32", value: 32, type: 0, properties: [32: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "32", value: 0, type: 0, properties: [32: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 17
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/lesser_or_equal2 b/cpp/.traces/lesser_or_equal2
index 2434a4de..57a72378 100644
--- a/cpp/.traces/lesser_or_equal2
+++ b/cpp/.traces/lesser_or_equal2
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 17
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/lesser_or_equal3 b/cpp/.traces/lesser_or_equal3
index 74e5f592..d81e0530 100644
--- a/cpp/.traces/lesser_or_equal3
+++ b/cpp/.traces/lesser_or_equal3
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 17
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/lesser_than b/cpp/.traces/lesser_than
index d7b086e7..ccf85cfc 100644
--- a/cpp/.traces/lesser_than
+++ b/cpp/.traces/lesser_than
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "32", value: 32, type: 0, properties: [32: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "32", value: 0, type: 0, properties: [32: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 15
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/lesser_than2 b/cpp/.traces/lesser_than2
index 48967738..f2a6d7dc 100644
--- a/cpp/.traces/lesser_than2
+++ b/cpp/.traces/lesser_than2
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 15
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/loop b/cpp/.traces/loop
index 48f94a4e..2c05c2fb 100644
--- a/cpp/.traces/loop
+++ b/cpp/.traces/loop
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: label: {
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 parse/0: instruction: 25
 parse/0: label: }
 brace/0: 24: push (open, 2)
diff --git a/cpp/.traces/multiply b/cpp/.traces/multiply
index ce15063f..e5c78165 100644
--- a/cpp/.traces/multiply
+++ b/cpp/.traces/multiply
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "4", value: 4, type: 0, properties: [4: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "4", value: 0, type: 0, properties: [4: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "6", value: 6, type: 0, properties: [6: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "6", value: 0, type: 0, properties: [6: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 4
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/multiply_literal b/cpp/.traces/multiply_literal
index 9c18759b..6822d54c 100644
--- a/cpp/.traces/multiply_literal
+++ b/cpp/.traces/multiply_literal
@@ -1,7 +1,7 @@
 parse/0: instruction: 4
-parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
-parse/0:   ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]}
+parse/0:   ingredient: {name: "3", value: 0, type: 0, properties: [3: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 after-brace/0: recipe main
 after-brace/0: multiply ...
 run/0: instruction main/0
diff --git a/cpp/.traces/next_ingredient b/cpp/.traces/next_ingredient
index 9c779fcd..5c77e068 100644
--- a/cpp/.traces/next_ingredient
+++ b/cpp/.traces/next_ingredient
@@ -1,11 +1,11 @@
 parse/0: instruction: 25
-parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
+parse/0:   ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]}
 parse/0: instruction: 22
-parse/0:   product: {name: "12", value: 12, type: 1, properties: [12: integer]}
+parse/0:   product: {name: "12", value: 0, type: 1, properties: [12: integer]}
 parse/0: instruction: 2
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
-parse/0:   ingredient: {name: "12", value: 12, type: 1, properties: [12: integer]}
-parse/0:   product: {name: "13", value: 13, type: 1, properties: [13: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]}
+parse/0:   ingredient: {name: "12", value: 0, type: 1, properties: [12: integer]}
+parse/0:   product: {name: "13", value: 0, type: 1, properties: [13: integer]}
 after-brace/0: recipe main
 after-brace/0: f ...
 after-brace/0: recipe f
diff --git a/cpp/.traces/not b/cpp/.traces/not
index d0f35946..ab7d4348 100644
--- a/cpp/.traces/not
+++ b/cpp/.traces/not
@@ -1,9 +1,9 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 9
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: not ...
diff --git a/cpp/.traces/or b/cpp/.traces/or
index bf8bf538..17582d99 100644
--- a/cpp/.traces/or
+++ b/cpp/.traces/or
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
 parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 8
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/parse_comment_after_instruction b/cpp/.traces/parse_comment_after_instruction
index 2d13cf1d..3ca1f8f4 100644
--- a/cpp/.traces/parse_comment_after_instruction
+++ b/cpp/.traces/parse_comment_after_instruction
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
diff --git a/cpp/.traces/parse_comment_amongst_instruction b/cpp/.traces/parse_comment_amongst_instruction
index 2d13cf1d..3ca1f8f4 100644
--- a/cpp/.traces/parse_comment_amongst_instruction
+++ b/cpp/.traces/parse_comment_amongst_instruction
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
diff --git a/cpp/.traces/parse_comment_amongst_instruction2 b/cpp/.traces/parse_comment_amongst_instruction2
index 2d13cf1d..3ca1f8f4 100644
--- a/cpp/.traces/parse_comment_amongst_instruction2
+++ b/cpp/.traces/parse_comment_amongst_instruction2
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
diff --git a/cpp/.traces/parse_comment_amongst_instruction3 b/cpp/.traces/parse_comment_amongst_instruction3
index 6f7f2dce..6df04dee 100644
--- a/cpp/.traces/parse_comment_amongst_instruction3
+++ b/cpp/.traces/parse_comment_amongst_instruction3
@@ -1,6 +1,6 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
diff --git a/cpp/.traces/parse_comment_outside_recipe b/cpp/.traces/parse_comment_outside_recipe
index 2d13cf1d..3ca1f8f4 100644
--- a/cpp/.traces/parse_comment_outside_recipe
+++ b/cpp/.traces/parse_comment_outside_recipe
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
diff --git a/cpp/.traces/parse_multiple_ingredients b/cpp/.traces/parse_multiple_ingredients
index e40fb659..8b18e719 100644
--- a/cpp/.traces/parse_multiple_ingredients
+++ b/cpp/.traces/parse_multiple_ingredients
@@ -1,5 +1,5 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   ingredient: {name: "4", value: 4, type: 1, properties: [4: integer]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   ingredient: {name: "4", value: 0, type: 1, properties: [4: integer]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
diff --git a/cpp/.traces/parse_multiple_products b/cpp/.traces/parse_multiple_products
index 47be43c4..83970be9 100644
--- a/cpp/.traces/parse_multiple_products
+++ b/cpp/.traces/parse_multiple_products
@@ -1,4 +1,4 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
diff --git a/cpp/.traces/parse_multiple_properties b/cpp/.traces/parse_multiple_properties
index c3c79ae2..c18265b2 100644
--- a/cpp/.traces/parse_multiple_properties
+++ b/cpp/.traces/parse_multiple_properties
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal, foo: bar:baz]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal, foo: bar:baz]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
diff --git a/cpp/.traces/parse_multiple_types b/cpp/.traces/parse_multiple_types
index 1b6903cd..8230f9ac 100644
--- a/cpp/.traces/parse_multiple_types
+++ b/cpp/.traces/parse_multiple_types
@@ -1,5 +1,5 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   ingredient: {name: "4", value: 4, type: 1, properties: [4: integer]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   product: {name: "2", value: 2, type: 2-1, properties: [2: address:integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   ingredient: {name: "4", value: 0, type: 1, properties: [4: integer]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 0, type: 2-1, properties: [2: address:integer]}
diff --git a/cpp/.traces/parse_properties b/cpp/.traces/parse_properties
index 01bfb40a..c72f91b4 100644
--- a/cpp/.traces/parse_properties
+++ b/cpp/.traces/parse_properties
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1-2, properties: [1: integer:address, deref: ]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1-2, properties: [1: integer:address, deref: ]}
diff --git a/cpp/.traces/reply b/cpp/.traces/reply
index e94e9610..65f49f5b 100644
--- a/cpp/.traces/reply
+++ b/cpp/.traces/reply
@@ -1,16 +1,16 @@
 parse/0: instruction: 25
-parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
-parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
+parse/0:   product: {name: "4", value: 0, type: 1, properties: [4: integer]}
 parse/0: instruction: 22
-parse/0:   product: {name: "12", value: 12, type: 1, properties: [12: integer]}
+parse/0:   product: {name: "12", value: 0, type: 1, properties: [12: integer]}
 parse/0: instruction: 2
-parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
-parse/0:   ingredient: {name: "12", value: 12, type: 1, properties: [12: integer]}
-parse/0:   product: {name: "13", value: 13, type: 1, properties: [13: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]}
+parse/0:   ingredient: {name: "12", value: 0, type: 1, properties: [12: integer]}
+parse/0:   product: {name: "13", value: 0, type: 1, properties: [13: integer]}
 parse/0: instruction: 23
-parse/0:   ingredient: {name: "12", value: 12, type: 1, properties: [12: integer]}
-parse/0:   ingredient: {name: "13", value: 13, type: 1, properties: [13: integer]}
+parse/0:   ingredient: {name: "12", value: 0, type: 1, properties: [12: integer]}
+parse/0:   ingredient: {name: "13", value: 0, type: 1, properties: [13: integer]}
 after-brace/0: recipe main
 after-brace/0: f ...
 after-brace/0: recipe f
diff --git a/cpp/.traces/run_label b/cpp/.traces/run_label
index 6d1065b9..59dded7d 100644
--- a/cpp/.traces/run_label
+++ b/cpp/.traces/run_label
@@ -1,10 +1,10 @@
 parse/0: label: +foo
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/store_indirect b/cpp/.traces/store_indirect
index 44c5f10c..2ac8aa81 100644
--- a/cpp/.traces/store_indirect
+++ b/cpp/.traces/store_indirect
@@ -1,9 +1,9 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
-parse/0:   product: {name: "1", value: 1, type: 2-1, properties: [1: address:integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 0, type: 2-1, properties: [1: address:integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "1", value: 1, type: 2-1, properties: [1: address:integer, deref: ]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 0, type: 2-1, properties: [1: address:integer, deref: ]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/subtract b/cpp/.traces/subtract
index 4275117e..f7bc4113 100644
--- a/cpp/.traces/subtract
+++ b/cpp/.traces/subtract
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
-parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 0, type: 1, properties: [2: integer]}
 parse/0: instruction: 3
-parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
-parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
-parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 0, type: 1, properties: [3: integer]}
 after-brace/0: recipe main
 after-brace/0: copy ...
 after-brace/0: copy ...
diff --git a/cpp/.traces/subtract_literal b/cpp/.traces/subtract_literal
index 5bd95f68..8e601f9b 100644
--- a/cpp/.traces/subtract_literal
+++ b/cpp/.traces/subtract_literal
@@ -1,7 +1,7 @@
 parse/0: instruction: 3
-parse/0:   ingredient: {name: "5", value: 5, type: 0, properties: [5: literal]}
-parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
-parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "5", value: 0, type: 0, properties: [5: literal]}
+parse/0:   ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 0, type: 1, properties: [1: integer]}
 after-brace/0: recipe main
 after-brace/0: subtract ...
 run/0: instruction main/0