Skip to main content
Exemplar

Teach it yourself

Exemplar’s offline half running in your browser on recorded facts, checked against the engine.

What the Lab does

Replay a recorded teaching session, or change the examples and watch the rule search re-run in your browser over a recorded bank of 37 sketches.

Mode and checks

The solver and what its result was compared with.

Exhaustive solver, TypeScript, in a Web Worker

Not recomputed yet

Details
  • Press “Recompute in your browser” to re-solve every recorded sketch here and compare with the recorded engine run.

Examples

The real examples this recorded run was taught from.

Taught from Playground recordings. The run started from 7 labelled examples (3 yes, 4 no), each weighing 3. Recorded in 36.3 s. Proposer: Claude on Amazon Bedrock via the Strands agent, recorded.

  • Poster: Playground recording 01: box on the steps
    yesgiven as an examplePlayground recordinglicence: CC BY

    Playground recording 01: box on the steps

    A cardboard box sits on the snowy front steps and remains there unchanged throughout the clip, with no people or vehicles entering the view.

    31.7 s

  • Poster: Playground recording 06: box on the steps
    yesgiven as an examplePlayground recordinglicence: CC BY

    Playground recording 06: box on the steps

    A cardboard box sits motionless on the steps throughout the clip with no people or vehicles appearing, so nothing happens apart from changing light and snow.

    31.7 s

  • Poster: Playground recording 07: box seen on the steps and the porch
    yesgiven as an examplePlayground recordinglicence: CC BY

    Playground recording 07: box seen on the steps and the porch

    A cardboard box sits on the porch and a blue object near the steps stays unchanged across the clip, with no people or motion visible.

    31.7 s

  • Poster: Doorstep video, 35 to 55 s
    nogiven as an exampleCC BY video windowlicence: CC BY

    Doorstep video, 35 to 55 s

    A person in a dark jacket carrying a cardboard box walks along the sidewalk past the front walkway and steps, then exits the view to the right.

    20.0 s

  • Poster: Doorstep video, 40 to 60 s
    nogiven as an exampleCC BY video windowlicence: CC BY

    Doorstep video, 40 to 60 s

    A delivery person in a dark jacket carrying a cardboard box walks along the sidewalk toward the front steps, then leaves the view without placing the package at the door.

    20.0 s

  • Poster: Playground recording 01: cars in a parking lot
    nogiven as an examplePlayground recordingRing sandbox output

    Playground recording 01: cars in a parking lot

    Over a 21-second window, several cars are parked in the lot while a few others drive through the driveway, and no people or packages appear.

    21.8 s

  • Poster: Playground recording 01: birds at snowy feeders
    nogiven as an examplePlayground recordingRing sandbox output

    Playground recording 01: birds at snowy feeders

    A red-bellied woodpecker feeds at a snowy suet feeder while a junco and later a cardinal visit the neighbouring feeder, with no people or packages involved.

    39.6 s

Agent timeline

The recorded session, or the same loop re-run in your browser.

Loading the recorded facts…

Recomputing replays the recorded sketches through the same loop.

12 sketches12 solved8 counterexamples36.3 s

  1. Round 1proposer: strands
  2. Rule sketch proposed

    +3.6 s
    exists k: Package: holds_for >= ?d (in_zone(k, steps) or in_zone(k, porch))
  3. The solver is filling in the numbers

    +3.6 s
    exists k: Package: holds_for >= ?d (in_zone(k, steps) or in_zone(k, porch))
  4. The solver found the numbers that fit best

    +3.7 s
    exists k: Package: holds_for >= ?d (in_zone(k, steps) or in_zone(k, porch))

    d = 15margin 0.45

    76 ms; placement: slack-centre

  5. Re-checked with the evaluator

    +3.7 s
    exists k: Package: holds_for >= ?d (in_zone(k, steps) or in_zone(k, porch))

    NumPy evaluator agrees with Z3 on 7 examples (margin 0.45)

  6. Rule sketch proposed

    +5.3 s
    exists k: Package: holds_for >= ?d in_zone(k, steps)
  7. Rule sketch proposed

    +5.3 s
    exists k: Package: holds_for >= ?d in_zone(k, porch)
  8. The solver is filling in the numbers

    +7.7 s
    exists k: Package: holds_for >= ?d in_zone(k, steps)
  9. The solver found the numbers that fit best

    +7.7 s
    exists k: Package: holds_for >= ?d in_zone(k, steps)

    d = 15margin 0.45

    68 ms; placement: slack-centre

  10. Re-checked with the evaluator

    +7.7 s
    exists k: Package: holds_for >= ?d in_zone(k, steps)

    NumPy evaluator agrees with Z3 on 7 examples (margin 0.45)

  11. A labelled clip does not fit this rule

    +7.7 s
    exists k: Package: holds_for >= ?d in_zone(k, steps)
    • Playground recording 07: box seen on the steps and the porch

    The facts read from these clips disagree with their labels, so the rule does not fit them. Either the label or the reading may be off.

  12. The solver is filling in the numbers

    +7.7 s
    exists k: Package: holds_for >= ?d in_zone(k, porch)
  13. The solver found the numbers that fit best

    +8.0 s
    exists k: Package: holds_for >= ?d in_zone(k, porch)

    d = 15margin 0.45

    308 ms; placement: slack-centre

  14. Re-checked with the evaluator

    +8.0 s
    exists k: Package: holds_for >= ?d in_zone(k, porch)

    NumPy evaluator agrees with Z3 on 7 examples (margin 0.45)

  15. A labelled clip does not fit this rule

    +8.0 s
    exists k: Package: holds_for >= ?d in_zone(k, porch)
    • Playground recording 01: box on the steps
    • Playground recording 06: box on the steps

    The facts read from these clips disagree with their labels, so the rule does not fit them. Either the label or the reading may be off.

  16. Round 2proposer: strands
  17. Type check failed, sketch sent back

    +10.5 s
    exists k: Package: holds_for >= ?d in_zone(k, steps) or exists k: Package: holds_for >= ?d in_zone(k, porch)

    Error: syntax error: line 1, column 57: unexpected 'exists'; expected a formula (an atom like present(p), or not / eventually[a, b] / always[a, b] / holds_for >= d, or '(')

  18. Rule sketch proposed

    +10.5 s
    exists k: Package: always[0, ?b] (in_zone(k, steps) or in_zone(k, porch))
  19. Rule sketch proposed

    +10.5 s
    exists k: Package: eventually[0, ?b] in_zone(k, steps) and eventually[?a, ?b] (in_zone(k, steps) or in_zone(k, porch))
  20. Rule sketch proposed

    +12.8 s
    exists k: Package: holds_for >= ?d in_zone(k, steps) or holds_for >= ?d in_zone(k, porch)
  21. The solver is filling in the numbers

    +24.8 s
    exists k: Package: always[0, ?b] (in_zone(k, steps) or in_zone(k, porch))
  22. The solver found the numbers that fit best

    +24.9 s
    exists k: Package: always[0, ?b] (in_zone(k, steps) or in_zone(k, porch))

    b = 19.5margin 0.45

    41 ms; placement: slack-centre

  23. Re-checked with the evaluator

    +24.9 s
    exists k: Package: always[0, ?b] (in_zone(k, steps) or in_zone(k, porch))

    NumPy evaluator agrees with Z3 on 7 examples (margin 0.45)

  24. The solver is filling in the numbers

    +24.9 s
    exists k: Package: eventually[0, ?b] in_zone(k, steps) and eventually[?a, ?b] (in_zone(k, steps) or in_zone(k, porch))
  25. The solver found the numbers that fit best

    +25.1 s
    exists k: Package: eventually[0, ?b] in_zone(k, steps) and eventually[?a, ?b] (in_zone(k, steps) or in_zone(k, porch))

    b = 19.5a = 0margin 0.45

    204 ms; placement: slack-centre

  26. Re-checked with the evaluator

    +25.1 s
    exists k: Package: eventually[0, ?b] in_zone(k, steps) and eventually[?a, ?b] (in_zone(k, steps) or in_zone(k, porch))

    NumPy evaluator agrees with Z3 on 7 examples (margin 0.45)

  27. A labelled clip does not fit this rule

    +25.1 s
    exists k: Package: eventually[0, ?b] in_zone(k, steps) and eventually[?a, ?b] (in_zone(k, steps) or in_zone(k, porch))
    • Playground recording 07: box seen on the steps and the porch

    The facts read from these clips disagree with their labels, so the rule does not fit them. Either the label or the reading may be off.

  28. The solver is filling in the numbers

    +25.1 s
    exists k: Package: holds_for >= ?d in_zone(k, steps) or holds_for >= ?d in_zone(k, porch)
  29. The solver found the numbers that fit best

    +25.1 s
    exists k: Package: holds_for >= ?d in_zone(k, steps) or holds_for >= ?d in_zone(k, porch)

    d = 15margin 0.45

    58 ms; placement: slack-centre

  30. Re-checked with the evaluator

    +25.1 s
    exists k: Package: holds_for >= ?d in_zone(k, steps) or holds_for >= ?d in_zone(k, porch)

    NumPy evaluator agrees with Z3 on 7 examples (margin 0.45)

  31. Round 3proposer: strands
  32. Round 4proposer: strands
  33. Round 4template-library back-fill
  34. Rule sketch proposed

    +34.4 s
    exists k: Package: eventually[0, ?b] attr(k, cardboard_box)
  35. Rule sketch proposed

    +34.4 s
    exists k: Package: eventually[0, ?b] in_zone(k, porch)
  36. Rule sketch proposed

    +34.4 s
    exists k: Package: eventually[0, ?b] in_zone(k, steps)
  37. Rule sketch proposed

    +34.4 s
    exists k: Package: holds_for >= ?d attr(k, cardboard_box)
  38. Rule sketch proposed

    +34.4 s
    exists o: Object: eventually[0, ?b] attr(o, watering_can_blue)
  39. Rule sketch proposed

    +34.4 s
    exists o: Object: eventually[0, ?b] in_zone(o, steps)
  40. The solver is filling in the numbers

    +34.4 s
    exists k: Package: eventually[0, ?b] attr(k, cardboard_box)
  41. The solver found the numbers that fit best

    +34.6 s
    exists k: Package: eventually[0, ?b] attr(k, cardboard_box)

    b = 19.5margin 0.3

    192 ms; placement: slack-centre

  42. Re-checked with the evaluator

    +34.6 s
    exists k: Package: eventually[0, ?b] attr(k, cardboard_box)

    NumPy evaluator agrees with Z3 on 7 examples (margin 0.30)

  43. A labelled clip does not fit this rule

    +34.6 s
    exists k: Package: eventually[0, ?b] attr(k, cardboard_box)
    • Doorstep video, 35 to 55 s
    • Doorstep video, 40 to 60 s

    The facts read from these clips disagree with their labels, so the rule does not fit them. Either the label or the reading may be off.

  44. The solver is filling in the numbers

    +34.6 s
    exists k: Package: eventually[0, ?b] in_zone(k, porch)
  45. The solver found the numbers that fit best

    +34.6 s
    exists k: Package: eventually[0, ?b] in_zone(k, porch)

    b = 19.5margin 0.45

    60 ms; placement: slack-centre

  46. Re-checked with the evaluator

    +34.6 s
    exists k: Package: eventually[0, ?b] in_zone(k, porch)

    NumPy evaluator agrees with Z3 on 7 examples (margin 0.45)

  47. A labelled clip does not fit this rule

    +34.6 s
    exists k: Package: eventually[0, ?b] in_zone(k, porch)
    • Playground recording 01: box on the steps
    • Playground recording 06: box on the steps

    The facts read from these clips disagree with their labels, so the rule does not fit them. Either the label or the reading may be off.

  48. The solver is filling in the numbers

    +34.6 s
    exists k: Package: eventually[0, ?b] in_zone(k, steps)
  49. The solver found the numbers that fit best

    +34.7 s
    exists k: Package: eventually[0, ?b] in_zone(k, steps)

    b = 19.5margin 0.45

    52 ms; placement: slack-centre

  50. Re-checked with the evaluator

    +34.7 s
    exists k: Package: eventually[0, ?b] in_zone(k, steps)

    NumPy evaluator agrees with Z3 on 7 examples (margin 0.45)

  51. A labelled clip does not fit this rule

    +34.7 s
    exists k: Package: eventually[0, ?b] in_zone(k, steps)
    • Playground recording 07: box seen on the steps and the porch

    The facts read from these clips disagree with their labels, so the rule does not fit them. Either the label or the reading may be off.

  52. The solver is filling in the numbers

    +34.7 s
    exists k: Package: holds_for >= ?d attr(k, cardboard_box)
  53. The solver found the numbers that fit best

    +34.8 s
    exists k: Package: holds_for >= ?d attr(k, cardboard_box)

    d = 24margin 0.3

    143 ms; placement: slack-centre

  54. Re-checked with the evaluator

    +34.8 s
    exists k: Package: holds_for >= ?d attr(k, cardboard_box)

    NumPy evaluator agrees with Z3 on 7 examples (margin 0.30)

  55. The solver is filling in the numbers

    +34.8 s
    exists o: Object: eventually[0, ?b] attr(o, watering_can_blue)
  56. The solver found the numbers that fit best

    +34.9 s
    exists o: Object: eventually[0, ?b] attr(o, watering_can_blue)

    b = 19.5margin 0.3

    37 ms; placement: slack-centre

  57. Re-checked with the evaluator

    +34.9 s
    exists o: Object: eventually[0, ?b] attr(o, watering_can_blue)

    NumPy evaluator agrees with Z3 on 7 examples (margin 0.30)

  58. A labelled clip does not fit this rule

    +34.9 s
    exists o: Object: eventually[0, ?b] attr(o, watering_can_blue)
    • Playground recording 01: box on the steps
    • Playground recording 06: box on the steps

    The facts read from these clips disagree with their labels, so the rule does not fit them. Either the label or the reading may be off.

  59. The solver is filling in the numbers

    +34.9 s
    exists o: Object: eventually[0, ?b] in_zone(o, steps)
  60. The solver found the numbers that fit best

    +34.9 s
    exists o: Object: eventually[0, ?b] in_zone(o, steps)

    b = 19.5margin 0.1

    34 ms; placement: slack-centre

  61. Re-checked with the evaluator

    +34.9 s
    exists o: Object: eventually[0, ?b] in_zone(o, steps)

    NumPy evaluator agrees with Z3 on 7 examples (margin 0.10)

  62. A labelled clip does not fit this rule

    +34.9 s
    exists o: Object: eventually[0, ?b] in_zone(o, steps)
    • Playground recording 01: box on the steps
    • Playground recording 06: box on the steps

    The facts read from these clips disagree with their labels, so the rule does not fit them. Either the label or the reading may be off.

  63. Candidate rules ready

    +34.9 s

    6 candidate rule(s), ranked by MDL

  64. One question is ready

    +36.3 s

    your candidate rules disagree most on one unlabelled clip

  65. Done

    +36.3 s

Candidates

Each with its recorded rank in the recorded run.

Candidate rules, best first. Choose one to see it below.

Selected rule

English, rule text, filled blanks and margin.

recorded rank: 3rd of 6Chosen by the user and deployed

There is a package k such that (k is on the steps or k is on the porch) continuously for at least 15 s.

exists k: Package: holds_for >= 15 (in_zone(k, steps) or in_zone(k, porch))
Blank ?d filled with
15 s
Margin
0.45
Description length
29.96
Examples it misses
0

Backtest

The selected rule scored on the whole library, by class. Select a clip to see its frames and the rule’s witness.

Calibration

The recorded false-alarm bound, or an exploratory recalibration marked as such.