about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--cpp/.traces/array-from-args6
-rw-r--r--cpp/.traces/buffer-append-works30
-rw-r--r--cpp/.traces/channel8
-rw-r--r--cpp/.traces/channel-initialization8
-rw-r--r--cpp/.traces/channel-new-empty-not-full8
-rw-r--r--cpp/.traces/channel-read-increments-full12
-rw-r--r--cpp/.traces/channel-read-not-full12
-rw-r--r--cpp/.traces/channel-wrap20
-rw-r--r--cpp/.traces/channel-write-full10
-rw-r--r--cpp/.traces/channel-write-increments-free10
-rw-r--r--cpp/.traces/channel-write-not-empty10
-rw-r--r--cpp/.traces/check_string_in_memory10
-rw-r--r--cpp/.traces/check_trace4
-rw-r--r--cpp/.traces/check_trace_instruction4
-rw-r--r--cpp/.traces/check_trace_negative4
-rw-r--r--cpp/.traces/clear-line-erases-printed-characters14
-rw-r--r--cpp/.traces/first_scenario_in_mu4
-rw-r--r--cpp/.traces/integer-to-decimal-digit-negative6
-rw-r--r--cpp/.traces/integer-to-decimal-digit-positive6
-rw-r--r--cpp/.traces/integer-to-decimal-digit-zero6
-rw-r--r--cpp/.traces/interpolate-at-end10
-rw-r--r--cpp/.traces/interpolate-at-start10
-rw-r--r--cpp/.traces/interpolate-works10
-rw-r--r--cpp/.traces/print-character-at-top-left10
-rw-r--r--cpp/.traces/run4
-rw-r--r--cpp/.traces/run_multiple8
-rw-r--r--cpp/.traces/scenario_block4
-rw-r--r--cpp/.traces/scenario_check_memory_and_trace6
-rw-r--r--cpp/.traces/scenario_multiple_blocks8
-rw-r--r--cpp/.traces/scenario_with_comment_in_mu4
-rw-r--r--cpp/.traces/scenario_with_multiple_comments_in_mu4
-rw-r--r--cpp/.traces/string-append-110
-rw-r--r--cpp/.traces/string-equal-common-lengths-but-distinct10
-rw-r--r--cpp/.traces/string-equal-distinct-lengths10
-rw-r--r--cpp/.traces/string-equal-identical10
-rw-r--r--cpp/.traces/string-equal-reflexive8
-rw-r--r--cpp/.traces/string-equal-with-empty10
-rw-r--r--cpp/.traces/trace_check_passes_silently4
-rw-r--r--cpp/.traces/trace_check_warns_on_failure_in_later_line4
-rw-r--r--cpp/.traces/trace_negative_check_warns_on_any_unexpected_line4
-rw-r--r--cpp/.traces/trace_negative_check_warns_on_failure4
-rw-r--r--cpp/049scenario_helpers.cc7
42 files changed, 173 insertions, 178 deletions
diff --git a/cpp/.traces/array-from-args b/cpp/.traces/array-from-args
index 292b6a44..6abdab60 100644
--- a/cpp/.traces/array-from-args
+++ b/cpp/.traces/array-from-args
@@ -39,10 +39,10 @@ parse/0:   product: {name: "1", value: 0, type: 2-5-1, properties: ["1": "addres
 parse/0: instruction: copy
 parse/0:   ingredient: {name: "1", value: 0, type: 2-5-1, properties: ["1": "address":"array":"location", "deref": ]}
 parse/0:   product: {name: "2", value: 0, type: 5-1, properties: ["2": "array":"location"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: init-array ...
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location"]} <- init-array {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]}
 run/0: instruction init-array/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -299,7 +299,7 @@ run/0: reply {name: "result", value: 4, type: 2-5-1, properties: ["result": "add
 mem/0: location 1005 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "2", value: 2, type: 5-1, properties: ["2": "array":"location"]} <- copy {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "deref": ]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
diff --git a/cpp/.traces/buffer-append-works b/cpp/.traces/buffer-append-works
index 9cadf18c..8536f9bc 100644
--- a/cpp/.traces/buffer-append-works
+++ b/cpp/.traces/buffer-append-works
@@ -254,7 +254,7 @@ name/0: assign s2 3
 name/0: element data of type buffer is at offset 1
 name/0: assign s3 4
 name/0: element length of type buffer is at offset 0
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: new ...
 after-brace/0: init-buffer ...
 after-brace/0: get ...
@@ -269,11 +269,11 @@ after-brace/0: get ...
 after-brace/0: equal ...
 after-brace/0: get ...
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
 mem/0: array size is 30
 mem/0: new alloc: 1000
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- init-buffer {name: "3", value: 3, type: 0, properties: ["3": "literal"]}
 run/0: instruction init-buffer/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -320,7 +320,7 @@ run/0: reply {name: "result", value: 1, type: 2-9, properties: ["result": "addre
 mem/0: location 1033 is 1062
 run/0: result 0 is 1062
 mem/0: storing 1062 in location 1002
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "s1", value: 2, type: 2-5-4, properties: ["s1": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]}
 run/0: ingredient 0 is x
 mem/0: location 1002 is 1062
@@ -330,7 +330,7 @@ run/0: its type is 2
 mem/0: location 1063 is 1064
 run/0: product 0 is 1064
 mem/0: storing 1064 in location 1003
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]}
 mem/0: location 1002 is 1062
 run/0: instruction buffer-append/0
@@ -447,7 +447,7 @@ run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buf
 mem/0: location 1070 is 1062
 run/0: result 0 is 1062
 mem/0: storing 1062 in location 1002
-run/0: instruction tmp0/4
+run/0: instruction run1001/4
 run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "98", value: 98, type: 0, properties: ["98": "literal"]}
 mem/0: location 1002 is 1062
 run/0: instruction buffer-append/0
@@ -564,7 +564,7 @@ run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buf
 mem/0: location 1132 is 1062
 run/0: result 0 is 1062
 mem/0: storing 1062 in location 1002
-run/0: instruction tmp0/5
+run/0: instruction run1001/5
 run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "99", value: 99, type: 0, properties: ["99": "literal"]}
 mem/0: location 1002 is 1062
 run/0: instruction buffer-append/0
@@ -681,7 +681,7 @@ run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buf
 mem/0: location 1194 is 1062
 run/0: result 0 is 1062
 mem/0: storing 1062 in location 1002
-run/0: instruction tmp0/6
+run/0: instruction run1001/6
 run/0: {name: "s2", value: 3, type: 2-5-4, properties: ["s2": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]}
 run/0: ingredient 0 is x
 mem/0: location 1002 is 1062
@@ -691,7 +691,7 @@ run/0: its type is 2
 mem/0: location 1063 is 1064
 run/0: product 0 is 1064
 mem/0: storing 1064 in location 1004
-run/0: instruction tmp0/7
+run/0: instruction run1001/7
 run/0: {name: "1", value: 1, type: 3, properties: ["1": "boolean", "raw": ]} <- equal {name: "s1", value: 2, type: 2-5-4, properties: ["s1": "address":"array":"character"]}, {name: "s2", value: 3, type: 2-5-4, properties: ["s2": "address":"array":"character"]}
 run/0: ingredient 0 is s1
 mem/0: location 1003 is 1064
@@ -699,7 +699,7 @@ run/0: ingredient 1 is s2
 mem/0: location 1004 is 1064
 run/0: product 0 is 1
 mem/0: storing 1 in location 1
-run/0: instruction tmp0/8
+run/0: instruction run1001/8
 run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy {name: "s2", value: 3, type: 2-5-4, properties: ["s2": "address":"array":"character", "deref": ]}
 run/0: ingredient 0 is s2
 mem/0: location 1004 is 1064
@@ -711,7 +711,7 @@ mem/0: storing 3 in location 2
 mem/0: storing 97 in location 3
 mem/0: storing 98 in location 4
 mem/0: storing 99 in location 5
-run/0: instruction tmp0/10
+run/0: instruction run1001/10
 run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "100", value: 100, type: 0, properties: ["100": "literal"]}
 mem/0: location 1002 is 1062
 run/0: instruction buffer-append/0
@@ -1048,7 +1048,7 @@ run/0: reply {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buf
 mem/0: location 1256 is 1062
 run/0: result 0 is 1062
 mem/0: storing 1062 in location 1002
-run/0: instruction tmp0/11
+run/0: instruction run1001/11
 run/0: {name: "s3", value: 4, type: 2-5-4, properties: ["s3": "address":"array":"character"]} <- get {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]}
 run/0: ingredient 0 is x
 mem/0: location 1002 is 1062
@@ -1058,7 +1058,7 @@ run/0: its type is 2
 mem/0: location 1063 is 1347
 run/0: product 0 is 1347
 mem/0: storing 1347 in location 1005
-run/0: instruction tmp0/12
+run/0: instruction run1001/12
 run/0: {name: "10", value: 10, type: 3, properties: ["10": "boolean", "raw": ]} <- equal {name: "s1", value: 2, type: 2-5-4, properties: ["s1": "address":"array":"character"]}, {name: "s3", value: 4, type: 2-5-4, properties: ["s3": "address":"array":"character"]}
 run/0: ingredient 0 is s1
 mem/0: location 1003 is 1064
@@ -1066,7 +1066,7 @@ run/0: ingredient 1 is s3
 mem/0: location 1005 is 1347
 run/0: product 0 is 0
 mem/0: storing 0 in location 10
-run/0: instruction tmp0/13
+run/0: instruction run1001/13
 run/0: {name: "11", value: 11, type: 1, properties: ["11": "integer", "raw": ]} <- get {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]}
 run/0: ingredient 0 is x
 mem/0: location 1002 is 1062
@@ -1076,7 +1076,7 @@ run/0: its type is 1
 mem/0: location 1062 is 4
 run/0: product 0 is 4
 mem/0: storing 4 in location 11
-run/0: instruction tmp0/14
+run/0: instruction run1001/14
 run/0: {name: "12", value: 12, type: 5-4, properties: ["12": "array":"character", "raw": ]} <- copy {name: "s3", value: 4, type: 2-5-4, properties: ["s3": "address":"array":"character", "deref": ]}
 run/0: ingredient 0 is s3
 mem/0: location 1005 is 1347
diff --git a/cpp/.traces/channel b/cpp/.traces/channel
index ca6ea2d2..c80f3f6d 100644
--- a/cpp/.traces/channel
+++ b/cpp/.traces/channel
@@ -40,11 +40,11 @@ parse/0: instruction: read
 parse/0:   ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]}
 parse/0:   product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]}
 parse/0:   product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: init-channel ...
 after-brace/0: write ...
 after-brace/0: read ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]}
 run/0: instruction init-channel/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -111,7 +111,7 @@ run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "addr
 mem/0: location 1002 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]}
 mem/0: location 1 is 1031
 run/0: instruction write/0
@@ -294,7 +294,7 @@ run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address"
 mem/0: location 1041 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction read/0
diff --git a/cpp/.traces/channel-initialization b/cpp/.traces/channel-initialization
index ad16bef2..9d82ca12 100644
--- a/cpp/.traces/channel-initialization
+++ b/cpp/.traces/channel-initialization
@@ -44,11 +44,11 @@ parse/0:   ingredient: {name: "first-free", value: 0, type: 0, properties: ["fir
 parse/0:   product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]}
 name/0: element first-full of type channel is at offset 0
 name/0: element first-free of type channel is at offset 1
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: init-channel ...
 after-brace/0: get ...
 after-brace/0: get ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]}
 run/0: instruction init-channel/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -115,7 +115,7 @@ run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "addr
 mem/0: location 1002 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
@@ -125,7 +125,7 @@ run/0: its type is 1
 mem/0: location 1031 is 0
 run/0: product 0 is 0
 mem/0: storing 0 in location 2
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
diff --git a/cpp/.traces/channel-new-empty-not-full b/cpp/.traces/channel-new-empty-not-full
index b852e4f6..41c382f6 100644
--- a/cpp/.traces/channel-new-empty-not-full
+++ b/cpp/.traces/channel-new-empty-not-full
@@ -40,11 +40,11 @@ parse/0:   product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]}
 parse/0: instruction: channel-full?
 parse/0:   ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]}
 parse/0:   product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: init-channel ...
 after-brace/0: channel-empty? ...
 after-brace/0: channel-full? ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]}
 run/0: instruction init-channel/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -111,7 +111,7 @@ run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "addr
 mem/0: location 1002 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction channel-empty?/0
@@ -155,7 +155,7 @@ run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean
 mem/0: location 1044 is 1
 run/0: result 0 is 1
 mem/0: storing 1 in location 2
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction channel-full?/0
diff --git a/cpp/.traces/channel-read-increments-full b/cpp/.traces/channel-read-increments-full
index 37b0d3d9..e3000312 100644
--- a/cpp/.traces/channel-read-increments-full
+++ b/cpp/.traces/channel-read-increments-full
@@ -60,13 +60,13 @@ parse/0:   ingredient: {name: "first-free", value: 0, type: 0, properties: ["fir
 parse/0:   product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]}
 name/0: element first-full of type channel is at offset 0
 name/0: element first-free of type channel is at offset 1
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: init-channel ...
 after-brace/0: write ...
 after-brace/0: read ...
 after-brace/0: get ...
 after-brace/0: get ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]}
 run/0: instruction init-channel/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -133,7 +133,7 @@ run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "addr
 mem/0: location 1002 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]}
 mem/0: location 1 is 1031
 run/0: instruction write/0
@@ -316,7 +316,7 @@ run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address"
 mem/0: location 1041 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction read/0
@@ -442,7 +442,7 @@ mem/0: location 1134 is 1031
 run/0: result 0 is 34
 run/0: result 1 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
@@ -452,7 +452,7 @@ run/0: its type is 1
 mem/0: location 1031 is 1
 run/0: product 0 is 1
 mem/0: storing 1 in location 2
-run/0: instruction tmp0/4
+run/0: instruction run1001/4
 run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
diff --git a/cpp/.traces/channel-read-not-full b/cpp/.traces/channel-read-not-full
index 07b46cdd..a2ccb3f6 100644
--- a/cpp/.traces/channel-read-not-full
+++ b/cpp/.traces/channel-read-not-full
@@ -56,13 +56,13 @@ parse/0:   product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]}
 parse/0: instruction: channel-full?
 parse/0:   ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]}
 parse/0:   product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: init-channel ...
 after-brace/0: write ...
 after-brace/0: read ...
 after-brace/0: channel-empty? ...
 after-brace/0: channel-full? ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "1", value: 1, type: 0, properties: ["1": "literal", "capacity": ]}
 run/0: instruction init-channel/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -129,7 +129,7 @@ run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "addr
 mem/0: location 1002 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]}
 mem/0: location 1 is 1031
 run/0: instruction write/0
@@ -312,7 +312,7 @@ run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address"
 mem/0: location 1039 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction read/0
@@ -438,7 +438,7 @@ mem/0: location 1132 is 1031
 run/0: result 0 is 34
 run/0: result 1 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction channel-empty?/0
@@ -482,7 +482,7 @@ run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean
 mem/0: location 1197 is 1
 run/0: result 0 is 1
 mem/0: storing 1 in location 2
-run/0: instruction tmp0/4
+run/0: instruction run1001/4
 run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction channel-full?/0
diff --git a/cpp/.traces/channel-wrap b/cpp/.traces/channel-wrap
index 9595e80e..d785fc42 100644
--- a/cpp/.traces/channel-wrap
+++ b/cpp/.traces/channel-wrap
@@ -118,7 +118,7 @@ name/0: element first-free of type channel is at offset 1
 name/0: element first-free of type channel is at offset 1
 name/0: element first-free of type channel is at offset 1
 name/0: element first-full of type channel is at offset 0
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: init-channel ...
 after-brace/0: write ...
 after-brace/0: read ...
@@ -128,7 +128,7 @@ after-brace/0: write ...
 after-brace/0: get ...
 after-brace/0: read ...
 after-brace/0: get ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "1", value: 1, type: 0, properties: ["1": "literal", "capacity": ]}
 run/0: instruction init-channel/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -195,7 +195,7 @@ run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "addr
 mem/0: location 1002 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]}
 mem/0: location 1 is 1031
 run/0: instruction write/0
@@ -378,7 +378,7 @@ run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address"
 mem/0: location 1039 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction read/0
@@ -504,7 +504,7 @@ mem/0: location 1132 is 1031
 run/0: result 0 is 34
 run/0: result 1 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
@@ -514,7 +514,7 @@ run/0: its type is 1
 mem/0: location 1032 is 1
 run/0: product 0 is 1
 mem/0: storing 1 in location 2
-run/0: instruction tmp0/4
+run/0: instruction run1001/4
 run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
@@ -524,7 +524,7 @@ run/0: its type is 1
 mem/0: location 1032 is 1
 run/0: product 0 is 1
 mem/0: storing 1 in location 3
-run/0: instruction tmp0/5
+run/0: instruction run1001/5
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]}
 mem/0: location 1 is 1031
 run/0: instruction write/0
@@ -714,7 +714,7 @@ run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address"
 mem/0: location 1194 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/6
+run/0: instruction run1001/6
 run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
@@ -724,7 +724,7 @@ run/0: its type is 1
 mem/0: location 1032 is 0
 run/0: product 0 is 0
 mem/0: storing 0 in location 4
-run/0: instruction tmp0/7
+run/0: instruction run1001/7
 run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction read/0
@@ -854,7 +854,7 @@ mem/0: location 1287 is 1031
 run/0: result 0 is 34
 run/0: result 1 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/8
+run/0: instruction run1001/8
 run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
diff --git a/cpp/.traces/channel-write-full b/cpp/.traces/channel-write-full
index 130657a2..e1cdb2c6 100644
--- a/cpp/.traces/channel-write-full
+++ b/cpp/.traces/channel-write-full
@@ -48,12 +48,12 @@ parse/0:   product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]}
 parse/0: instruction: channel-full?
 parse/0:   ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]}
 parse/0:   product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: init-channel ...
 after-brace/0: write ...
 after-brace/0: channel-empty? ...
 after-brace/0: channel-full? ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "1", value: 1, type: 0, properties: ["1": "literal", "capacity": ]}
 run/0: instruction init-channel/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -120,7 +120,7 @@ run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "addr
 mem/0: location 1002 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]}
 mem/0: location 1 is 1031
 run/0: instruction write/0
@@ -303,7 +303,7 @@ run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address"
 mem/0: location 1039 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction channel-empty?/0
@@ -347,7 +347,7 @@ run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean
 mem/0: location 1135 is 0
 run/0: result 0 is 0
 mem/0: storing 0 in location 2
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction channel-full?/0
diff --git a/cpp/.traces/channel-write-increments-free b/cpp/.traces/channel-write-increments-free
index c1a8362d..9f05e40a 100644
--- a/cpp/.traces/channel-write-increments-free
+++ b/cpp/.traces/channel-write-increments-free
@@ -52,12 +52,12 @@ parse/0:   ingredient: {name: "first-free", value: 0, type: 0, properties: ["fir
 parse/0:   product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]}
 name/0: element first-full of type channel is at offset 0
 name/0: element first-free of type channel is at offset 1
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: init-channel ...
 after-brace/0: write ...
 after-brace/0: get ...
 after-brace/0: get ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]}
 run/0: instruction init-channel/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -124,7 +124,7 @@ run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "addr
 mem/0: location 1002 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]}
 mem/0: location 1 is 1031
 run/0: instruction write/0
@@ -307,7 +307,7 @@ run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address"
 mem/0: location 1041 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
@@ -317,7 +317,7 @@ run/0: its type is 1
 mem/0: location 1031 is 0
 run/0: product 0 is 0
 mem/0: storing 0 in location 2
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
diff --git a/cpp/.traces/channel-write-not-empty b/cpp/.traces/channel-write-not-empty
index 997ad716..cdc54864 100644
--- a/cpp/.traces/channel-write-not-empty
+++ b/cpp/.traces/channel-write-not-empty
@@ -48,12 +48,12 @@ parse/0:   product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]}
 parse/0: instruction: channel-full?
 parse/0:   ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]}
 parse/0:   product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: init-channel ...
 after-brace/0: write ...
 after-brace/0: channel-empty? ...
 after-brace/0: channel-full? ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]}
 run/0: instruction init-channel/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -120,7 +120,7 @@ run/0: reply {name: "result", value: 1, type: 2-10, properties: ["result": "addr
 mem/0: location 1002 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]}
 mem/0: location 1 is 1031
 run/0: instruction write/0
@@ -303,7 +303,7 @@ run/0: reply {name: "chan", value: 1, type: 2-10, properties: ["chan": "address"
 mem/0: location 1041 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction channel-empty?/0
@@ -347,7 +347,7 @@ run/0: reply {name: "result", value: 4, type: 3, properties: ["result": "boolean
 mem/0: location 1137 is 0
 run/0: result 0 is 0
 mem/0: storing 0 in location 2
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full? {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}
 mem/0: location 1 is 1031
 run/0: instruction channel-full?/0
diff --git a/cpp/.traces/check_string_in_memory b/cpp/.traces/check_string_in_memory
index 895976e2..277d3396 100644
--- a/cpp/.traces/check_string_in_memory
+++ b/cpp/.traces/check_string_in_memory
@@ -45,24 +45,24 @@ parse/0:   product: {name: "3", value: 0, type: 4, properties: ["3": "character"
 parse/0: instruction: copy
 parse/0:   ingredient: {name: "99", value: 0, type: 0, properties: ["99": "literal"]}
 parse/0:   product: {name: "4", value: 0, type: 4, properties: ["4": "character"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: copy ...
 after-brace/0: copy ...
 after-brace/0: copy ...
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "3", value: 3, type: 0, properties: ["3": "literal"]}
 run/0: ingredient 0 is 3
 mem/0: storing 3 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "2", value: 2, type: 4, properties: ["2": "character"]} <- copy {name: "97", value: 97, type: 0, properties: ["97": "literal"]}
 run/0: ingredient 0 is 97
 mem/0: storing 97 in location 2
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "3", value: 3, type: 4, properties: ["3": "character"]} <- copy {name: "98", value: 98, type: 0, properties: ["98": "literal"]}
 run/0: ingredient 0 is 98
 mem/0: storing 98 in location 3
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "4", value: 4, type: 4, properties: ["4": "character"]} <- copy {name: "99", value: 99, type: 0, properties: ["99": "literal"]}
 run/0: ingredient 0 is 99
 mem/0: storing 99 in location 4
diff --git a/cpp/.traces/check_trace b/cpp/.traces/check_trace
index fd611d77..c0e19982 100644
--- a/cpp/.traces/check_trace
+++ b/cpp/.traces/check_trace
@@ -25,9 +25,9 @@ parse/0: instruction: add
 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: "1", value: 0, type: 1, properties: ["1": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: add ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]}
 run/0: ingredient 0 is 2
 run/0: ingredient 1 is 2
diff --git a/cpp/.traces/check_trace_instruction b/cpp/.traces/check_trace_instruction
index 5849ff41..08417a62 100644
--- a/cpp/.traces/check_trace_instruction
+++ b/cpp/.traces/check_trace_instruction
@@ -24,9 +24,9 @@ run/0: run {name: "
 parse/0: instruction: trace
 parse/0:   ingredient: {name: "foo", value: 0, type: 0, properties: ["foo": "literal-string"]}
 parse/0:   ingredient: {name: "aaa", value: 0, type: 0, properties: ["aaa": "literal-string"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: trace ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: trace {name: "foo", value: 0, type: 0, properties: ["foo": "literal-string"]}, {name: "aaa", value: 0, type: 0, properties: ["aaa": "literal-string"]}
 foo/0: aaa
 run/0: instruction check_trace_instruction/1
diff --git a/cpp/.traces/check_trace_negative b/cpp/.traces/check_trace_negative
index c9289d57..2d6c6dd5 100644
--- a/cpp/.traces/check_trace_negative
+++ b/cpp/.traces/check_trace_negative
@@ -25,9 +25,9 @@ parse/0: instruction: add
 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: "1", value: 0, type: 1, properties: ["1": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: add ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]}
 run/0: ingredient 0 is 2
 run/0: ingredient 1 is 2
diff --git a/cpp/.traces/clear-line-erases-printed-characters b/cpp/.traces/clear-line-erases-printed-characters
index 9aae7db2..76e0c603 100644
--- a/cpp/.traces/clear-line-erases-printed-characters
+++ b/cpp/.traces/clear-line-erases-printed-characters
@@ -93,14 +93,14 @@ parse/0: instruction: copy
 parse/0:   ingredient: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]}
 parse/0:   product: {name: "3", value: 0, type: 5-4, properties: ["3": "array":"character"]}
 name/0: element data of type screen is at offset 4
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: init-fake-screen ...
 after-brace/0: print-character ...
 after-brace/0: move-cursor ...
 after-brace/0: clear-line ...
 after-brace/0: get ...
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- init-fake-screen {name: "3", value: 3, type: 0, properties: ["3": "literal", "width": ]}, {name: "2", value: 2, type: 0, properties: ["2": "literal", "height": ]}
 run/0: instruction init-fake-screen/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal", "capacity": ]}
@@ -472,7 +472,7 @@ run/0: reply {name: "result", value: 1, type: 2-11, properties: ["result": "addr
 mem/0: location 1002 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- print-character {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]}
 mem/0: location 1 is 1031
 run/0: instruction print-character/0
@@ -590,7 +590,7 @@ run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"scre
 mem/0: location 1076 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- move-cursor {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal", "row": ]}, {name: "0", value: 0, type: 0, properties: ["0": "literal", "column": ]}
 mem/0: location 1 is 1031
 run/0: instruction move-cursor/0
@@ -647,7 +647,7 @@ run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"scre
 mem/0: location 1107 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- clear-line {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}
 mem/0: location 1 is 1031
 run/0: instruction clear-line/0
@@ -1115,7 +1115,7 @@ run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"scre
 mem/0: location 1138 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/4
+run/0: instruction run1001/4
 run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character"]} <- get {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
@@ -1125,7 +1125,7 @@ run/0: its type is 2
 mem/0: location 1035 is 1036
 run/0: product 0 is 1036
 mem/0: storing 1036 in location 2
-run/0: instruction tmp0/5
+run/0: instruction run1001/5
 run/0: {name: "3", value: 3, type: 5-4, properties: ["3": "array":"character"]} <- copy {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]}
 run/0: ingredient 0 is 2
 mem/0: location 2 is 1036
diff --git a/cpp/.traces/first_scenario_in_mu b/cpp/.traces/first_scenario_in_mu
index 090585b8..c02a0dff 100644
--- a/cpp/.traces/first_scenario_in_mu
+++ b/cpp/.traces/first_scenario_in_mu
@@ -25,9 +25,9 @@ parse/0: instruction: add
 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: "1", value: 0, type: 1, properties: ["1": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: add ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]}
 run/0: ingredient 0 is 2
 run/0: ingredient 1 is 2
diff --git a/cpp/.traces/integer-to-decimal-digit-negative b/cpp/.traces/integer-to-decimal-digit-negative
index fac1a708..890696f4 100644
--- a/cpp/.traces/integer-to-decimal-digit-negative
+++ b/cpp/.traces/integer-to-decimal-digit-negative
@@ -35,10 +35,10 @@ parse/0:   product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "addres
 parse/0: instruction: copy
 parse/0:   ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]}
 parse/0:   product: {name: "2", value: 0, type: 5-4, properties: ["2": "array":"character", "raw": ]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: integer-to-decimal-string ...
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- integer-to-decimal-string {name: "-1", value: -1, type: 0, properties: ["-1": "literal"]}
 run/0: instruction integer-to-decimal-string/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -586,7 +586,7 @@ run/0: reply {name: "result", value: 2, type: 2-5-4, properties: ["result": "add
 mem/0: location 1003 is 1219
 run/0: result 0 is 1219
 mem/0: storing 1219 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1219
diff --git a/cpp/.traces/integer-to-decimal-digit-positive b/cpp/.traces/integer-to-decimal-digit-positive
index 69bbc01c..d42b63e6 100644
--- a/cpp/.traces/integer-to-decimal-digit-positive
+++ b/cpp/.traces/integer-to-decimal-digit-positive
@@ -31,10 +31,10 @@ parse/0:   product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "addres
 parse/0: instruction: copy
 parse/0:   ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]}
 parse/0:   product: {name: "2", value: 0, type: 5-4, properties: ["2": "array":"character", "raw": ]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: integer-to-decimal-string ...
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- integer-to-decimal-string {name: "234", value: 234, type: 0, properties: ["234": "literal"]}
 run/0: instruction integer-to-decimal-string/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -813,7 +813,7 @@ run/0: reply {name: "result", value: 2, type: 2-5-4, properties: ["result": "add
 mem/0: location 1003 is 1281
 run/0: result 0 is 1281
 mem/0: storing 1281 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1281
diff --git a/cpp/.traces/integer-to-decimal-digit-zero b/cpp/.traces/integer-to-decimal-digit-zero
index e4731f30..763b760e 100644
--- a/cpp/.traces/integer-to-decimal-digit-zero
+++ b/cpp/.traces/integer-to-decimal-digit-zero
@@ -31,10 +31,10 @@ parse/0:   product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "addres
 parse/0: instruction: copy
 parse/0:   ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]}
 parse/0:   product: {name: "2", value: 0, type: 5-4, properties: ["2": "array":"character", "raw": ]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: integer-to-decimal-string ...
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- integer-to-decimal-string {name: "0", value: 0, type: 0, properties: ["0": "literal"]}
 run/0: instruction integer-to-decimal-string/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
@@ -57,7 +57,7 @@ run/0: reply {name: "result", value: 2, type: 2-5-4, properties: ["result": "add
 mem/0: location 1003 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
diff --git a/cpp/.traces/interpolate-at-end b/cpp/.traces/interpolate-at-end
index 061a4d3f..de8c30dc 100644
--- a/cpp/.traces/interpolate-at-end
+++ b/cpp/.traces/interpolate-at-end
@@ -48,18 +48,18 @@ parse/0:   ingredient: {name: "3", value: 0, type: 2-5-4, properties: ["3": "add
 parse/0:   product: {name: "4", value: 0, type: 5-4, properties: ["4": "array":"character", "raw": ]}
 new/0: hello, _ -> 0
 new/0: abc -> 0
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: interpolate ...
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new {name: "hello, _", value: 0, type: 0, properties: ["hello, _": "literal-string"]}
 mem/0: storing 1000 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]}
 mem/0: storing 1009 in location 2
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- interpolate {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]}
 mem/0: location 1 is 1000
 mem/0: location 2 is 1009
@@ -899,7 +899,7 @@ run/0: reply {name: "result", value: 7, type: 2-5-4, properties: ["result": "add
 mem/0: location 1021 is 1074
 run/0: result 0 is 1074
 mem/0: storing 1074 in location 3
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]}
 run/0: ingredient 0 is 3
 mem/0: location 3 is 1074
diff --git a/cpp/.traces/interpolate-at-start b/cpp/.traces/interpolate-at-start
index fb228fb8..49cefee9 100644
--- a/cpp/.traces/interpolate-at-start
+++ b/cpp/.traces/interpolate-at-start
@@ -50,18 +50,18 @@ parse/0:   ingredient: {name: "3", value: 0, type: 2-5-4, properties: ["3": "add
 parse/0:   product: {name: "4", value: 0, type: 5-4, properties: ["4": "array":"character", "raw": ]}
 new/0: _, hello! -> 0
 new/0: abc -> 0
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: interpolate ...
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new {name: "_, hello!", value: 0, type: 0, properties: ["_, hello!": "literal-string"]}
 mem/0: storing 1000 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]}
 mem/0: storing 1010 in location 2
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- interpolate {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]}
 mem/0: location 1 is 1000
 mem/0: location 2 is 1010
@@ -874,7 +874,7 @@ run/0: reply {name: "result", value: 7, type: 2-5-4, properties: ["result": "add
 mem/0: location 1022 is 1075
 run/0: result 0 is 1075
 mem/0: storing 1075 in location 3
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]}
 run/0: ingredient 0 is 3
 mem/0: location 3 is 1075
diff --git a/cpp/.traces/interpolate-works b/cpp/.traces/interpolate-works
index 265b48b3..53336da5 100644
--- a/cpp/.traces/interpolate-works
+++ b/cpp/.traces/interpolate-works
@@ -48,18 +48,18 @@ parse/0:   ingredient: {name: "3", value: 0, type: 2-5-4, properties: ["3": "add
 parse/0:   product: {name: "4", value: 0, type: 5-4, properties: ["4": "array":"character", "raw": ]}
 new/0: abc _ -> 0
 new/0: def -> 0
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: interpolate ...
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new {name: "abc _", value: 0, type: 0, properties: ["abc _": "literal-string"]}
 mem/0: storing 1000 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new {name: "def", value: 0, type: 0, properties: ["def": "literal-string"]}
 mem/0: storing 1006 in location 2
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- interpolate {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]}
 mem/0: location 1 is 1000
 mem/0: location 2 is 1006
@@ -692,7 +692,7 @@ run/0: reply {name: "result", value: 7, type: 2-5-4, properties: ["result": "add
 mem/0: location 1018 is 1071
 run/0: result 0 is 1071
 mem/0: storing 1071 in location 3
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]}
 run/0: ingredient 0 is 3
 mem/0: location 3 is 1071
diff --git a/cpp/.traces/print-character-at-top-left b/cpp/.traces/print-character-at-top-left
index f8ae92ce..3bdff75f 100644
--- a/cpp/.traces/print-character-at-top-left
+++ b/cpp/.traces/print-character-at-top-left
@@ -57,12 +57,12 @@ parse/0: instruction: copy
 parse/0:   ingredient: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]}
 parse/0:   product: {name: "3", value: 0, type: 5-4, properties: ["3": "array":"character"]}
 name/0: element data of type screen is at offset 4
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: init-fake-screen ...
 after-brace/0: print-character ...
 after-brace/0: get ...
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- init-fake-screen {name: "3", value: 3, type: 0, properties: ["3": "literal", "width": ]}, {name: "2", value: 2, type: 0, properties: ["2": "literal", "height": ]}
 run/0: instruction init-fake-screen/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal", "capacity": ]}
@@ -434,7 +434,7 @@ run/0: reply {name: "result", value: 1, type: 2-11, properties: ["result": "addr
 mem/0: location 1002 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- print-character {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]}
 mem/0: location 1 is 1031
 run/0: instruction print-character/0
@@ -552,7 +552,7 @@ run/0: reply {name: "x", value: 1, type: 2-11, properties: ["x": "address":"scre
 mem/0: location 1076 is 1031
 run/0: result 0 is 1031
 mem/0: storing 1031 in location 1
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character"]} <- get {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]}
 run/0: ingredient 0 is 1
 mem/0: location 1 is 1031
@@ -562,7 +562,7 @@ run/0: its type is 2
 mem/0: location 1035 is 1036
 run/0: product 0 is 1036
 mem/0: storing 1036 in location 2
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "3", value: 3, type: 5-4, properties: ["3": "array":"character"]} <- copy {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]}
 run/0: ingredient 0 is 2
 mem/0: location 2 is 1036
diff --git a/cpp/.traces/run b/cpp/.traces/run
index 6d7b4d41..0fd2d418 100644
--- a/cpp/.traces/run
+++ b/cpp/.traces/run
@@ -17,9 +17,9 @@ run/0: run {name: "
 parse/0: instruction: copy
 parse/0:   ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]}
 parse/0:   product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]}
 run/0: ingredient 0 is 13
 mem/0: storing 13 in location 1
diff --git a/cpp/.traces/run_multiple b/cpp/.traces/run_multiple
index 9da9ba0a..a34de64b 100644
--- a/cpp/.traces/run_multiple
+++ b/cpp/.traces/run_multiple
@@ -24,9 +24,9 @@ run/0: run {name: "
 parse/0: instruction: copy
 parse/0:   ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]}
 parse/0:   product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]}
 run/0: ingredient 0 is 13
 mem/0: storing 13 in location 1
@@ -39,9 +39,9 @@ run/0: run {name: "
 parse/0: instruction: copy
 parse/0:   ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]}
 parse/0:   product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]}
-after-brace/0: recipe tmp1
+after-brace/0: recipe run1002
 after-brace/0: copy ...
-run/0: instruction tmp1/0
+run/0: instruction run1002/0
 run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]}
 run/0: ingredient 0 is 13
 mem/0: storing 13 in location 2
diff --git a/cpp/.traces/scenario_block b/cpp/.traces/scenario_block
index 9f5870a2..75f23e5b 100644
--- a/cpp/.traces/scenario_block
+++ b/cpp/.traces/scenario_block
@@ -24,9 +24,9 @@ run/0: run {name: "
 parse/0: instruction: copy
 parse/0:   ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]}
 parse/0:   product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]}
 run/0: ingredient 0 is 13
 mem/0: storing 13 in location 1
diff --git a/cpp/.traces/scenario_check_memory_and_trace b/cpp/.traces/scenario_check_memory_and_trace
index 7803bb73..683f827e 100644
--- a/cpp/.traces/scenario_check_memory_and_trace
+++ b/cpp/.traces/scenario_check_memory_and_trace
@@ -45,14 +45,14 @@ parse/0:   product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]}
 parse/0: instruction: trace
 parse/0:   ingredient: {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}
 parse/0:   ingredient: {name: "a b c", value: 0, type: 0, properties: ["a b c": "literal-string"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: copy ...
 after-brace/0: trace ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]}
 run/0: ingredient 0 is 13
 mem/0: storing 13 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: trace {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "a b c", value: 0, type: 0, properties: ["a b c": "literal-string"]}
 a/0: a b c
 run/0: instruction foo/1
diff --git a/cpp/.traces/scenario_multiple_blocks b/cpp/.traces/scenario_multiple_blocks
index c5f8946a..12434407 100644
--- a/cpp/.traces/scenario_multiple_blocks
+++ b/cpp/.traces/scenario_multiple_blocks
@@ -40,9 +40,9 @@ run/0: run {name: "
 parse/0: instruction: copy
 parse/0:   ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]}
 parse/0:   product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]}
 run/0: ingredient 0 is 13
 mem/0: storing 13 in location 1
@@ -62,9 +62,9 @@ run/0: run {name: "
 parse/0: instruction: copy
 parse/0:   ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]}
 parse/0:   product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]}
-after-brace/0: recipe tmp1
+after-brace/0: recipe run1002
 after-brace/0: copy ...
-run/0: instruction tmp1/0
+run/0: instruction run1002/0
 run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy {name: "13", value: 13, type: 0, properties: ["13": "literal"]}
 run/0: ingredient 0 is 13
 mem/0: storing 13 in location 2
diff --git a/cpp/.traces/scenario_with_comment_in_mu b/cpp/.traces/scenario_with_comment_in_mu
index 29e72e98..f5d44965 100644
--- a/cpp/.traces/scenario_with_comment_in_mu
+++ b/cpp/.traces/scenario_with_comment_in_mu
@@ -29,9 +29,9 @@ parse/0: instruction: add
 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: "1", value: 0, type: 1, properties: ["1": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: add ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]}
 run/0: ingredient 0 is 2
 run/0: ingredient 1 is 2
diff --git a/cpp/.traces/scenario_with_multiple_comments_in_mu b/cpp/.traces/scenario_with_multiple_comments_in_mu
index 941ad837..e46f5b36 100644
--- a/cpp/.traces/scenario_with_multiple_comments_in_mu
+++ b/cpp/.traces/scenario_with_multiple_comments_in_mu
@@ -33,9 +33,9 @@ parse/0: instruction: add
 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: "1", value: 0, type: 1, properties: ["1": "integer"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: add ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]}
 run/0: ingredient 0 is 2
 run/0: ingredient 1 is 2
diff --git a/cpp/.traces/string-append-1 b/cpp/.traces/string-append-1
index b05fbe2c..85ebe32c 100644
--- a/cpp/.traces/string-append-1
+++ b/cpp/.traces/string-append-1
@@ -48,18 +48,18 @@ parse/0:   ingredient: {name: "3", value: 0, type: 2-5-4, properties: ["3": "add
 parse/0:   product: {name: "4", value: 0, type: 5-4, properties: ["4": "array":"character", "raw": ]}
 new/0: hello, -> 0
 new/0:  world! -> 0
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: string-append ...
 after-brace/0: copy ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new {name: "hello,", value: 0, type: 0, properties: ["hello,": "literal-string"]}
 mem/0: storing 1000 in location 1
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new {name: " world!", value: 0, type: 0, properties: [" world!": "literal-string"]}
 mem/0: storing 1007 in location 2
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- string-append {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]}
 mem/0: location 1 is 1000
 mem/0: location 2 is 1007
@@ -883,7 +883,7 @@ run/0: reply {name: "result", value: 6, type: 2-5-4, properties: ["result": "add
 mem/0: location 1022 is 1046
 run/0: result 0 is 1046
 mem/0: storing 1046 in location 3
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]}
 run/0: ingredient 0 is 3
 mem/0: location 3 is 1046
diff --git a/cpp/.traces/string-equal-common-lengths-but-distinct b/cpp/.traces/string-equal-common-lengths-but-distinct
index 96313dbb..d68b3984 100644
--- a/cpp/.traces/string-equal-common-lengths-but-distinct
+++ b/cpp/.traces/string-equal-common-lengths-but-distinct
@@ -52,22 +52,22 @@ new/0: abc -> 0
 name/0: assign x 1
 new/0: abd -> 0
 name/0: assign y 2
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: string-equal ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
 mem/0: array size is 30
 mem/0: new alloc: 1000
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]}
 mem/0: storing 1031 in location 1002
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new {name: "abd", value: 0, type: 0, properties: ["abd": "literal-string"]}
 mem/0: storing 1035 in location 1003
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]}
 mem/0: location 1002 is 1031
 mem/0: location 1003 is 1035
diff --git a/cpp/.traces/string-equal-distinct-lengths b/cpp/.traces/string-equal-distinct-lengths
index 87501fe9..510c4252 100644
--- a/cpp/.traces/string-equal-distinct-lengths
+++ b/cpp/.traces/string-equal-distinct-lengths
@@ -66,22 +66,22 @@ new/0: abc -> 0
 name/0: assign x 1
 new/0: abcd -> 0
 name/0: assign y 2
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: string-equal ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
 mem/0: array size is 30
 mem/0: new alloc: 1000
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]}
 mem/0: storing 1031 in location 1002
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]}
 mem/0: storing 1035 in location 1003
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]}
 mem/0: location 1002 is 1031
 mem/0: location 1003 is 1035
diff --git a/cpp/.traces/string-equal-identical b/cpp/.traces/string-equal-identical
index 80de07e8..1ece4568 100644
--- a/cpp/.traces/string-equal-identical
+++ b/cpp/.traces/string-equal-identical
@@ -52,22 +52,22 @@ new/0: abc -> 0
 name/0: assign x 1
 new/0: abc -> 0
 name/0: assign y 2
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: string-equal ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
 mem/0: array size is 30
 mem/0: new alloc: 1000
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]}
 mem/0: storing 1031 in location 1002
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]}
 mem/0: storing 1035 in location 1003
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]}
 mem/0: location 1002 is 1031
 mem/0: location 1003 is 1035
diff --git a/cpp/.traces/string-equal-reflexive b/cpp/.traces/string-equal-reflexive
index efb93b6a..2c525b68 100644
--- a/cpp/.traces/string-equal-reflexive
+++ b/cpp/.traces/string-equal-reflexive
@@ -43,18 +43,18 @@ parse/0:   product: {name: "3", value: 0, type: 3, properties: ["3": "boolean",
 new/0: location -> 1
 new/0: abc -> 0
 name/0: assign x 1
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: string-equal ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
 mem/0: array size is 30
 mem/0: new alloc: 1000
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]}
 mem/0: storing 1031 in location 1002
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}
 mem/0: location 1002 is 1031
 mem/0: location 1002 is 1031
diff --git a/cpp/.traces/string-equal-with-empty b/cpp/.traces/string-equal-with-empty
index 6d867557..fa1077ee 100644
--- a/cpp/.traces/string-equal-with-empty
+++ b/cpp/.traces/string-equal-with-empty
@@ -52,22 +52,22 @@ new/0:  -> 0
 name/0: assign x 1
 new/0: abcd -> 0
 name/0: assign y 2
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: new ...
 after-brace/0: string-equal ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]}
 mem/0: array size is 30
 mem/0: new alloc: 1000
-run/0: instruction tmp0/1
+run/0: instruction run1001/1
 run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new {name: "", value: 0, type: 0, properties: ["": "literal-string"]}
 mem/0: storing 1031 in location 1002
-run/0: instruction tmp0/2
+run/0: instruction run1001/2
 run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]}
 mem/0: storing 1032 in location 1003
-run/0: instruction tmp0/3
+run/0: instruction run1001/3
 run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]}
 mem/0: location 1002 is 1031
 mem/0: location 1003 is 1032
diff --git a/cpp/.traces/trace_check_passes_silently b/cpp/.traces/trace_check_passes_silently
index 3fd17d2f..c34c73d2 100644
--- a/cpp/.traces/trace_check_passes_silently
+++ b/cpp/.traces/trace_check_passes_silently
@@ -24,9 +24,9 @@ run/0: run {name: "
 parse/0: instruction: trace
 parse/0:   ingredient: {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}
 parse/0:   ingredient: {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: trace ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: trace {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]}
 a/0: b
 run/0: instruction main/1
diff --git a/cpp/.traces/trace_check_warns_on_failure_in_later_line b/cpp/.traces/trace_check_warns_on_failure_in_later_line
index 066765be..7c8c7088 100644
--- a/cpp/.traces/trace_check_warns_on_failure_in_later_line
+++ b/cpp/.traces/trace_check_warns_on_failure_in_later_line
@@ -26,9 +26,9 @@ run/0: run {name: "
 parse/0: instruction: trace
 parse/0:   ingredient: {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}
 parse/0:   ingredient: {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: trace ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: trace {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]}
 a/0: b
 run/0: instruction main/1
diff --git a/cpp/.traces/trace_negative_check_warns_on_any_unexpected_line b/cpp/.traces/trace_negative_check_warns_on_any_unexpected_line
index 913028a6..95950862 100644
--- a/cpp/.traces/trace_negative_check_warns_on_any_unexpected_line
+++ b/cpp/.traces/trace_negative_check_warns_on_any_unexpected_line
@@ -26,9 +26,9 @@ run/0: run {name: "
 parse/0: instruction: trace
 parse/0:   ingredient: {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}
 parse/0:   ingredient: {name: "d", value: 0, type: 0, properties: ["d": "literal-string"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: trace ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: trace {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "d", value: 0, type: 0, properties: ["d": "literal-string"]}
 a/0: d
 run/0: instruction main/1
diff --git a/cpp/.traces/trace_negative_check_warns_on_failure b/cpp/.traces/trace_negative_check_warns_on_failure
index 42edb11a..3e8873f8 100644
--- a/cpp/.traces/trace_negative_check_warns_on_failure
+++ b/cpp/.traces/trace_negative_check_warns_on_failure
@@ -24,9 +24,9 @@ run/0: run {name: "
 parse/0: instruction: trace
 parse/0:   ingredient: {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}
 parse/0:   ingredient: {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]}
-after-brace/0: recipe tmp0
+after-brace/0: recipe run1001
 after-brace/0: trace ...
-run/0: instruction tmp0/0
+run/0: instruction run1001/0
 run/0: trace {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]}
 a/0: b
 run/0: instruction main/1
diff --git a/cpp/049scenario_helpers.cc b/cpp/049scenario_helpers.cc
index d5b755f2..c4a5cb54 100644
--- a/cpp/049scenario_helpers.cc
+++ b/cpp/049scenario_helpers.cc
@@ -12,11 +12,6 @@ recipe main [
 ]
 +mem: storing 13 in location 1
 
-:(before "End Globals")
-size_t Num_temporary_recipes = 0;
-:(before "End Setup")
-Num_temporary_recipes = 0;
-
 :(before "End Primitive Recipe Declarations")
 RUN,
 :(before "End Primitive Recipe Numbers")
@@ -25,7 +20,7 @@ Recipe_number["run"] = RUN;
 case RUN: {
 //?   cout << "recipe " << current_instruction().ingredients[0].name << '\n'; //? 1
   ostringstream tmp;
-  tmp << "recipe tmp" << Num_temporary_recipes++ << " [ " << current_instruction().ingredients[0].name << " ]";
+  tmp << "recipe run" << Next_recipe_number << " [ " << current_instruction().ingredients[0].name << " ]";
 //?   Show_rest_of_stream = true; //? 1
   vector<recipe_number> tmp_recipe = load(tmp.str());
   transform_all();