Skip to content

Self interpreters don't work, whose bug is it? #3

@pimlu

Description

@pimlu

Problem

Running all the self-interpeters I've tried have failed to work in practice. Obviously there's two scenarios: my interpreter is broken, or their self-interpreter is broken. (or both...)

I've exhaustively tried all of them without success. Here is the status of each: (list comes from this SO question)

  • 48-Lomont - interpreter encounters an infinite loop at the state 7323258667244294114351733448898472761258667244411711
  • 84-Amadeus - works for a single fraction, 2 fractions hits an infinite loop (this is demo2 in the Haskell code)
  • 1779-Beder - assumed working, my program isn't smart enough to run this beast (never terminates, even on the smallest input I could construct)

Solution ideas

My problem is, my interpreter works on every program I can construct or run normally, but fails on a couple programs too large to run anywhere else. I want to prove or exclude my own interpreter as the root cause, but I'm not sure how yet.

The next thing I was thinking of was a fuzzer, but it seems unlikely to randomly generate useful control structures representative of a 50-fraction program, at least with a naive fuzzer.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions