Parcourir la source

Misc. improvements to raw/debug SemIR output (#6557)

- Distinguish attached vs. unattached constants.
- Add some missing value stores to the top-level output.
- Add missing fields to various Print methods.
Geoff Romer il y a 3 mois
Parent
commit
e78af4d745

+ 1 - 0
toolchain/base/canonical_value_store.h

@@ -62,6 +62,7 @@ class CanonicalValueStore {
     return values_.values();
   }
   auto size() const -> size_t { return values_.size(); }
+  auto enumerate() const -> auto { return values_.enumerate(); }
 
   // Collects memory usage of the values and deduplication set.
   auto CollectMemUsage(MemUsage& mem_usage, llvm::StringRef label) const

+ 13 - 0
toolchain/check/testdata/basics/raw_sem_ir/builtins.carbon

@@ -14,6 +14,7 @@
 // CHECK:STDOUT: ---
 // CHECK:STDOUT: filename:        builtins.carbon
 // CHECK:STDOUT: sem_ir:
+// CHECK:STDOUT:   names:           {}
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     'import_ir(Cpp)':  {decl_id: inst<none>, is_export: false}
@@ -25,8 +26,12 @@
 // CHECK:STDOUT:   cpp_global_vars: {}
 // CHECK:STDOUT:   functions:       {}
 // CHECK:STDOUT:   classes:         {}
+// CHECK:STDOUT:   interfaces:      {}
+// CHECK:STDOUT:   associated_constants: {}
+// CHECK:STDOUT:   impls:           {}
 // CHECK:STDOUT:   generics:        {}
 // CHECK:STDOUT:   specifics:       {}
+// CHECK:STDOUT:   specific_interfaces: {}
 // CHECK:STDOUT:   struct_type_fields:
 // CHECK:STDOUT:     struct_type_fields_empty: {}
 // CHECK:STDOUT:   types:
@@ -38,6 +43,7 @@
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:   facet_types:     {}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     'inst(TypeType)':  {kind: TypeType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(AutoType)':  {kind: AutoType, type: type(TypeType)}
@@ -81,4 +87,11 @@
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block60000004:
 // CHECK:STDOUT:       0:               instF
+// CHECK:STDOUT:   value_stores:
+// CHECK:STDOUT:     shared_values:
+// CHECK:STDOUT:       ints:            {}
+// CHECK:STDOUT:       reals:           {}
+// CHECK:STDOUT:       floats:          {}
+// CHECK:STDOUT:       identifiers:     {}
+// CHECK:STDOUT:       strings:         {}
 // CHECK:STDOUT: ...

+ 28 - 0
toolchain/check/testdata/basics/raw_sem_ir/cpp_interop.carbon

@@ -35,6 +35,14 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT: ---
 // CHECK:STDOUT: filename:        import.carbon
 // CHECK:STDOUT: sem_ir:
+// CHECK:STDOUT:   names:
+// CHECK:STDOUT:     name0:           G
+// CHECK:STDOUT:     name1:           x
+// CHECK:STDOUT:     name2:           X
+// CHECK:STDOUT:     name3:           f
+// CHECK:STDOUT:     name4:           global
+// CHECK:STDOUT:     name5:           p
+// CHECK:STDOUT:     name6:           f__carbon_thunk
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     'import_ir(Cpp)':  {decl_id: inst<none>, is_export: false}
@@ -70,8 +78,12 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:     function60000004: {name: name6, parent_scope: name_scope60000001, call_param_patterns_id: inst_block60000014, call_params_id: inst_block60000015}
 // CHECK:STDOUT:   classes:
 // CHECK:STDOUT:     class60000000:   {name: name2, parent_scope: name_scope60000001, self_type_id: type(inst60000015), inheritance_kind: Base, is_dynamic: 0, scope_id: name_scope60000002, body_block_id: inst_block6000000B, adapt_id: inst<none>, base_id: inst<none>, complete_type_witness_id: inst60000025, vtable_decl_id: inst<none>}}
+// CHECK:STDOUT:   interfaces:      {}
+// CHECK:STDOUT:   associated_constants: {}
+// CHECK:STDOUT:   impls:           {}
 // CHECK:STDOUT:   generics:        {}
 // CHECK:STDOUT:   specifics:       {}
+// CHECK:STDOUT:   specific_interfaces: {}
 // CHECK:STDOUT:   struct_type_fields:
 // CHECK:STDOUT:     struct_type_fields_empty: {}
 // CHECK:STDOUT:     struct_type_fields60000001:
@@ -113,6 +125,7 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000013)}
 // CHECK:STDOUT:     'type(inst60000044)':
 // CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000013)}
+// CHECK:STDOUT:   facet_types:     {}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     'inst(TypeType)':  {kind: TypeType, type: type(TypeType)}
 // CHECK:STDOUT:     'inst(AutoType)':  {kind: AutoType, type: type(TypeType)}
@@ -367,4 +380,19 @@ fn G(x: Cpp.X) {
 // CHECK:STDOUT:       0:               instF
 // CHECK:STDOUT:       1:               inst60000010
 // CHECK:STDOUT:       2:               inst6000001D
+// CHECK:STDOUT:   value_stores:
+// CHECK:STDOUT:     shared_values:
+// CHECK:STDOUT:       ints:            {}
+// CHECK:STDOUT:       reals:           {}
+// CHECK:STDOUT:       floats:          {}
+// CHECK:STDOUT:       identifiers:
+// CHECK:STDOUT:         identifier0:     G
+// CHECK:STDOUT:         identifier1:     x
+// CHECK:STDOUT:         identifier2:     X
+// CHECK:STDOUT:         identifier3:     f
+// CHECK:STDOUT:         identifier4:     global
+// CHECK:STDOUT:         identifier5:     p
+// CHECK:STDOUT:         identifier6:     f__carbon_thunk
+// CHECK:STDOUT:       strings:
+// CHECK:STDOUT:         string0:         header.h
 // CHECK:STDOUT: ...

+ 32 - 0
toolchain/check/testdata/basics/raw_sem_ir/multifile.carbon

@@ -30,6 +30,8 @@ fn B() {
 // CHECK:STDOUT: ---
 // CHECK:STDOUT: filename:        a.carbon
 // CHECK:STDOUT: sem_ir:
+// CHECK:STDOUT:   names:
+// CHECK:STDOUT:     name0:           A
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     'import_ir(Cpp)':  {decl_id: inst<none>, is_export: false}
@@ -42,8 +44,12 @@ fn B() {
 // CHECK:STDOUT:   functions:
 // CHECK:STDOUT:     function60000000: {name: name0, parent_scope: name_scope0, call_param_patterns_id: inst_block_empty, call_params_id: inst_block_empty, body: [inst_block60000005]}
 // CHECK:STDOUT:   classes:         {}
+// CHECK:STDOUT:   interfaces:      {}
+// CHECK:STDOUT:   associated_constants: {}
+// CHECK:STDOUT:   impls:           {}
 // CHECK:STDOUT:   generics:        {}
 // CHECK:STDOUT:   specifics:       {}
+// CHECK:STDOUT:   specific_interfaces: {}
 // CHECK:STDOUT:   struct_type_fields:
 // CHECK:STDOUT:     struct_type_fields_empty: {}
 // CHECK:STDOUT:   types:
@@ -59,6 +65,7 @@ fn B() {
 // CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000012)}
 // CHECK:STDOUT:     'type(inst60000012)':
 // CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000012)}
+// CHECK:STDOUT:   facet_types:     {}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     instF:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
 // CHECK:STDOUT:     inst60000010:    {kind: FunctionDecl, arg0: function60000000, arg1: inst_block_empty, type: type(inst60000011)}
@@ -86,10 +93,21 @@ fn B() {
 // CHECK:STDOUT:     inst_block60000006:
 // CHECK:STDOUT:       0:               instF
 // CHECK:STDOUT:       1:               inst60000010
+// CHECK:STDOUT:   value_stores:
+// CHECK:STDOUT:     shared_values:
+// CHECK:STDOUT:       ints:            {}
+// CHECK:STDOUT:       reals:           {}
+// CHECK:STDOUT:       floats:          {}
+// CHECK:STDOUT:       identifiers:
+// CHECK:STDOUT:         identifier0:     A
+// CHECK:STDOUT:       strings:         {}
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: ---
 // CHECK:STDOUT: filename:        b.carbon
 // CHECK:STDOUT: sem_ir:
+// CHECK:STDOUT:   names:
+// CHECK:STDOUT:     name0:           B
+// CHECK:STDOUT:     name1:           A
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     'import_ir(Cpp)':  {decl_id: inst<none>, is_export: false}
@@ -108,8 +126,12 @@ fn B() {
 // CHECK:STDOUT:     function50000000: {name: name0, parent_scope: name_scope0, call_param_patterns_id: inst_block_empty, call_params_id: inst_block_empty, body: [inst_block50000005]}
 // CHECK:STDOUT:     function50000001: {name: name1, parent_scope: name_scope50000001, call_param_patterns_id: inst_block_empty}
 // CHECK:STDOUT:   classes:         {}
+// CHECK:STDOUT:   interfaces:      {}
+// CHECK:STDOUT:   associated_constants: {}
+// CHECK:STDOUT:   impls:           {}
 // CHECK:STDOUT:   generics:        {}
 // CHECK:STDOUT:   specifics:       {}
+// CHECK:STDOUT:   specific_interfaces: {}
 // CHECK:STDOUT:   struct_type_fields:
 // CHECK:STDOUT:     struct_type_fields_empty: {}
 // CHECK:STDOUT:   types:
@@ -127,6 +149,7 @@ fn B() {
 // CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000014)}
 // CHECK:STDOUT:     'type(inst(InstType))':
 // CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000014)}
+// CHECK:STDOUT:   facet_types:     {}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     instF:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
 // CHECK:STDOUT:     inst50000010:    {kind: ImportDecl, arg0: name1}
@@ -177,4 +200,13 @@ fn B() {
 // CHECK:STDOUT:       0:               instF
 // CHECK:STDOUT:       1:               inst50000010
 // CHECK:STDOUT:       2:               inst50000012
+// CHECK:STDOUT:   value_stores:
+// CHECK:STDOUT:     shared_values:
+// CHECK:STDOUT:       ints:            {}
+// CHECK:STDOUT:       reals:           {}
+// CHECK:STDOUT:       floats:          {}
+// CHECK:STDOUT:       identifiers:
+// CHECK:STDOUT:         identifier0:     B
+// CHECK:STDOUT:         identifier1:     A
+// CHECK:STDOUT:       strings:         {}
 // CHECK:STDOUT: ...

+ 32 - 0
toolchain/check/testdata/basics/raw_sem_ir/multifile_with_textual_ir.carbon

@@ -30,6 +30,8 @@ fn B() {
 // CHECK:STDOUT: ---
 // CHECK:STDOUT: filename:        a.carbon
 // CHECK:STDOUT: sem_ir:
+// CHECK:STDOUT:   names:
+// CHECK:STDOUT:     name0:           A
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     'import_ir(Cpp)':  {decl_id: inst<none>, is_export: false}
@@ -42,8 +44,12 @@ fn B() {
 // CHECK:STDOUT:   functions:
 // CHECK:STDOUT:     function60000000: {name: name0, parent_scope: name_scope0, call_param_patterns_id: inst_block_empty, call_params_id: inst_block_empty, body: [inst_block60000005]}
 // CHECK:STDOUT:   classes:         {}
+// CHECK:STDOUT:   interfaces:      {}
+// CHECK:STDOUT:   associated_constants: {}
+// CHECK:STDOUT:   impls:           {}
 // CHECK:STDOUT:   generics:        {}
 // CHECK:STDOUT:   specifics:       {}
+// CHECK:STDOUT:   specific_interfaces: {}
 // CHECK:STDOUT:   struct_type_fields:
 // CHECK:STDOUT:     struct_type_fields_empty: {}
 // CHECK:STDOUT:   types:
@@ -59,6 +65,7 @@ fn B() {
 // CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000012)}
 // CHECK:STDOUT:     'type(inst60000012)':
 // CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000012)}
+// CHECK:STDOUT:   facet_types:     {}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     instF:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
 // CHECK:STDOUT:     inst60000010:    {kind: FunctionDecl, arg0: function60000000, arg1: inst_block_empty, type: type(inst60000011)}
@@ -86,6 +93,14 @@ fn B() {
 // CHECK:STDOUT:     inst_block60000006:
 // CHECK:STDOUT:       0:               instF
 // CHECK:STDOUT:       1:               inst60000010
+// CHECK:STDOUT:   value_stores:
+// CHECK:STDOUT:     shared_values:
+// CHECK:STDOUT:       ints:            {}
+// CHECK:STDOUT:       reals:           {}
+// CHECK:STDOUT:       floats:          {}
+// CHECK:STDOUT:       identifiers:
+// CHECK:STDOUT:         identifier0:     A
+// CHECK:STDOUT:       strings:         {}
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: --- a.carbon
 // CHECK:STDOUT:
@@ -109,6 +124,9 @@ fn B() {
 // CHECK:STDOUT: ---
 // CHECK:STDOUT: filename:        b.carbon
 // CHECK:STDOUT: sem_ir:
+// CHECK:STDOUT:   names:
+// CHECK:STDOUT:     name0:           B
+// CHECK:STDOUT:     name1:           A
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     'import_ir(Cpp)':  {decl_id: inst<none>, is_export: false}
@@ -127,8 +145,12 @@ fn B() {
 // CHECK:STDOUT:     function50000000: {name: name0, parent_scope: name_scope0, call_param_patterns_id: inst_block_empty, call_params_id: inst_block_empty, body: [inst_block50000005]}
 // CHECK:STDOUT:     function50000001: {name: name1, parent_scope: name_scope50000001, call_param_patterns_id: inst_block_empty}
 // CHECK:STDOUT:   classes:         {}
+// CHECK:STDOUT:   interfaces:      {}
+// CHECK:STDOUT:   associated_constants: {}
+// CHECK:STDOUT:   impls:           {}
 // CHECK:STDOUT:   generics:        {}
 // CHECK:STDOUT:   specifics:       {}
+// CHECK:STDOUT:   specific_interfaces: {}
 // CHECK:STDOUT:   struct_type_fields:
 // CHECK:STDOUT:     struct_type_fields_empty: {}
 // CHECK:STDOUT:   types:
@@ -146,6 +168,7 @@ fn B() {
 // CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000014)}
 // CHECK:STDOUT:     'type(inst(InstType))':
 // CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst50000014)}
+// CHECK:STDOUT:   facet_types:     {}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     instF:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
 // CHECK:STDOUT:     inst50000010:    {kind: ImportDecl, arg0: name1}
@@ -196,6 +219,15 @@ fn B() {
 // CHECK:STDOUT:       0:               instF
 // CHECK:STDOUT:       1:               inst50000010
 // CHECK:STDOUT:       2:               inst50000012
+// CHECK:STDOUT:   value_stores:
+// CHECK:STDOUT:     shared_values:
+// CHECK:STDOUT:       ints:            {}
+// CHECK:STDOUT:       reals:           {}
+// CHECK:STDOUT:       floats:          {}
+// CHECK:STDOUT:       identifiers:
+// CHECK:STDOUT:         identifier0:     B
+// CHECK:STDOUT:         identifier1:     A
+// CHECK:STDOUT:       strings:         {}
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: --- b.carbon
 // CHECK:STDOUT:

+ 382 - 340
toolchain/check/testdata/basics/raw_sem_ir/one_file.carbon

@@ -20,6 +20,14 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT: ---
 // CHECK:STDOUT: filename:        one_file.carbon
 // CHECK:STDOUT: sem_ir:
+// CHECK:STDOUT:   names:
+// CHECK:STDOUT:     name0:           Foo
+// CHECK:STDOUT:     name1:           T
+// CHECK:STDOUT:     name2:           p
+// CHECK:STDOUT:     name3:           Copy
+// CHECK:STDOUT:     name4:           Op
+// CHECK:STDOUT:     name5:           U
+// CHECK:STDOUT:     name6:           V
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     'import_ir(Cpp)':  {decl_id: inst<none>, is_export: false}
@@ -321,44 +329,60 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT:     function60000004: {name: name4, parent_scope: name_scope6000000B, call_param_patterns_id: inst_block60000049, return_type_inst_id: inst600000E4, return_form_inst_id: inst600000E5, return_patterns_id: inst_block6000004B}
 // CHECK:STDOUT:     function60000005: {name: name4, parent_scope: name_scope6000000C, call_param_patterns_id: inst_block60000063, return_type_inst_id: inst60000124, return_form_inst_id: inst60000125, return_patterns_id: inst_block60000065}
 // CHECK:STDOUT:   classes:         {}
+// CHECK:STDOUT:   interfaces:
+// CHECK:STDOUT:     interface60000000: {name: name3, parent_scope: name_scope60000001, require_impls_block_id: require_block_empty}
+// CHECK:STDOUT:   associated_constants: {}
+// CHECK:STDOUT:   impls:
+// CHECK:STDOUT:     impl60000000:    {self: inst60000092, constraint: inst60000093, witness: inst60000069}
+// CHECK:STDOUT:     impl60000001:    {self: inst6000009D, constraint: inst6000009E, witness: inst6000009B}
+// CHECK:STDOUT:     impl60000002:    {self: inst600000A1, constraint: inst600000A2, witness: inst6000009F}
+// CHECK:STDOUT:     impl60000003:    {self: inst600000A5, constraint: inst600000A6, witness: inst600000A3}
+// CHECK:STDOUT:     impl60000004:    {self: inst600000A9, constraint: inst600000AA, witness: inst600000A7}
+// CHECK:STDOUT:     impl60000005:    {self: inst600000B1, constraint: inst600000B2, witness: inst600000AB}
+// CHECK:STDOUT:     impl60000006:    {self: inst600000CB, constraint: inst600000CC, witness: inst600000C9}
+// CHECK:STDOUT:     impl60000007:    {self: inst600000CF, constraint: inst600000D0, witness: inst600000CD}
+// CHECK:STDOUT:     impl60000008:    {self: inst60000104, constraint: inst60000105, witness: inst600000D1}
+// CHECK:STDOUT:     impl60000009:    {self: inst6000014D, constraint: inst6000014E, witness: inst60000111}
 // CHECK:STDOUT:   generics:
-// CHECK:STDOUT:     generic60000000: {decl: inst6000003C, bindings: inst_block60000014}
-// CHECK:STDOUT:     generic60000001: {decl: inst60000057, bindings: inst_block6000001E}
-// CHECK:STDOUT:     generic60000002: {decl: inst6000006A, bindings: inst_block60000030}
-// CHECK:STDOUT:     generic60000003: {decl: inst60000071, bindings: inst_block60000029}
-// CHECK:STDOUT:     generic60000004: {decl: inst600000AC, bindings: inst_block60000038}
-// CHECK:STDOUT:     generic60000005: {decl: inst600000B7, bindings: inst_block6000003E}
-// CHECK:STDOUT:     generic60000006: {decl: inst600000D2, bindings: inst_block60000056}
-// CHECK:STDOUT:     generic60000007: {decl: inst600000D9, bindings: inst_block6000004C}
-// CHECK:STDOUT:     generic60000008: {decl: inst60000112, bindings: inst_block60000071}
-// CHECK:STDOUT:     generic60000009: {decl: inst60000119, bindings: inst_block60000066}
+// CHECK:STDOUT:     generic60000000: {decl: inst6000003C, bindings: inst_block60000014, self_specific_id: specific60000000, decl_block_id: inst_block60000016, definition_block_id: inst_block60000081}
+// CHECK:STDOUT:     generic60000001: {decl: inst60000057, bindings: inst_block6000001E, self_specific_id: specific60000001, decl_block_id: inst_block6000001F, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     generic60000002: {decl: inst6000006A, bindings: inst_block60000030, self_specific_id: specific60000002, decl_block_id: inst_block60000032, definition_block_id: inst_block60000034}
+// CHECK:STDOUT:     generic60000003: {decl: inst60000071, bindings: inst_block60000029, self_specific_id: specific60000004, decl_block_id: inst_block6000002A, definition_block_id: inst_block6000002D}
+// CHECK:STDOUT:     generic60000004: {decl: inst600000AC, bindings: inst_block60000038, self_specific_id: specific60000007, decl_block_id: inst_block6000003A, definition_block_id: inst_block60000042}
+// CHECK:STDOUT:     generic60000005: {decl: inst600000B7, bindings: inst_block6000003E, self_specific_id: specific60000009, decl_block_id: inst_block6000003F, definition_block_id: inst_block_empty}
+// CHECK:STDOUT:     generic60000006: {decl: inst600000D2, bindings: inst_block60000056, self_specific_id: specific6000000A, decl_block_id: inst_block6000005A, definition_block_id: inst_block6000005C}
+// CHECK:STDOUT:     generic60000007: {decl: inst600000D9, bindings: inst_block6000004C, self_specific_id: specific6000000C, decl_block_id: inst_block6000004E, definition_block_id: inst_block60000053}
+// CHECK:STDOUT:     generic60000008: {decl: inst60000112, bindings: inst_block60000071, self_specific_id: specific60000010, decl_block_id: inst_block60000075, definition_block_id: inst_block60000077}
+// CHECK:STDOUT:     generic60000009: {decl: inst60000119, bindings: inst_block60000066, self_specific_id: specific60000012, decl_block_id: inst_block60000068, definition_block_id: inst_block6000006E}
 // CHECK:STDOUT:   specifics:
-// CHECK:STDOUT:     specific60000000: {generic: generic60000000, args: inst_block60000015}
-// CHECK:STDOUT:     specific60000001: {generic: generic60000001, args: inst_block60000020}
-// CHECK:STDOUT:     specific60000002: {generic: generic60000002, args: inst_block60000023}
-// CHECK:STDOUT:     specific60000003: {generic: generic60000001, args: inst_block60000023}
-// CHECK:STDOUT:     specific60000004: {generic: generic60000003, args: inst_block60000023}
-// CHECK:STDOUT:     specific60000005: {generic: generic60000001, args: inst_block6000002C}
-// CHECK:STDOUT:     specific60000006: {generic: generic60000002, args: inst_block60000031}
-// CHECK:STDOUT:     specific60000007: {generic: generic60000004, args: inst_block60000015}
-// CHECK:STDOUT:     specific60000008: {generic: generic60000004, args: inst_block60000039}
-// CHECK:STDOUT:     specific60000009: {generic: generic60000005, args: inst_block60000015}
-// CHECK:STDOUT:     specific6000000A: {generic: generic60000006, args: inst_block60000045}
-// CHECK:STDOUT:     specific6000000B: {generic: generic60000001, args: inst_block6000004F}
-// CHECK:STDOUT:     specific6000000C: {generic: generic60000007, args: inst_block60000045}
-// CHECK:STDOUT:     specific6000000D: {generic: generic60000001, args: inst_block60000051}
-// CHECK:STDOUT:     specific6000000E: {generic: generic60000001, args: inst_block60000052}
-// CHECK:STDOUT:     specific6000000F: {generic: generic60000006, args: inst_block60000057}
-// CHECK:STDOUT:     specific60000010: {generic: generic60000008, args: inst_block6000005F}
-// CHECK:STDOUT:     specific60000011: {generic: generic60000001, args: inst_block60000069}
-// CHECK:STDOUT:     specific60000012: {generic: generic60000009, args: inst_block6000005F}
-// CHECK:STDOUT:     specific60000013: {generic: generic60000001, args: inst_block6000006B}
-// CHECK:STDOUT:     specific60000014: {generic: generic60000001, args: inst_block6000006C}
-// CHECK:STDOUT:     specific60000015: {generic: generic60000001, args: inst_block6000006D}
-// CHECK:STDOUT:     specific60000016: {generic: generic60000008, args: inst_block60000072}
-// CHECK:STDOUT:     specific60000017: {generic: generic60000004, args: inst_block60000079}
-// CHECK:STDOUT:     specific60000018: {generic: generic60000001, args: inst_block6000007C}
-// CHECK:STDOUT:     specific60000019: {generic: generic60000001, args: inst_block6000007E}
+// CHECK:STDOUT:     specific60000000: {generic: generic60000000, args: inst_block60000015, decl_block_id: inst_block60000017, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000001: {generic: generic60000001, args: inst_block60000020, decl_block_id: inst_block60000021, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000002: {generic: generic60000002, args: inst_block60000023, decl_block_id: inst_block60000024, definition_block_id: inst_block60000025}
+// CHECK:STDOUT:     specific60000003: {generic: generic60000001, args: inst_block60000023, decl_block_id: inst_block6000002B, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000004: {generic: generic60000003, args: inst_block60000023, decl_block_id: inst_block6000002E, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000005: {generic: generic60000001, args: inst_block6000002C, decl_block_id: inst_block<none>, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000006: {generic: generic60000002, args: inst_block60000031, decl_block_id: inst_block<none>, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000007: {generic: generic60000004, args: inst_block60000015, decl_block_id: inst_block60000036, definition_block_id: inst_block60000078}
+// CHECK:STDOUT:     specific60000008: {generic: generic60000004, args: inst_block60000039, decl_block_id: inst_block<none>, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000009: {generic: generic60000005, args: inst_block60000015, decl_block_id: inst_block60000040, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific6000000A: {generic: generic60000006, args: inst_block60000045, decl_block_id: inst_block60000047, definition_block_id: inst_block60000048}
+// CHECK:STDOUT:     specific6000000B: {generic: generic60000001, args: inst_block6000004F, decl_block_id: inst_block60000050, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific6000000C: {generic: generic60000007, args: inst_block60000045, decl_block_id: inst_block60000054, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific6000000D: {generic: generic60000001, args: inst_block60000051, decl_block_id: inst_block<none>, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific6000000E: {generic: generic60000001, args: inst_block60000052, decl_block_id: inst_block<none>, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific6000000F: {generic: generic60000006, args: inst_block60000057, decl_block_id: inst_block<none>, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000010: {generic: generic60000008, args: inst_block6000005F, decl_block_id: inst_block60000061, definition_block_id: inst_block60000062}
+// CHECK:STDOUT:     specific60000011: {generic: generic60000001, args: inst_block60000069, decl_block_id: inst_block6000006A, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000012: {generic: generic60000009, args: inst_block6000005F, decl_block_id: inst_block6000006F, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000013: {generic: generic60000001, args: inst_block6000006B, decl_block_id: inst_block<none>, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000014: {generic: generic60000001, args: inst_block6000006C, decl_block_id: inst_block<none>, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000015: {generic: generic60000001, args: inst_block6000006D, decl_block_id: inst_block<none>, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000016: {generic: generic60000008, args: inst_block60000072, decl_block_id: inst_block<none>, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000017: {generic: generic60000004, args: inst_block60000079, decl_block_id: inst_block<none>, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000018: {generic: generic60000001, args: inst_block6000007C, decl_block_id: inst_block6000007D, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:     specific60000019: {generic: generic60000001, args: inst_block6000007E, decl_block_id: inst_block<none>, definition_block_id: inst_block<none>}
+// CHECK:STDOUT:   specific_interfaces:
+// CHECK:STDOUT:     specific_interface60000000: {interface_id: interface60000000, specific_id: specific<none>}
 // CHECK:STDOUT:   struct_type_fields:
 // CHECK:STDOUT:     struct_type_fields_empty: {}
 // CHECK:STDOUT:   types:
@@ -404,6 +428,9 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000025)}
 // CHECK:STDOUT:     'type(inst(BoundMethodType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(BoundMethodType))}
+// CHECK:STDOUT:   facet_types:
+// CHECK:STDOUT:     facet_type60000000: {}
+// CHECK:STDOUT:     facet_type60000001: {extends interface: interface60000000}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     instF:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
 // CHECK:STDOUT:     inst60000010:    {kind: ImportDecl, arg0: name(Core)}
@@ -1112,310 +1139,310 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT:       inst60000172:    concrete_constant(inst60000027)
 // CHECK:STDOUT:       inst60000173:    concrete_constant(inst60000027)
 // CHECK:STDOUT:     symbolic_constants:
-// CHECK:STDOUT:       symbolic_constant60000000: {inst: inst60000014, generic: generic<none>, index: generic_inst<none>, kind: self}
-// CHECK:STDOUT:       symbolic_constant60000001: {inst: inst60000016, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000002: {inst: inst60000016, generic: generic60000000, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000003: {inst: inst6000001C, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000004: {inst: inst6000001C, generic: generic60000000, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000005: {inst: inst6000001F, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000006: {inst: inst6000001F, generic: generic60000000, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000007: {inst: inst6000002A, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000008: {inst: inst6000002A, generic: generic60000000, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000009: {inst: inst6000002E, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000000A: {inst: inst6000002E, generic: generic60000000, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000000B: {inst: inst60000032, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000000C: {inst: inst60000032, generic: generic60000000, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000000D: {inst: inst60000034, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000000E: {inst: inst60000034, generic: generic60000000, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000000F: {inst: inst6000003F, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000010: {inst: inst60000041, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000011: {inst: inst60000041, generic: generic60000000, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000012: {inst: inst60000044, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000013: {inst: inst60000044, generic: generic60000000, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000014: {inst: inst60000050, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000015: {inst: inst6000005A, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000016: {inst: inst6000005B, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000017: {inst: inst6000005B, generic: generic60000001, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000018: {inst: inst60000060, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000019: {inst: inst60000060, generic: generic60000001, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000001A: {inst: inst6000005A, generic: generic60000001, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000001B: {inst: inst60000050, generic: generic60000001, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000001C: {inst: inst60000060, generic: generic60000001, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000001D: {inst: inst6000005A, generic: generic60000001, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000001E: {inst: inst60000050, generic: generic60000001, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000001F: {inst: inst6000005A, generic: generic60000001, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000020: {inst: inst6000005B, generic: generic60000001, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000021: {inst: inst60000060, generic: generic60000001, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000022: {inst: inst6000006B, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000023: {inst: inst6000006C, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000024: {inst: inst6000006D, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000025: {inst: inst6000006D, generic: generic60000002, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000026: {inst: inst60000070, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000027: {inst: inst60000070, generic: generic60000002, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000028: {inst: inst60000072, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000029: {inst: inst60000073, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000002A: {inst: inst60000073, generic: generic60000002, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000002B: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000002C: {inst: inst60000074, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000002D: {inst: inst60000074, generic: generic60000003, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000002E: {inst: inst60000079, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000002F: {inst: inst60000079, generic: generic60000003, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000030: {inst: inst6000006D, generic: generic60000003, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000031: {inst: inst6000006C, generic: generic60000003, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000032: {inst: inst6000006B, generic: generic60000003, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000033: {inst: inst6000006B, generic: generic60000002, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000034: {inst: inst60000079, generic: generic60000003, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000035: {inst: inst6000006D, generic: generic60000003, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000036: {inst: inst6000006B, generic: generic60000003, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000037: {inst: inst6000006C, generic: generic60000003, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000038: {inst: inst6000006D, generic: generic60000003, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000039: {inst: inst60000074, generic: generic60000003, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000003A: {inst: inst60000079, generic: generic60000003, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000003B: {inst: inst60000082, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000003C: {inst: inst60000083, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000003D: {inst: inst60000084, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000003E: {inst: inst60000085, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000003F: {inst: inst60000085, generic: generic60000003, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000040: {inst: inst60000086, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000041: {inst: inst60000087, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000042: {inst: inst60000084, generic: generic60000003, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000043: {inst: inst60000083, generic: generic60000003, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000044: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000045: {inst: inst60000088, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000046: {inst: inst60000088, generic: generic60000003, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000047: {inst: inst60000089, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000048: {inst: inst60000089, generic: generic60000003, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000049: {inst: inst60000089, generic: generic60000003, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000004A: {inst: inst60000088, generic: generic60000003, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000004B: {inst: inst60000082, generic: generic60000003, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000004C: {inst: inst60000083, generic: generic60000003, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000004D: {inst: inst60000084, generic: generic60000003, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000004E: {inst: inst60000085, generic: generic60000003, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000004F: {inst: inst6000006D, generic: generic60000002, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000050: {inst: inst6000006C, generic: generic60000002, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000051: {inst: inst6000006B, generic: generic60000002, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000052: {inst: inst6000006B, generic: generic60000002, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000053: {inst: inst6000006C, generic: generic60000002, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000054: {inst: inst6000006D, generic: generic60000002, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000055: {inst: inst60000070, generic: generic60000002, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000056: {inst: inst60000073, generic: generic60000002, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000057: {inst: inst60000072, generic: generic60000002, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000058: {inst: inst60000073, generic: generic60000002, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000059: {inst: inst6000001C, generic: generic60000004, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000005A: {inst: inst600000AF, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000005B: {inst: inst600000AF, generic: generic60000004, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000005C: {inst: inst6000001C, generic: generic60000004, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000005D: {inst: inst60000016, generic: generic60000004, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000005E: {inst: inst60000016, generic: generic60000004, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000005F: {inst: inst60000016, generic: generic60000004, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000060: {inst: inst6000001C, generic: generic60000004, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000061: {inst: inst600000AF, generic: generic60000004, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000062: {inst: inst60000044, generic: generic60000004, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000063: {inst: inst600000B8, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000064: {inst: inst600000B9, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000065: {inst: inst600000B9, generic: generic60000004, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000066: {inst: inst600000B8, generic: generic60000004, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000067: {inst: inst6000001F, generic: generic60000005, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000068: {inst: inst600000BE, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000069: {inst: inst600000BE, generic: generic60000005, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000006A: {inst: inst6000001C, generic: generic60000005, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000006B: {inst: inst60000016, generic: generic60000005, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000006C: {inst: inst600000BE, generic: generic60000005, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000006D: {inst: inst6000001C, generic: generic60000005, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000006E: {inst: inst60000016, generic: generic60000005, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000006F: {inst: inst6000001C, generic: generic60000005, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000070: {inst: inst6000001F, generic: generic60000005, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000071: {inst: inst600000BE, generic: generic60000005, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000072: {inst: inst600000B9, generic: generic60000004, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000073: {inst: inst600000B8, generic: generic60000004, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000074: {inst: inst600000B9, generic: generic60000004, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000075: {inst: inst60000044, generic: generic60000004, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000076: {inst: inst600000D3, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000077: {inst: inst600000D4, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000078: {inst: inst600000D5, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000079: {inst: inst600000D5, generic: generic60000006, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000007A: {inst: inst600000D8, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000007B: {inst: inst600000D8, generic: generic60000006, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000007C: {inst: inst600000DA, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000007D: {inst: inst600000DB, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000007E: {inst: inst600000DB, generic: generic60000006, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000007F: {inst: inst600000DA, generic: generic60000006, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000080: {inst: inst600000DD, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000081: {inst: inst600000DE, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000082: {inst: inst600000DE, generic: generic60000007, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000083: {inst: inst600000E3, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000084: {inst: inst600000E3, generic: generic60000007, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000085: {inst: inst600000D5, generic: generic60000007, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000086: {inst: inst600000D4, generic: generic60000007, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000087: {inst: inst600000D3, generic: generic60000007, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000088: {inst: inst6000006C, generic: generic60000007, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000089: {inst: inst6000006B, generic: generic60000007, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000008A: {inst: inst600000D3, generic: generic60000006, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000008B: {inst: inst6000006B, generic: generic60000006, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000008C: {inst: inst600000E3, generic: generic60000007, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000008D: {inst: inst600000D5, generic: generic60000007, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000008E: {inst: inst6000006B, generic: generic60000007, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000008F: {inst: inst6000006C, generic: generic60000007, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000090: {inst: inst600000D3, generic: generic60000007, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000091: {inst: inst600000D4, generic: generic60000007, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000092: {inst: inst600000D5, generic: generic60000007, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000093: {inst: inst600000DE, generic: generic60000007, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000094: {inst: inst600000E3, generic: generic60000007, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000095: {inst: inst600000EF, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000096: {inst: inst600000F0, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000097: {inst: inst600000F1, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000098: {inst: inst600000F2, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000099: {inst: inst600000F2, generic: generic60000007, index: generic_inst_in_def10, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000009A: {inst: inst600000F3, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000009B: {inst: inst600000F4, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000009C: {inst: inst600000F1, generic: generic60000007, index: generic_inst_in_def9, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000009D: {inst: inst600000F0, generic: generic60000007, index: generic_inst_in_def8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000009E: {inst: inst600000EF, generic: generic60000007, index: generic_inst_in_def7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000009F: {inst: inst600000F5, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A0: {inst: inst600000F5, generic: generic60000007, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A1: {inst: inst60000085, generic: generic60000007, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A2: {inst: inst60000084, generic: generic60000007, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A3: {inst: inst60000083, generic: generic60000007, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A4: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A5: {inst: inst60000088, generic: generic60000007, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A6: {inst: inst600000F6, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A7: {inst: inst600000F6, generic: generic60000007, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A8: {inst: inst600000F6, generic: generic60000007, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000A9: {inst: inst60000088, generic: generic60000007, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000AA: {inst: inst60000082, generic: generic60000007, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000AB: {inst: inst60000083, generic: generic60000007, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000AC: {inst: inst60000084, generic: generic60000007, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000AD: {inst: inst60000085, generic: generic60000007, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000AE: {inst: inst600000F5, generic: generic60000007, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000AF: {inst: inst600000EF, generic: generic60000007, index: generic_inst_in_def7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B0: {inst: inst600000F0, generic: generic60000007, index: generic_inst_in_def8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B1: {inst: inst600000F1, generic: generic60000007, index: generic_inst_in_def9, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B2: {inst: inst600000F2, generic: generic60000007, index: generic_inst_in_def10, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B3: {inst: inst600000D5, generic: generic60000006, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B4: {inst: inst600000D4, generic: generic60000006, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B5: {inst: inst6000006C, generic: generic60000006, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B6: {inst: inst600000DD, generic: generic60000006, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B7: {inst: inst600000D3, generic: generic60000006, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B8: {inst: inst6000006B, generic: generic60000006, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000B9: {inst: inst6000006B, generic: generic60000006, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000BA: {inst: inst600000D3, generic: generic60000006, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000BB: {inst: inst600000DD, generic: generic60000006, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000BC: {inst: inst6000006C, generic: generic60000006, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000BD: {inst: inst600000D4, generic: generic60000006, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000BE: {inst: inst600000D5, generic: generic60000006, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000BF: {inst: inst600000D8, generic: generic60000006, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C0: {inst: inst600000DB, generic: generic60000006, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C1: {inst: inst600000DA, generic: generic60000006, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C2: {inst: inst600000DB, generic: generic60000006, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C3: {inst: inst60000113, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C4: {inst: inst60000114, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C5: {inst: inst60000115, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C6: {inst: inst60000115, generic: generic60000008, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C7: {inst: inst60000118, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C8: {inst: inst60000118, generic: generic60000008, index: generic_inst_in_decl8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000C9: {inst: inst6000011A, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000CA: {inst: inst6000011B, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000CB: {inst: inst6000011B, generic: generic60000008, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000CC: {inst: inst6000011A, generic: generic60000008, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000CD: {inst: inst6000011D, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000CE: {inst: inst6000011E, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000CF: {inst: inst6000011E, generic: generic60000009, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D0: {inst: inst60000123, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D1: {inst: inst60000123, generic: generic60000009, index: generic_inst_in_decl8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D2: {inst: inst60000115, generic: generic60000009, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D3: {inst: inst60000114, generic: generic60000009, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D4: {inst: inst60000113, generic: generic60000009, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D5: {inst: inst600000D4, generic: generic60000009, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D6: {inst: inst600000D3, generic: generic60000009, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D7: {inst: inst6000006C, generic: generic60000009, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D8: {inst: inst6000006B, generic: generic60000009, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000D9: {inst: inst60000113, generic: generic60000008, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000DA: {inst: inst600000D3, generic: generic60000008, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000DB: {inst: inst6000006B, generic: generic60000008, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000DC: {inst: inst60000123, generic: generic60000009, index: generic_inst_in_decl8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000DD: {inst: inst60000115, generic: generic60000009, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000DE: {inst: inst6000006B, generic: generic60000009, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000DF: {inst: inst6000006C, generic: generic60000009, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E0: {inst: inst600000D3, generic: generic60000009, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E1: {inst: inst600000D4, generic: generic60000009, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E2: {inst: inst60000113, generic: generic60000009, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E3: {inst: inst60000114, generic: generic60000009, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E4: {inst: inst60000115, generic: generic60000009, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E5: {inst: inst6000011E, generic: generic60000009, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E6: {inst: inst60000123, generic: generic60000009, index: generic_inst_in_decl8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E7: {inst: inst60000132, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E8: {inst: inst60000133, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000E9: {inst: inst60000134, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000EA: {inst: inst60000135, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000EB: {inst: inst60000135, generic: generic60000009, index: generic_inst_in_def15, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000EC: {inst: inst60000136, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000ED: {inst: inst60000137, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000EE: {inst: inst60000134, generic: generic60000009, index: generic_inst_in_def14, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000EF: {inst: inst60000133, generic: generic60000009, index: generic_inst_in_def13, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F0: {inst: inst60000132, generic: generic60000009, index: generic_inst_in_def12, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F1: {inst: inst60000138, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F2: {inst: inst60000138, generic: generic60000009, index: generic_inst_in_def11, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F3: {inst: inst600000F2, generic: generic60000009, index: generic_inst_in_def10, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F4: {inst: inst600000F1, generic: generic60000009, index: generic_inst_in_def9, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F5: {inst: inst600000F0, generic: generic60000009, index: generic_inst_in_def8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F6: {inst: inst600000EF, generic: generic60000009, index: generic_inst_in_def7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F7: {inst: inst600000F5, generic: generic60000009, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F8: {inst: inst60000085, generic: generic60000009, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000F9: {inst: inst60000084, generic: generic60000009, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000FA: {inst: inst60000083, generic: generic60000009, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000FB: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000FC: {inst: inst60000088, generic: generic60000009, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000FD: {inst: inst60000139, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000FE: {inst: inst60000139, generic: generic60000009, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant600000FF: {inst: inst60000139, generic: generic60000009, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000100: {inst: inst60000088, generic: generic60000009, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000101: {inst: inst60000082, generic: generic60000009, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000102: {inst: inst60000083, generic: generic60000009, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000103: {inst: inst60000084, generic: generic60000009, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000104: {inst: inst60000085, generic: generic60000009, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000105: {inst: inst600000F5, generic: generic60000009, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000106: {inst: inst600000EF, generic: generic60000009, index: generic_inst_in_def7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000107: {inst: inst600000F0, generic: generic60000009, index: generic_inst_in_def8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000108: {inst: inst600000F1, generic: generic60000009, index: generic_inst_in_def9, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000109: {inst: inst600000F2, generic: generic60000009, index: generic_inst_in_def10, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000010A: {inst: inst60000138, generic: generic60000009, index: generic_inst_in_def11, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000010B: {inst: inst60000132, generic: generic60000009, index: generic_inst_in_def12, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000010C: {inst: inst60000133, generic: generic60000009, index: generic_inst_in_def13, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000010D: {inst: inst60000134, generic: generic60000009, index: generic_inst_in_def14, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000010E: {inst: inst60000135, generic: generic60000009, index: generic_inst_in_def15, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000010F: {inst: inst60000115, generic: generic60000008, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000110: {inst: inst60000114, generic: generic60000008, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000111: {inst: inst600000D4, generic: generic60000008, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000112: {inst: inst6000006C, generic: generic60000008, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000113: {inst: inst6000011D, generic: generic60000008, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000114: {inst: inst60000113, generic: generic60000008, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000115: {inst: inst600000D3, generic: generic60000008, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000116: {inst: inst6000006B, generic: generic60000008, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000117: {inst: inst6000006B, generic: generic60000008, index: generic_inst_in_decl0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000118: {inst: inst600000D3, generic: generic60000008, index: generic_inst_in_decl1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000119: {inst: inst60000113, generic: generic60000008, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000011A: {inst: inst6000011D, generic: generic60000008, index: generic_inst_in_decl3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000011B: {inst: inst6000006C, generic: generic60000008, index: generic_inst_in_decl4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000011C: {inst: inst600000D4, generic: generic60000008, index: generic_inst_in_decl5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000011D: {inst: inst60000114, generic: generic60000008, index: generic_inst_in_decl6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000011E: {inst: inst60000115, generic: generic60000008, index: generic_inst_in_decl7, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000011F: {inst: inst60000118, generic: generic60000008, index: generic_inst_in_decl8, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000120: {inst: inst6000011B, generic: generic60000008, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000121: {inst: inst6000011A, generic: generic60000008, index: generic_inst_in_def0, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000122: {inst: inst6000011B, generic: generic60000008, index: generic_inst_in_def1, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000123: {inst: inst600000AF, generic: generic60000004, index: generic_inst_in_decl2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000124: {inst: inst6000015E, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000125: {inst: inst6000015E, generic: generic60000000, index: generic_inst_in_def2, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000126: {inst: inst60000160, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000127: {inst: inst60000160, generic: generic60000000, index: generic_inst_in_def3, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000128: {inst: inst60000162, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant60000129: {inst: inst60000163, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000012A: {inst: inst60000165, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000012B: {inst: inst60000162, generic: generic60000000, index: generic_inst_in_def4, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000012C: {inst: inst60000163, generic: generic60000000, index: generic_inst_in_def5, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000012D: {inst: inst60000165, generic: generic60000000, index: generic_inst_in_def6, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000012E: {inst: inst6000016B, generic: generic<none>, index: generic_inst<none>, kind: checked}
-// CHECK:STDOUT:       symbolic_constant6000012F: {inst: inst6000016B, generic: generic60000000, index: generic_inst_in_def7, kind: checked}
+// CHECK:STDOUT:       symbolic_constant60000000: {inst: inst60000014, kind: self, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000001: {inst: inst60000016, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000002: {inst: inst60000016, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant60000003: {inst: inst6000001C, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000004: {inst: inst6000001C, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant60000005: {inst: inst6000001F, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000006: {inst: inst6000001F, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000007: {inst: inst6000002A, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000008: {inst: inst6000002A, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant60000009: {inst: inst6000002E, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000000A: {inst: inst6000002E, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant6000000B: {inst: inst60000032, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000000C: {inst: inst60000032, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_decl5}}
+// CHECK:STDOUT:       symbolic_constant6000000D: {inst: inst60000034, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000000E: {inst: inst60000034, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_decl6}}
+// CHECK:STDOUT:       symbolic_constant6000000F: {inst: inst6000003F, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000010: {inst: inst60000041, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000011: {inst: inst60000041, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant60000012: {inst: inst60000044, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000013: {inst: inst60000044, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant60000014: {inst: inst60000050, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000015: {inst: inst6000005A, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000016: {inst: inst6000005B, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000017: {inst: inst6000005B, kind: checked, attached: {generic: generic60000001, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000018: {inst: inst60000060, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000019: {inst: inst60000060, kind: checked, attached: {generic: generic60000001, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant6000001A: {inst: inst6000005A, kind: checked, attached: {generic: generic60000001, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant6000001B: {inst: inst60000050, kind: checked, attached: {generic: generic60000001, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant6000001C: {inst: inst60000060, kind: checked, attached: {generic: generic60000001, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant6000001D: {inst: inst6000005A, kind: checked, attached: {generic: generic60000001, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant6000001E: {inst: inst60000050, kind: checked, attached: {generic: generic60000001, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant6000001F: {inst: inst6000005A, kind: checked, attached: {generic: generic60000001, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant60000020: {inst: inst6000005B, kind: checked, attached: {generic: generic60000001, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000021: {inst: inst60000060, kind: checked, attached: {generic: generic60000001, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant60000022: {inst: inst6000006B, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000023: {inst: inst6000006C, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000024: {inst: inst6000006D, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000025: {inst: inst6000006D, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000026: {inst: inst60000070, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000027: {inst: inst60000070, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant60000028: {inst: inst60000072, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000029: {inst: inst60000073, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000002A: {inst: inst60000073, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant6000002B: {inst: inst60000072, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant6000002C: {inst: inst60000074, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000002D: {inst: inst60000074, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant6000002E: {inst: inst60000079, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000002F: {inst: inst60000079, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant60000030: {inst: inst6000006D, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000031: {inst: inst6000006C, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant60000032: {inst: inst6000006B, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant60000033: {inst: inst6000006B, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant60000034: {inst: inst60000079, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant60000035: {inst: inst6000006D, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000036: {inst: inst6000006B, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant60000037: {inst: inst6000006C, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant60000038: {inst: inst6000006D, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000039: {inst: inst60000074, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant6000003A: {inst: inst60000079, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant6000003B: {inst: inst60000082, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000003C: {inst: inst60000083, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000003D: {inst: inst60000084, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000003E: {inst: inst60000085, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000003F: {inst: inst60000085, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_def5}}
+// CHECK:STDOUT:       symbolic_constant60000040: {inst: inst60000086, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000041: {inst: inst60000087, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000042: {inst: inst60000084, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_def4}}
+// CHECK:STDOUT:       symbolic_constant60000043: {inst: inst60000083, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_def3}}
+// CHECK:STDOUT:       symbolic_constant60000044: {inst: inst60000082, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_def2}}
+// CHECK:STDOUT:       symbolic_constant60000045: {inst: inst60000088, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000046: {inst: inst60000088, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant60000047: {inst: inst60000089, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000048: {inst: inst60000089, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant60000049: {inst: inst60000089, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant6000004A: {inst: inst60000088, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant6000004B: {inst: inst60000082, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_def2}}
+// CHECK:STDOUT:       symbolic_constant6000004C: {inst: inst60000083, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_def3}}
+// CHECK:STDOUT:       symbolic_constant6000004D: {inst: inst60000084, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_def4}}
+// CHECK:STDOUT:       symbolic_constant6000004E: {inst: inst60000085, kind: checked, attached: {generic: generic60000003, index: generic_inst_in_def5}}
+// CHECK:STDOUT:       symbolic_constant6000004F: {inst: inst6000006D, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000050: {inst: inst6000006C, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant60000051: {inst: inst6000006B, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant60000052: {inst: inst6000006B, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant60000053: {inst: inst6000006C, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant60000054: {inst: inst6000006D, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000055: {inst: inst60000070, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant60000056: {inst: inst60000073, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant60000057: {inst: inst60000072, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant60000058: {inst: inst60000073, kind: checked, attached: {generic: generic60000002, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant60000059: {inst: inst6000001C, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant6000005A: {inst: inst600000AF, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000005B: {inst: inst600000AF, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant6000005C: {inst: inst6000001C, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant6000005D: {inst: inst60000016, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant6000005E: {inst: inst60000016, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant6000005F: {inst: inst60000016, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant60000060: {inst: inst6000001C, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant60000061: {inst: inst600000AF, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000062: {inst: inst60000044, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_def2}}
+// CHECK:STDOUT:       symbolic_constant60000063: {inst: inst600000B8, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000064: {inst: inst600000B9, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000065: {inst: inst600000B9, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant60000066: {inst: inst600000B8, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant60000067: {inst: inst6000001F, kind: checked, attached: {generic: generic60000005, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000068: {inst: inst600000BE, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000069: {inst: inst600000BE, kind: checked, attached: {generic: generic60000005, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant6000006A: {inst: inst6000001C, kind: checked, attached: {generic: generic60000005, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant6000006B: {inst: inst60000016, kind: checked, attached: {generic: generic60000005, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant6000006C: {inst: inst600000BE, kind: checked, attached: {generic: generic60000005, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant6000006D: {inst: inst6000001C, kind: checked, attached: {generic: generic60000005, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant6000006E: {inst: inst60000016, kind: checked, attached: {generic: generic60000005, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant6000006F: {inst: inst6000001C, kind: checked, attached: {generic: generic60000005, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant60000070: {inst: inst6000001F, kind: checked, attached: {generic: generic60000005, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000071: {inst: inst600000BE, kind: checked, attached: {generic: generic60000005, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant60000072: {inst: inst600000B9, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant60000073: {inst: inst600000B8, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant60000074: {inst: inst600000B9, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant60000075: {inst: inst60000044, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_def2}}
+// CHECK:STDOUT:       symbolic_constant60000076: {inst: inst600000D3, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000077: {inst: inst600000D4, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000078: {inst: inst600000D5, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000079: {inst: inst600000D5, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl5}}
+// CHECK:STDOUT:       symbolic_constant6000007A: {inst: inst600000D8, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000007B: {inst: inst600000D8, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl6}}
+// CHECK:STDOUT:       symbolic_constant6000007C: {inst: inst600000DA, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000007D: {inst: inst600000DB, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000007E: {inst: inst600000DB, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant6000007F: {inst: inst600000DA, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant60000080: {inst: inst600000DD, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000081: {inst: inst600000DE, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000082: {inst: inst600000DE, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl5}}
+// CHECK:STDOUT:       symbolic_constant60000083: {inst: inst600000E3, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000084: {inst: inst600000E3, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl6}}
+// CHECK:STDOUT:       symbolic_constant60000085: {inst: inst600000D5, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant60000086: {inst: inst600000D4, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant60000087: {inst: inst600000D3, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000088: {inst: inst6000006C, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant60000089: {inst: inst6000006B, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant6000008A: {inst: inst600000D3, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant6000008B: {inst: inst6000006B, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant6000008C: {inst: inst600000E3, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl6}}
+// CHECK:STDOUT:       symbolic_constant6000008D: {inst: inst600000D5, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant6000008E: {inst: inst6000006B, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant6000008F: {inst: inst6000006C, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant60000090: {inst: inst600000D3, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000091: {inst: inst600000D4, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant60000092: {inst: inst600000D5, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant60000093: {inst: inst600000DE, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl5}}
+// CHECK:STDOUT:       symbolic_constant60000094: {inst: inst600000E3, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_decl6}}
+// CHECK:STDOUT:       symbolic_constant60000095: {inst: inst600000EF, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000096: {inst: inst600000F0, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000097: {inst: inst600000F1, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000098: {inst: inst600000F2, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000099: {inst: inst600000F2, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def10}}
+// CHECK:STDOUT:       symbolic_constant6000009A: {inst: inst600000F3, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000009B: {inst: inst600000F4, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000009C: {inst: inst600000F1, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def9}}
+// CHECK:STDOUT:       symbolic_constant6000009D: {inst: inst600000F0, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def8}}
+// CHECK:STDOUT:       symbolic_constant6000009E: {inst: inst600000EF, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def7}}
+// CHECK:STDOUT:       symbolic_constant6000009F: {inst: inst600000F5, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000A0: {inst: inst600000F5, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def6}}
+// CHECK:STDOUT:       symbolic_constant600000A1: {inst: inst60000085, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def5}}
+// CHECK:STDOUT:       symbolic_constant600000A2: {inst: inst60000084, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def4}}
+// CHECK:STDOUT:       symbolic_constant600000A3: {inst: inst60000083, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def3}}
+// CHECK:STDOUT:       symbolic_constant600000A4: {inst: inst60000082, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def2}}
+// CHECK:STDOUT:       symbolic_constant600000A5: {inst: inst60000088, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant600000A6: {inst: inst600000F6, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000A7: {inst: inst600000F6, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant600000A8: {inst: inst600000F6, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant600000A9: {inst: inst60000088, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant600000AA: {inst: inst60000082, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def2}}
+// CHECK:STDOUT:       symbolic_constant600000AB: {inst: inst60000083, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def3}}
+// CHECK:STDOUT:       symbolic_constant600000AC: {inst: inst60000084, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def4}}
+// CHECK:STDOUT:       symbolic_constant600000AD: {inst: inst60000085, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def5}}
+// CHECK:STDOUT:       symbolic_constant600000AE: {inst: inst600000F5, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def6}}
+// CHECK:STDOUT:       symbolic_constant600000AF: {inst: inst600000EF, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def7}}
+// CHECK:STDOUT:       symbolic_constant600000B0: {inst: inst600000F0, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def8}}
+// CHECK:STDOUT:       symbolic_constant600000B1: {inst: inst600000F1, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def9}}
+// CHECK:STDOUT:       symbolic_constant600000B2: {inst: inst600000F2, kind: checked, attached: {generic: generic60000007, index: generic_inst_in_def10}}
+// CHECK:STDOUT:       symbolic_constant600000B3: {inst: inst600000D5, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl5}}
+// CHECK:STDOUT:       symbolic_constant600000B4: {inst: inst600000D4, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant600000B5: {inst: inst6000006C, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant600000B6: {inst: inst600000DD, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant600000B7: {inst: inst600000D3, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant600000B8: {inst: inst6000006B, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant600000B9: {inst: inst6000006B, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant600000BA: {inst: inst600000D3, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant600000BB: {inst: inst600000DD, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant600000BC: {inst: inst6000006C, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant600000BD: {inst: inst600000D4, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant600000BE: {inst: inst600000D5, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl5}}
+// CHECK:STDOUT:       symbolic_constant600000BF: {inst: inst600000D8, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_decl6}}
+// CHECK:STDOUT:       symbolic_constant600000C0: {inst: inst600000DB, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant600000C1: {inst: inst600000DA, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant600000C2: {inst: inst600000DB, kind: checked, attached: {generic: generic60000006, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant600000C3: {inst: inst60000113, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000C4: {inst: inst60000114, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000C5: {inst: inst60000115, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000C6: {inst: inst60000115, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl7}}
+// CHECK:STDOUT:       symbolic_constant600000C7: {inst: inst60000118, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000C8: {inst: inst60000118, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl8}}
+// CHECK:STDOUT:       symbolic_constant600000C9: {inst: inst6000011A, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000CA: {inst: inst6000011B, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000CB: {inst: inst6000011B, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant600000CC: {inst: inst6000011A, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant600000CD: {inst: inst6000011D, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000CE: {inst: inst6000011E, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000CF: {inst: inst6000011E, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl7}}
+// CHECK:STDOUT:       symbolic_constant600000D0: {inst: inst60000123, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000D1: {inst: inst60000123, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl8}}
+// CHECK:STDOUT:       symbolic_constant600000D2: {inst: inst60000115, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl6}}
+// CHECK:STDOUT:       symbolic_constant600000D3: {inst: inst60000114, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl5}}
+// CHECK:STDOUT:       symbolic_constant600000D4: {inst: inst60000113, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant600000D5: {inst: inst600000D4, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant600000D6: {inst: inst600000D3, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant600000D7: {inst: inst6000006C, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant600000D8: {inst: inst6000006B, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant600000D9: {inst: inst60000113, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant600000DA: {inst: inst600000D3, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant600000DB: {inst: inst6000006B, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant600000DC: {inst: inst60000123, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl8}}
+// CHECK:STDOUT:       symbolic_constant600000DD: {inst: inst60000115, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl6}}
+// CHECK:STDOUT:       symbolic_constant600000DE: {inst: inst6000006B, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant600000DF: {inst: inst6000006C, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant600000E0: {inst: inst600000D3, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant600000E1: {inst: inst600000D4, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant600000E2: {inst: inst60000113, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant600000E3: {inst: inst60000114, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl5}}
+// CHECK:STDOUT:       symbolic_constant600000E4: {inst: inst60000115, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl6}}
+// CHECK:STDOUT:       symbolic_constant600000E5: {inst: inst6000011E, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl7}}
+// CHECK:STDOUT:       symbolic_constant600000E6: {inst: inst60000123, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_decl8}}
+// CHECK:STDOUT:       symbolic_constant600000E7: {inst: inst60000132, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000E8: {inst: inst60000133, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000E9: {inst: inst60000134, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000EA: {inst: inst60000135, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000EB: {inst: inst60000135, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def15}}
+// CHECK:STDOUT:       symbolic_constant600000EC: {inst: inst60000136, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000ED: {inst: inst60000137, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000EE: {inst: inst60000134, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def14}}
+// CHECK:STDOUT:       symbolic_constant600000EF: {inst: inst60000133, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def13}}
+// CHECK:STDOUT:       symbolic_constant600000F0: {inst: inst60000132, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def12}}
+// CHECK:STDOUT:       symbolic_constant600000F1: {inst: inst60000138, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000F2: {inst: inst60000138, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def11}}
+// CHECK:STDOUT:       symbolic_constant600000F3: {inst: inst600000F2, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def10}}
+// CHECK:STDOUT:       symbolic_constant600000F4: {inst: inst600000F1, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def9}}
+// CHECK:STDOUT:       symbolic_constant600000F5: {inst: inst600000F0, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def8}}
+// CHECK:STDOUT:       symbolic_constant600000F6: {inst: inst600000EF, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def7}}
+// CHECK:STDOUT:       symbolic_constant600000F7: {inst: inst600000F5, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def6}}
+// CHECK:STDOUT:       symbolic_constant600000F8: {inst: inst60000085, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def5}}
+// CHECK:STDOUT:       symbolic_constant600000F9: {inst: inst60000084, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def4}}
+// CHECK:STDOUT:       symbolic_constant600000FA: {inst: inst60000083, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def3}}
+// CHECK:STDOUT:       symbolic_constant600000FB: {inst: inst60000082, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def2}}
+// CHECK:STDOUT:       symbolic_constant600000FC: {inst: inst60000088, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant600000FD: {inst: inst60000139, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant600000FE: {inst: inst60000139, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant600000FF: {inst: inst60000139, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant60000100: {inst: inst60000088, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant60000101: {inst: inst60000082, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def2}}
+// CHECK:STDOUT:       symbolic_constant60000102: {inst: inst60000083, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def3}}
+// CHECK:STDOUT:       symbolic_constant60000103: {inst: inst60000084, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def4}}
+// CHECK:STDOUT:       symbolic_constant60000104: {inst: inst60000085, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def5}}
+// CHECK:STDOUT:       symbolic_constant60000105: {inst: inst600000F5, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def6}}
+// CHECK:STDOUT:       symbolic_constant60000106: {inst: inst600000EF, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def7}}
+// CHECK:STDOUT:       symbolic_constant60000107: {inst: inst600000F0, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def8}}
+// CHECK:STDOUT:       symbolic_constant60000108: {inst: inst600000F1, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def9}}
+// CHECK:STDOUT:       symbolic_constant60000109: {inst: inst600000F2, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def10}}
+// CHECK:STDOUT:       symbolic_constant6000010A: {inst: inst60000138, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def11}}
+// CHECK:STDOUT:       symbolic_constant6000010B: {inst: inst60000132, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def12}}
+// CHECK:STDOUT:       symbolic_constant6000010C: {inst: inst60000133, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def13}}
+// CHECK:STDOUT:       symbolic_constant6000010D: {inst: inst60000134, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def14}}
+// CHECK:STDOUT:       symbolic_constant6000010E: {inst: inst60000135, kind: checked, attached: {generic: generic60000009, index: generic_inst_in_def15}}
+// CHECK:STDOUT:       symbolic_constant6000010F: {inst: inst60000115, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl7}}
+// CHECK:STDOUT:       symbolic_constant60000110: {inst: inst60000114, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl6}}
+// CHECK:STDOUT:       symbolic_constant60000111: {inst: inst600000D4, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl5}}
+// CHECK:STDOUT:       symbolic_constant60000112: {inst: inst6000006C, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant60000113: {inst: inst6000011D, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant60000114: {inst: inst60000113, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000115: {inst: inst600000D3, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant60000116: {inst: inst6000006B, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant60000117: {inst: inst6000006B, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl0}}
+// CHECK:STDOUT:       symbolic_constant60000118: {inst: inst600000D3, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl1}}
+// CHECK:STDOUT:       symbolic_constant60000119: {inst: inst60000113, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant6000011A: {inst: inst6000011D, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl3}}
+// CHECK:STDOUT:       symbolic_constant6000011B: {inst: inst6000006C, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl4}}
+// CHECK:STDOUT:       symbolic_constant6000011C: {inst: inst600000D4, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl5}}
+// CHECK:STDOUT:       symbolic_constant6000011D: {inst: inst60000114, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl6}}
+// CHECK:STDOUT:       symbolic_constant6000011E: {inst: inst60000115, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl7}}
+// CHECK:STDOUT:       symbolic_constant6000011F: {inst: inst60000118, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_decl8}}
+// CHECK:STDOUT:       symbolic_constant60000120: {inst: inst6000011B, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant60000121: {inst: inst6000011A, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_def0}}
+// CHECK:STDOUT:       symbolic_constant60000122: {inst: inst6000011B, kind: checked, attached: {generic: generic60000008, index: generic_inst_in_def1}}
+// CHECK:STDOUT:       symbolic_constant60000123: {inst: inst600000AF, kind: checked, attached: {generic: generic60000004, index: generic_inst_in_decl2}}
+// CHECK:STDOUT:       symbolic_constant60000124: {inst: inst6000015E, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000125: {inst: inst6000015E, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_def2}}
+// CHECK:STDOUT:       symbolic_constant60000126: {inst: inst60000160, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000127: {inst: inst60000160, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_def3}}
+// CHECK:STDOUT:       symbolic_constant60000128: {inst: inst60000162, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant60000129: {inst: inst60000163, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000012A: {inst: inst60000165, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000012B: {inst: inst60000162, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_def4}}
+// CHECK:STDOUT:       symbolic_constant6000012C: {inst: inst60000163, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_def5}}
+// CHECK:STDOUT:       symbolic_constant6000012D: {inst: inst60000165, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_def6}}
+// CHECK:STDOUT:       symbolic_constant6000012E: {inst: inst6000016B, kind: checked, attached: null}
+// CHECK:STDOUT:       symbolic_constant6000012F: {inst: inst6000016B, kind: checked, attached: {generic: generic60000000, index: generic_inst_in_def7}}
 // CHECK:STDOUT:   inst_blocks:
 // CHECK:STDOUT:     inst_block_empty: {}
 // CHECK:STDOUT:     exports:
@@ -2029,4 +2056,19 @@ fn Foo[T:! type](p: T*) -> (T*, ()) {
 // CHECK:STDOUT:       0:               instF
 // CHECK:STDOUT:       1:               inst60000010
 // CHECK:STDOUT:       2:               inst6000003C
+// CHECK:STDOUT:   value_stores:
+// CHECK:STDOUT:     shared_values:
+// CHECK:STDOUT:       ints:            {}
+// CHECK:STDOUT:       reals:           {}
+// CHECK:STDOUT:       floats:          {}
+// CHECK:STDOUT:       identifiers:
+// CHECK:STDOUT:         identifier0:     Foo
+// CHECK:STDOUT:         identifier1:     T
+// CHECK:STDOUT:         identifier2:     p
+// CHECK:STDOUT:         identifier3:     Copy
+// CHECK:STDOUT:         identifier4:     Op
+// CHECK:STDOUT:         identifier5:     U
+// CHECK:STDOUT:         identifier6:     V
+// CHECK:STDOUT:       strings:
+// CHECK:STDOUT:         string0:         prelude
 // CHECK:STDOUT: ...

+ 17 - 0
toolchain/check/testdata/basics/raw_sem_ir/one_file_with_textual_ir.carbon

@@ -20,6 +20,9 @@ fn Foo(n: ()) -> ((), ()) {
 // CHECK:STDOUT: ---
 // CHECK:STDOUT: filename:        one_file_with_textual_ir.carbon
 // CHECK:STDOUT: sem_ir:
+// CHECK:STDOUT:   names:
+// CHECK:STDOUT:     name0:           Foo
+// CHECK:STDOUT:     name1:           n
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     'import_ir(Cpp)':  {decl_id: inst<none>, is_export: false}
@@ -33,8 +36,12 @@ fn Foo(n: ()) -> ((), ()) {
 // CHECK:STDOUT:   functions:
 // CHECK:STDOUT:     function60000000: {name: name0, parent_scope: name_scope0, call_param_patterns_id: inst_block6000000B, call_params_id: inst_block6000000C, return_type_inst_id: inst60000020, return_form_inst_id: inst60000021, return_patterns_id: inst_block6000000A, body: [inst_block6000000F]}
 // CHECK:STDOUT:   classes:         {}
+// CHECK:STDOUT:   interfaces:      {}
+// CHECK:STDOUT:   associated_constants: {}
+// CHECK:STDOUT:   impls:           {}
 // CHECK:STDOUT:   generics:        {}
 // CHECK:STDOUT:   specifics:       {}
+// CHECK:STDOUT:   specific_interfaces: {}
 // CHECK:STDOUT:   struct_type_fields:
 // CHECK:STDOUT:     struct_type_fields_empty: {}
 // CHECK:STDOUT:   types:
@@ -54,6 +61,7 @@ fn Foo(n: ()) -> ((), ()) {
 // CHECK:STDOUT:       value_repr:      {kind: pointer, type: type(inst6000001D)}
 // CHECK:STDOUT:     'type(inst6000002B)':
 // CHECK:STDOUT:       value_repr:      {kind: none, type: type(inst60000010)}
+// CHECK:STDOUT:   facet_types:     {}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     instF:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
 // CHECK:STDOUT:     inst60000010:    {kind: TupleType, arg0: inst_block_empty, type: type(TypeType)}
@@ -205,6 +213,15 @@ fn Foo(n: ()) -> ((), ()) {
 // CHECK:STDOUT:     inst_block60000013:
 // CHECK:STDOUT:       0:               instF
 // CHECK:STDOUT:       1:               inst6000002A
+// CHECK:STDOUT:   value_stores:
+// CHECK:STDOUT:     shared_values:
+// CHECK:STDOUT:       ints:            {}
+// CHECK:STDOUT:       reals:           {}
+// CHECK:STDOUT:       floats:          {}
+// CHECK:STDOUT:       identifiers:
+// CHECK:STDOUT:         identifier0:     Foo
+// CHECK:STDOUT:         identifier1:     n
+// CHECK:STDOUT:       strings:         {}
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: --- one_file_with_textual_ir.carbon
 // CHECK:STDOUT:

+ 13 - 0
toolchain/driver/testdata/stdin.carbon

@@ -26,6 +26,7 @@
 // CHECK:STDOUT: ---
 // CHECK:STDOUT: filename:        '-'
 // CHECK:STDOUT: sem_ir:
+// CHECK:STDOUT:   names:           {}
 // CHECK:STDOUT:   import_irs:
 // CHECK:STDOUT:     'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
 // CHECK:STDOUT:     'import_ir(Cpp)':  {decl_id: inst<none>, is_export: false}
@@ -37,8 +38,12 @@
 // CHECK:STDOUT:   cpp_global_vars: {}
 // CHECK:STDOUT:   functions:       {}
 // CHECK:STDOUT:   classes:         {}
+// CHECK:STDOUT:   interfaces:      {}
+// CHECK:STDOUT:   associated_constants: {}
+// CHECK:STDOUT:   impls:           {}
 // CHECK:STDOUT:   generics:        {}
 // CHECK:STDOUT:   specifics:       {}
+// CHECK:STDOUT:   specific_interfaces: {}
 // CHECK:STDOUT:   struct_type_fields:
 // CHECK:STDOUT:     struct_type_fields_empty: {}
 // CHECK:STDOUT:   types:
@@ -50,6 +55,7 @@
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(Error)}
 // CHECK:STDOUT:     'type(inst(NamespaceType))':
 // CHECK:STDOUT:       value_repr:      {kind: copy, type: type(inst(NamespaceType))}
+// CHECK:STDOUT:   facet_types:     {}
 // CHECK:STDOUT:   insts:
 // CHECK:STDOUT:     instF:           {kind: Namespace, arg0: name_scope0, arg1: inst<none>, type: type(inst(NamespaceType))}
 // CHECK:STDOUT:   constant_values:
@@ -63,6 +69,13 @@
 // CHECK:STDOUT:     global_init:     {}
 // CHECK:STDOUT:     inst_block60000004:
 // CHECK:STDOUT:       0:               instF
+// CHECK:STDOUT:   value_stores:
+// CHECK:STDOUT:     shared_values:
+// CHECK:STDOUT:       ints:            {}
+// CHECK:STDOUT:       reals:           {}
+// CHECK:STDOUT:       floats:          {}
+// CHECK:STDOUT:       identifiers:     {}
+// CHECK:STDOUT:       strings:         {}
 // CHECK:STDOUT: ...
 // CHECK:STDOUT: --- -
 // CHECK:STDOUT:

+ 3 - 1
toolchain/sem_ir/associated_constant.h

@@ -22,7 +22,9 @@ namespace Carbon::SemIR {
 struct AssociatedConstant : public Printable<AssociatedConstant> {
   auto Print(llvm::raw_ostream& out) const -> void {
     out << "{"
-        << "name: " << name_id << ", parent_scope: " << parent_scope_id << "}";
+        << "name: " << name_id << ", parent_scope: " << parent_scope_id
+        << ", decl_id: " << decl_id << ", generic_id: " << generic_id
+        << ", default_value_id: " << default_value_id << "}";
   }
 
   // The following fields are set at the `:!` binding, when the

+ 11 - 2
toolchain/sem_ir/constant.h

@@ -85,8 +85,7 @@ struct SymbolicConstant : Printable<SymbolicConstant> {
   ConstantDependence dependence;
 
   auto Print(llvm::raw_ostream& out) const -> void {
-    out << "{inst: " << inst_id << ", generic: " << generic_id
-        << ", index: " << index << ", kind: ";
+    out << "{inst: " << inst_id << ", kind: ";
     switch (dependence) {
       case ConstantDependence::None:
         out << "<error: concrete>";
@@ -101,6 +100,12 @@ struct SymbolicConstant : Printable<SymbolicConstant> {
         out << "template";
         break;
     }
+    out << ", attached: ";
+    if (generic_id.has_value()) {
+      out << "{generic: " << generic_id << ", index: " << index << "}";
+    } else {
+      out << "null";
+    }
     out << "}";
   }
 };
@@ -142,6 +147,10 @@ class ConstantValueStore {
     return values_.GetWithDefault(inst_id, default_);
   }
 
+  auto IsAttached(ConstantId const_id) const -> bool {
+    return const_id != GetUnattachedConstant(const_id);
+  }
+
   // Sets the constant value of the given instruction, or sets that it is known
   // to not be a constant.
   auto Set(InstId inst_id, ConstantId const_id) -> void {

+ 23 - 6
toolchain/sem_ir/dump.cpp

@@ -33,7 +33,9 @@ static auto DumpConstantSummary(const File& file, ConstantId const_id)
   if (const_id.is_symbolic()) {
     out << ": " << file.constant_values().GetSymbolicConstant(const_id);
   } else if (const_id.is_concrete()) {
-    out << ": " << file.insts().Get(file.constant_values().GetInstId(const_id));
+    out << ": "
+        << file.insts().GetWithAttachedType(
+               file.constant_values().GetInstId(const_id));
   }
   return out.TakeStr();
 }
@@ -55,7 +57,7 @@ static auto DumpInstSummary(const File& file, InstId inst_id) -> std::string {
   out << inst_id;
   if (inst_id.has_value() && inst_id != InstId::InitTombstone &&
       inst_id != InstId::ImplWitnessTablePlaceholder) {
-    out << ": " << file.insts().Get(inst_id);
+    out << ": " << file.insts().GetWithAttachedType(inst_id);
   }
   return out.TakeStr();
 }
@@ -241,7 +243,7 @@ LLVM_DUMP_METHOD auto Dump(const File& file, InstId inst_id) -> std::string {
     return out.TakeStr();
   }
 
-  Inst inst = file.insts().Get(inst_id);
+  Inst inst = file.insts().GetWithAttachedType(inst_id);
 
   if (inst.arg0_and_kind().kind() == IdKind::For<EntityNameId>) {
     auto entity_name_id = EntityNameId(inst.arg0());
@@ -253,7 +255,7 @@ LLVM_DUMP_METHOD auto Dump(const File& file, InstId inst_id) -> std::string {
   if (inst.type_id().has_value()) {
     out << "\n  - type: " << Dump(file, inst.type_id());
   }
-  ConstantId const_id = file.constant_values().Get(inst_id);
+  ConstantId const_id = file.constant_values().GetAttached(inst_id);
   if (const_id.has_value()) {
     InstId const_inst_id = file.constant_values().GetInstId(const_id);
     out << "\n  - value: ";
@@ -295,8 +297,13 @@ LLVM_DUMP_METHOD auto Dump(const File& file, LocId loc_id) -> std::string {
       auto import_ir_id =
           file.import_ir_insts().Get(loc_id.import_ir_inst_id()).ir_id();
       const auto* import_file = file.import_irs().Get(import_ir_id).sem_ir;
-      out << "LocId(import from \"" << FormatEscaped(import_file->filename())
-          << "\")";
+      out << "LocId(import from ";
+      if (import_file == nullptr) {
+        out << "unknown file";
+      } else {
+        out << "\"" << FormatEscaped(import_file->filename()) << "\"";
+      }
+      out << ")";
       break;
     }
 
@@ -458,6 +465,16 @@ LLVM_DUMP_METHOD auto Dump(const File& file, TypeId type_id) -> std::string {
   InstId inst_id = file.types().GetInstId(type_id);
   out << ": " << StringifyConstantInst(file, inst_id) << "; "
       << file.insts().Get(inst_id);
+  auto const_id = file.types().GetConstantId(type_id);
+  if (const_id.is_symbolic()) {
+    if (file.constant_values().IsAttached(const_id)) {
+      out << " (attached symbolic)";
+    } else {
+      out << " (unattached symbolic)";
+    }
+  } else {
+    out << " (concrete)";
+  }
   return out.TakeStr();
 }
 

+ 8 - 0
toolchain/sem_ir/file.cpp

@@ -132,6 +132,7 @@ auto File::OutputYaml(bool include_singletons) const -> Yaml::OutputMapping {
                                  Yaml::OutputMapping::Map map) {
     map.Add("filename", filename_);
     map.Add("sem_ir", Yaml::OutputMapping([&](Yaml::OutputMapping::Map map) {
+              map.Add("names", names().OutputYaml());
               map.Add("import_irs", import_irs_.OutputYaml());
               map.Add("import_ir_insts", import_ir_insts_.OutputYaml());
               map.Add("clang_decls", clang_decls_.OutputYaml());
@@ -140,10 +141,16 @@ auto File::OutputYaml(bool include_singletons) const -> Yaml::OutputMapping {
               map.Add("cpp_global_vars", cpp_global_vars_.OutputYaml());
               map.Add("functions", functions_.OutputYaml());
               map.Add("classes", classes_.OutputYaml());
+              map.Add("interfaces", interfaces_.OutputYaml());
+              map.Add("associated_constants",
+                      associated_constants_.OutputYaml());
+              map.Add("impls", impls_.OutputYaml());
               map.Add("generics", generics_.OutputYaml());
               map.Add("specifics", specifics_.OutputYaml());
+              map.Add("specific_interfaces", specific_interfaces_.OutputYaml());
               map.Add("struct_type_fields", struct_type_fields_.OutputYaml());
               map.Add("types", types_.OutputYaml());
+              map.Add("facet_types", facet_types_.OutputYaml());
               map.Add("insts",
                       Yaml::OutputMapping([&](Yaml::OutputMapping::Map map) {
                         for (auto [id, inst] : insts_.enumerate()) {
@@ -156,6 +163,7 @@ auto File::OutputYaml(bool include_singletons) const -> Yaml::OutputMapping {
               map.Add("constant_values",
                       constant_values_.OutputYaml(include_singletons));
               map.Add("inst_blocks", inst_blocks_.OutputYaml());
+              map.Add("value_stores", value_stores_->OutputYaml());
             }));
   });
 }

+ 7 - 2
toolchain/sem_ir/generic.h

@@ -17,7 +17,10 @@ namespace Carbon::SemIR {
 // Note that this includes both checked generics and template generics.
 struct Generic : public Printable<Generic> {
   auto Print(llvm::raw_ostream& out) const -> void {
-    out << "{decl: " << decl_id << ", bindings: " << bindings_id << "}";
+    out << "{decl: " << decl_id << ", bindings: " << bindings_id
+        << ", self_specific_id: " << self_specific_id
+        << ", decl_block_id: " << decl_block_id
+        << ", definition_block_id: " << definition_block_id << "}";
   }
 
   // Returns the eval block for the specified region of the generic. This is a
@@ -69,7 +72,9 @@ class GenericStore : public ValueStore<GenericId, Generic, Tag<CheckIRId>> {
 // values for the compile-time parameters themselves.
 struct Specific : Printable<Specific> {
   auto Print(llvm::raw_ostream& out) const -> void {
-    out << "{generic: " << generic_id << ", args: " << args_id << "}";
+    out << "{generic: " << generic_id << ", args: " << args_id
+        << ", decl_block_id: " << decl_block_id
+        << ", definition_block_id: " << definition_block_id << "}";
   }
 
   // Returns true if this specific has never been resolved. Such specifics are

+ 9 - 0
toolchain/sem_ir/name.h

@@ -50,6 +50,15 @@ class NameStoreWrapper {
   // `name_id` is `None`.
   auto GetIRBaseName(NameId name_id) const -> llvm::StringRef;
 
+  auto OutputYaml() const -> Yaml::OutputMapping {
+    return Yaml::OutputMapping([&](Yaml::OutputMapping::Map map) {
+      for (auto [identifier_id, value] : identifiers_->enumerate()) {
+        map.Add(PrintToString(NameId{identifier_id.index}),
+                Yaml::OutputScalar(value));
+      }
+    });
+  }
+
  private:
   const SharedValueStores::IdentifierStore* identifiers_;
 };

+ 7 - 0
toolchain/sem_ir/specific_interface.h

@@ -19,6 +19,13 @@ struct SpecificInterface {
   InterfaceId interface_id;
   SpecificId specific_id;
 
+  friend auto operator<<(llvm::raw_ostream& out, SpecificInterface si)
+      -> llvm::raw_ostream& {
+    out << "{interface_id: " << si.interface_id
+        << ", specific_id: " << si.specific_id << "}";
+    return out;
+  }
+
   friend auto operator==(const SpecificInterface& lhs,
                          const SpecificInterface& rhs) -> bool = default;
 };

+ 16 - 1
toolchain/sem_ir/yaml_test.cpp

@@ -56,6 +56,7 @@ TEST(SemIRTest, Yaml) {
   auto type_builtin = Pair(type_id, Yaml::Mapping(_));
 
   auto file = Yaml::Mapping(ElementsAre(
+      Pair("names", Yaml::Mapping(SizeIs(2))),
       Pair("import_irs", Yaml::Mapping(SizeIs(2))),
       Pair("import_ir_insts", Yaml::Mapping(SizeIs(0))),
       Pair("clang_decls", Yaml::Mapping(SizeIs(0))),
@@ -64,10 +65,15 @@ TEST(SemIRTest, Yaml) {
       Pair("cpp_global_vars", Yaml::Mapping(SizeIs(0))),
       Pair("functions", Yaml::Mapping(SizeIs(1))),
       Pair("classes", Yaml::Mapping(SizeIs(0))),
+      Pair("interfaces", Yaml::Mapping(SizeIs(0))),
+      Pair("associated_constants", Yaml::Mapping(SizeIs(0))),
+      Pair("impls", Yaml::Mapping(SizeIs(0))),
       Pair("generics", Yaml::Mapping(SizeIs(0))),
       Pair("specifics", Yaml::Mapping(SizeIs(0))),
+      Pair("specific_interfaces", Yaml::Mapping(SizeIs(0))),
       Pair("struct_type_fields", Yaml::Mapping(SizeIs(1))),
       Pair("types", Yaml::Mapping(Each(type_builtin))),
+      Pair("facet_types", Yaml::Mapping(SizeIs(0))),
       Pair("insts", Yaml::Mapping(AllOf(
                         Each(Key(inst_id)),
                         // kind is required, other parts are optional.
@@ -104,7 +110,16 @@ TEST(SemIRTest, Yaml) {
               Pair("inst_block60000006", Yaml::Mapping(Each(Pair(_, inst_id)))),
               Pair("inst_block60000007", Yaml::Mapping(Each(Pair(_, inst_id)))),
               Pair("inst_block60000008",
-                   Yaml::Mapping(Each(Pair(_, inst_id)))))))));
+                   Yaml::Mapping(Each(Pair(_, inst_id))))))),
+      Pair("value_stores",
+           Yaml::Mapping(ElementsAre(
+               Pair("shared_values",
+                    Yaml::Mapping(ElementsAre(
+                        Pair("ints", Yaml::Mapping(SizeIs(0))),
+                        Pair("reals", Yaml::Mapping(SizeIs(0))),
+                        Pair("floats", Yaml::Mapping(SizeIs(0))),
+                        Pair("identifiers", Yaml::Mapping(SizeIs(2))),
+                        Pair("strings", Yaml::Mapping(SizeIs(0)))))))))));
 
   auto root = Yaml::Sequence(ElementsAre(Yaml::Mapping(
       ElementsAre(Pair("filename", "test.carbon"), Pair("sem_ir", file)))));