{
  "status": "passed",
  "frontend": {
    "result": [
      7,
      [
        7,
        100
      ]
    ],
    "heap": {
      "1": 7
    },
    "events": [
      [
        "alloc",
        1,
        4
      ],
      [
        "load",
        1,
        4
      ],
      [
        "store",
        1,
        5
      ],
      [
        "load",
        1,
        5
      ],
      [
        "load",
        1,
        5
      ],
      [
        "store",
        1,
        7
      ],
      [
        "load",
        1,
        7
      ],
      [
        "load",
        1,
        7
      ]
    ],
    "tokens": [
      [
        "LET",
        "let",
        0,
        3
      ],
      [
        "ID",
        "x",
        4,
        5
      ],
      [
        "=",
        "=",
        6,
        7
      ],
      [
        "REF",
        "ref",
        8,
        11
      ],
      [
        "INT",
        "4",
        12,
        13
      ],
      [
        "IN",
        "in",
        14,
        16
      ],
      [
        "LET",
        "let",
        17,
        20
      ],
      [
        "ID",
        "make",
        21,
        25
      ],
      [
        "=",
        "=",
        26,
        27
      ],
      [
        "FUN",
        "fun",
        28,
        31
      ],
      [
        "ID",
        "u",
        32,
        33
      ],
      [
        "->",
        "->",
        34,
        36
      ],
      [
        "(",
        "(",
        37,
        38
      ],
      [
        "FUN",
        "fun",
        38,
        41
      ],
      [
        "ID",
        "d",
        42,
        43
      ],
      [
        "->",
        "->",
        44,
        46
      ],
      [
        "(",
        "(",
        47,
        48
      ],
      [
        "ID",
        "x",
        48,
        49
      ],
      [
        ":=",
        ":=",
        50,
        52
      ],
      [
        "!",
        "!",
        53,
        54
      ],
      [
        "ID",
        "x",
        54,
        55
      ],
      [
        "+",
        "+",
        56,
        57
      ],
      [
        "ID",
        "d",
        58,
        59
      ],
      [
        ";",
        ";",
        59,
        60
      ],
      [
        "!",
        "!",
        61,
        62
      ],
      [
        "ID",
        "x",
        62,
        63
      ],
      [
        ")",
        ")",
        63,
        64
      ],
      [
        ",",
        ",",
        64,
        65
      ],
      [
        "FUN",
        "fun",
        66,
        69
      ],
      [
        "ID",
        "v",
        70,
        71
      ],
      [
        "->",
        "->",
        72,
        74
      ],
      [
        "!",
        "!",
        75,
        76
      ],
      [
        "ID",
        "x",
        76,
        77
      ],
      [
        ")",
        ")",
        77,
        78
      ],
      [
        "IN",
        "in",
        79,
        81
      ],
      [
        "LET",
        "let",
        82,
        85
      ],
      [
        "ID",
        "p",
        86,
        87
      ],
      [
        "=",
        "=",
        88,
        89
      ],
      [
        "ID",
        "make",
        90,
        94
      ],
      [
        "(",
        "(",
        94,
        95
      ],
      [
        "INT",
        "0",
        95,
        96
      ],
      [
        ")",
        ")",
        96,
        97
      ],
      [
        "IN",
        "in",
        98,
        100
      ],
      [
        "LET",
        "let",
        101,
        104
      ],
      [
        "ID",
        "f",
        105,
        106
      ],
      [
        "=",
        "=",
        107,
        108
      ],
      [
        "FST",
        "fst",
        109,
        112
      ],
      [
        "ID",
        "p",
        113,
        114
      ],
      [
        "IN",
        "in",
        115,
        117
      ],
      [
        "LET",
        "let",
        118,
        121
      ],
      [
        "ID",
        "g",
        122,
        123
      ],
      [
        "=",
        "=",
        124,
        125
      ],
      [
        "SND",
        "snd",
        126,
        129
      ],
      [
        "ID",
        "p",
        130,
        131
      ],
      [
        "IN",
        "in",
        132,
        134
      ],
      [
        "LET",
        "let",
        135,
        138
      ],
      [
        "ID",
        "x",
        139,
        140
      ],
      [
        "=",
        "=",
        141,
        142
      ],
      [
        "INT",
        "100",
        143,
        146
      ],
      [
        "IN",
        "in",
        147,
        149
      ],
      [
        "(",
        "(",
        150,
        151
      ],
      [
        "ID",
        "f",
        151,
        152
      ],
      [
        "(",
        "(",
        152,
        153
      ],
      [
        "(",
        "(",
        153,
        154
      ],
      [
        "ID",
        "f",
        154,
        155
      ],
      [
        "(",
        "(",
        155,
        156
      ],
      [
        "INT",
        "1",
        156,
        157
      ],
      [
        ")",
        ")",
        157,
        158
      ],
      [
        ";",
        ";",
        158,
        159
      ],
      [
        "INT",
        "2",
        160,
        161
      ],
      [
        ")",
        ")",
        161,
        162
      ],
      [
        ")",
        ")",
        162,
        163
      ],
      [
        ",",
        ",",
        163,
        164
      ],
      [
        "(",
        "(",
        165,
        166
      ],
      [
        "ID",
        "g",
        166,
        167
      ],
      [
        "(",
        "(",
        167,
        168
      ],
      [
        "INT",
        "0",
        168,
        169
      ],
      [
        ")",
        ")",
        169,
        170
      ],
      [
        ",",
        ",",
        170,
        171
      ],
      [
        "ID",
        "x",
        172,
        173
      ],
      [
        ")",
        ")",
        173,
        174
      ],
      [
        ")",
        ")",
        174,
        175
      ],
      [
        "EOF",
        "",
        175,
        175
      ]
    ],
    "lex_cost": {
      "character_attempts": 307,
      "rule_attempts": 2626,
      "accepted_characters": 175
    },
    "declarations": [
      [
        1,
        "x"
      ],
      [
        2,
        "make"
      ],
      [
        3,
        "u"
      ],
      [
        4,
        "d"
      ],
      [
        5,
        "v"
      ],
      [
        6,
        "p"
      ],
      [
        7,
        "f"
      ],
      [
        8,
        "g"
      ],
      [
        9,
        "x"
      ]
    ],
    "binding_decisions": [
      [
        "x",
        1,
        [
          48,
          49
        ]
      ],
      [
        "x",
        1,
        [
          54,
          55
        ]
      ],
      [
        "d",
        4,
        [
          58,
          59
        ]
      ],
      [
        "x",
        1,
        [
          62,
          63
        ]
      ],
      [
        "x",
        1,
        [
          76,
          77
        ]
      ],
      [
        "make",
        2,
        [
          90,
          94
        ]
      ],
      [
        "p",
        6,
        [
          113,
          114
        ]
      ],
      [
        "p",
        6,
        [
          130,
          131
        ]
      ],
      [
        "f",
        7,
        [
          151,
          152
        ]
      ],
      [
        "f",
        7,
        [
          154,
          155
        ]
      ],
      [
        "g",
        8,
        [
          166,
          167
        ]
      ],
      [
        "x",
        9,
        [
          172,
          173
        ]
      ]
    ],
    "resolved": [
      "let",
      1,
      [
        "ref",
        [
          "num",
          4
        ]
      ],
      [
        "let",
        2,
        [
          "fun",
          3,
          [
            "pair",
            [
              "fun",
              4,
              [
                "seq",
                [
                  "store",
                  [
                    "var",
                    1,
                    [
                      48,
                      49
                    ]
                  ],
                  [
                    "add",
                    [
                      "load",
                      [
                        "var",
                        1,
                        [
                          54,
                          55
                        ]
                      ]
                    ],
                    [
                      "var",
                      4,
                      [
                        58,
                        59
                      ]
                    ]
                  ]
                ],
                [
                  "load",
                  [
                    "var",
                    1,
                    [
                      62,
                      63
                    ]
                  ]
                ]
              ]
            ],
            [
              "fun",
              5,
              [
                "load",
                [
                  "var",
                  1,
                  [
                    76,
                    77
                  ]
                ]
              ]
            ]
          ]
        ],
        [
          "let",
          6,
          [
            "call",
            [
              "var",
              2,
              [
                90,
                94
              ]
            ],
            [
              "num",
              0
            ]
          ],
          [
            "let",
            7,
            [
              "fst",
              [
                "var",
                6,
                [
                  113,
                  114
                ]
              ]
            ],
            [
              "let",
              8,
              [
                "snd",
                [
                  "var",
                  6,
                  [
                    130,
                    131
                  ]
                ]
              ],
              [
                "let",
                9,
                [
                  "num",
                  100
                ],
                [
                  "pair",
                  [
                    "call",
                    [
                      "var",
                      7,
                      [
                        151,
                        152
                      ]
                    ],
                    [
                      "seq",
                      [
                        "call",
                        [
                          "var",
                          7,
                          [
                            154,
                            155
                          ]
                        ],
                        [
                          "num",
                          1
                        ]
                      ],
                      [
                        "num",
                        2
                      ]
                    ]
                  ],
                  [
                    "pair",
                    [
                      "call",
                      [
                        "var",
                        8,
                        [
                          166,
                          167
                        ]
                      ],
                      [
                        "num",
                        0
                      ]
                    ],
                    [
                      "var",
                      9,
                      [
                        172,
                        173
                      ]
                    ]
                  ]
                ]
              ]
            ]
          ]
        ]
      ]
    ],
    "anf": [
      "let",
      "t1",
      [
        "ref",
        [
          "num",
          4
        ]
      ],
      [
        "let",
        1,
        [
          "var",
          "t1"
        ],
        [
          "let",
          2,
          [
            "fun",
            3,
            [
              "let",
              "t7",
              [
                "pair",
                [
                  "fun",
                  4,
                  [
                    "let",
                    "t2",
                    [
                      "load",
                      [
                        "var",
                        1,
                        [
                          54,
                          55
                        ]
                      ]
                    ],
                    [
                      "let",
                      "t3",
                      [
                        "add",
                        [
                          "var",
                          "t2"
                        ],
                        [
                          "var",
                          4,
                          [
                            58,
                            59
                          ]
                        ]
                      ],
                      [
                        "let",
                        "t4",
                        [
                          "store",
                          [
                            "var",
                            1,
                            [
                              48,
                              49
                            ]
                          ],
                          [
                            "var",
                            "t3"
                          ]
                        ],
                        [
                          "let",
                          "t5",
                          [
                            "load",
                            [
                              "var",
                              1,
                              [
                                62,
                                63
                              ]
                            ]
                          ],
                          [
                            "ret",
                            [
                              "var",
                              "t5"
                            ]
                          ]
                        ]
                      ]
                    ]
                  ]
                ],
                [
                  "fun",
                  5,
                  [
                    "let",
                    "t6",
                    [
                      "load",
                      [
                        "var",
                        1,
                        [
                          76,
                          77
                        ]
                      ]
                    ],
                    [
                      "ret",
                      [
                        "var",
                        "t6"
                      ]
                    ]
                  ]
                ]
              ],
              [
                "ret",
                [
                  "var",
                  "t7"
                ]
              ]
            ]
          ],
          [
            "let",
            "t8",
            [
              "call",
              [
                "var",
                2,
                [
                  90,
                  94
                ]
              ],
              [
                "num",
                0
              ]
            ],
            [
              "let",
              6,
              [
                "var",
                "t8"
              ],
              [
                "let",
                "t9",
                [
                  "fst",
                  [
                    "var",
                    6,
                    [
                      113,
                      114
                    ]
                  ]
                ],
                [
                  "let",
                  7,
                  [
                    "var",
                    "t9"
                  ],
                  [
                    "let",
                    "t10",
                    [
                      "snd",
                      [
                        "var",
                        6,
                        [
                          130,
                          131
                        ]
                      ]
                    ],
                    [
                      "let",
                      8,
                      [
                        "var",
                        "t10"
                      ],
                      [
                        "let",
                        9,
                        [
                          "num",
                          100
                        ],
                        [
                          "let",
                          "t11",
                          [
                            "call",
                            [
                              "var",
                              7,
                              [
                                154,
                                155
                              ]
                            ],
                            [
                              "num",
                              1
                            ]
                          ],
                          [
                            "let",
                            "t12",
                            [
                              "call",
                              [
                                "var",
                                7,
                                [
                                  151,
                                  152
                                ]
                              ],
                              [
                                "num",
                                2
                              ]
                            ],
                            [
                              "let",
                              "t13",
                              [
                                "call",
                                [
                                  "var",
                                  8,
                                  [
                                    166,
                                    167
                                  ]
                                ],
                                [
                                  "num",
                                  0
                                ]
                              ],
                              [
                                "let",
                                "t14",
                                [
                                  "pair",
                                  [
                                    "var",
                                    "t13"
                                  ],
                                  [
                                    "var",
                                    9,
                                    [
                                      172,
                                      173
                                    ]
                                  ]
                                ],
                                [
                                  "let",
                                  "t15",
                                  [
                                    "pair",
                                    [
                                      "var",
                                      "t12"
                                    ],
                                    [
                                      "var",
                                      "t14"
                                    ]
                                  ],
                                  [
                                    "ret",
                                    [
                                      "var",
                                      "t15"
                                    ]
                                  ]
                                ]
                              ]
                            ]
                          ]
                        ]
                      ]
                    ]
                  ]
                ]
              ]
            ]
          ]
        ]
      ]
    ],
    "code": {
      "L2": [
        4,
        [
          1
        ],
        [
          "let",
          "t2",
          [
            "load",
            [
              "var",
              1,
              [
                54,
                55
              ]
            ]
          ],
          [
            "let",
            "t3",
            [
              "add",
              [
                "var",
                "t2"
              ],
              [
                "var",
                4,
                [
                  58,
                  59
                ]
              ]
            ],
            [
              "let",
              "t4",
              [
                "store",
                [
                  "var",
                  1,
                  [
                    48,
                    49
                  ]
                ],
                [
                  "var",
                  "t3"
                ]
              ],
              [
                "let",
                "t5",
                [
                  "load",
                  [
                    "var",
                    1,
                    [
                      62,
                      63
                    ]
                  ]
                ],
                [
                  "ret",
                  [
                    "var",
                    "t5"
                  ]
                ]
              ]
            ]
          ]
        ]
      ],
      "L3": [
        5,
        [
          1
        ],
        [
          "let",
          "t6",
          [
            "load",
            [
              "var",
              1,
              [
                76,
                77
              ]
            ]
          ],
          [
            "ret",
            [
              "var",
              "t6"
            ]
          ]
        ]
      ],
      "L1": [
        3,
        [
          1
        ],
        [
          "let",
          "t7",
          [
            "pair",
            [
              "cc",
              "L2",
              [
                [
                  "var",
                  1
                ]
              ]
            ],
            [
              "cc",
              "L3",
              [
                [
                  "var",
                  1
                ]
              ]
            ]
          ],
          [
            "ret",
            [
              "var",
              "t7"
            ]
          ]
        ]
      ]
    },
    "costs": [
      {
        "stage": "source",
        "ast_evaluations": 53,
        "environment_entries_copied": 27,
        "event_count": 8
      },
      {
        "stage": "resolved",
        "ast_evaluations": 53,
        "environment_entries_copied": 27,
        "event_count": 8
      },
      {
        "stage": "anf",
        "ast_evaluations": 90,
        "environment_entries_copied": 175,
        "event_count": 8
      },
      {
        "stage": "explicit_environment",
        "ast_evaluations": 93,
        "environment_entries_copied": 145,
        "event_count": 8
      }
    ]
  },
  "backtracking": [
    [
      1,
      1
    ],
    [
      2,
      3
    ],
    [
      3,
      6
    ],
    [
      4,
      10
    ],
    [
      5,
      15
    ],
    [
      6,
      21
    ],
    [
      7,
      28
    ],
    [
      8,
      36
    ]
  ],
  "lifting": {
    "need": {
      "f": [
        "x"
      ],
      "g": [
        "x"
      ],
      "h": [
        "x"
      ]
    },
    "cost": {
      "rounds_including_stable": 3,
      "edge_scans": 9,
      "copied_set_entries": 6,
      "union_input_entries": 6,
      "set_equality_input_entries_upper_bound": 14
    }
  },
  "tail": {
    "value": 6,
    "tail_transfers": 3,
    "max_sum_frames": 1,
    "frame_bytes": 48,
    "ordinary_frames": 4,
    "ordinary_bytes": 192,
    "returned_fp": 8192,
    "returned_sp": 8160,
    "returned_S": 55,
    "trace": [
      [
        3,
        0,
        8144,
        8112,
        8192,
        "main.after_sum",
        55
      ],
      [
        2,
        3,
        8144,
        8112,
        8192,
        "main.after_sum",
        55
      ],
      [
        1,
        5,
        8144,
        8112,
        8192,
        "main.after_sum",
        55
      ],
      [
        0,
        6,
        8144,
        8112,
        8192,
        "main.after_sum",
        55
      ]
    ]
  },
  "link": {
    "layout": {
      "A.text": 4096,
      "A.data": 8192,
      "B.text": 4112,
      "B.data": 8200
    },
    "globals": {
      "main": 4096,
      "inc": 4112,
      "counter": 8200
    },
    "locals": {
      "A.scratch": 8196,
      "B.scratch": 8204
    },
    "patches": [
      {
        "object": "A",
        "section": "text",
        "offset": 2,
        "P": 4098,
        "S": 4112,
        "A": -2,
        "value": 12,
        "bytes": "0c00"
      },
      {
        "object": "A",
        "section": "data",
        "offset": 0,
        "P": 8192,
        "S": 8200,
        "A": 4,
        "value": 8204,
        "bytes": "0c200000"
      },
      {
        "object": "B",
        "section": "text",
        "offset": 2,
        "P": 4114,
        "S": 4096,
        "A": -2,
        "value": -20,
        "bytes": "ecff"
      }
    ],
    "stored_section_bytes": 36,
    "region_spans": {
      "text": 24,
      "data": 16
    }
  },
  "call_targets": [
    4112,
    4096
  ],
  "rc": {
    "final_heap": {},
    "cycle_counts": {
      "X": 1,
      "Y": 1
    },
    "operations": 11,
    "validation_slots": 10,
    "events": [
      [
        "alloc",
        "P",
        2
      ],
      [
        "alloc",
        "C",
        0
      ],
      [
        "replace",
        "('P', 0)",
        null,
        "C"
      ],
      [
        "replace",
        "('P', 1)",
        null,
        "C"
      ],
      [
        "replace",
        "r",
        "P",
        null
      ],
      [
        "delete_edge",
        "P",
        "C"
      ],
      [
        "delete_edge",
        "P",
        "C"
      ],
      [
        "free",
        "P"
      ],
      [
        "same",
        "t"
      ],
      [
        "replace",
        "t",
        "C",
        null
      ],
      [
        "free",
        "C"
      ]
    ]
  },
  "minor": {
    "mapping": {
      "104": 200,
      "120": 216
    },
    "live_bytes": 32,
    "kernel_operations": 8,
    "preflight_words_total": 14
  },
  "minor_second": {
    "mapping": {},
    "live_bytes": 0,
    "kernel_operations": 2,
    "preflight_words_total": 25
  },
  "negative_tests": [
    "scope leak",
    "nonrecursive self-reference",
    "wrong PC addend",
    "relocation overflow atomicity",
    "RC count overflow atomicity",
    "missing write barrier",
    "minor capacity failure atomicity"
  ],
  "model": "CS03b teaching models; no native executable or full dynamic loader",
  "source": "let x = ref 4 in\nlet make = fun u -> (fun d -> (x := !x + d; !x), fun v -> !x) in\nlet p = make(0) in\nlet f = fst p in\nlet g = snd p in\nlet x = 100 in\n(f((f(1); 2)), (g(0), x))"
}
