(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Wolfram 15.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       154,          7]
NotebookDataLength[    135181,       3299]
NotebookOptionsPosition[    119203,       3019]
NotebookOutlinePosition[    122168,       3081]
CellTagsIndexPosition[    122089,       3076]
WindowTitle->CandidateSweep
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[GridBox[{
   {GridBox[{
      {
       ItemBox[Cell[BoxData[
         RowBox[{
          TemplateBox[{12},
           "Spacer1"], Cell[
          "WOLFRAM INSTITUTE/ PUZZLES SYMBOL", "PacletNameCell",
           TextAlignment->Center,ExpressionUUID->
           "3be2e8cb-97a1-402c-b5ed-7b93c057420b"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "7b53a173-0716-401f-a0cc-89eef4812bf2"],
        Background->LightDarkSwitched[
          RGBColor[0.490196, 0.576471, 0.690196]],
        ItemSize->Full], ""}
     },
     GridBoxAlignment->{"Rows" -> {{Center}}},
     GridBoxItemSize->{"Columns" -> {Full, 
         Scaled[0.02]}, "Rows" -> {{2.5}}}], Cell[TextData[{
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "See Also",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "a479457d-f939-4e52-aa7f-b5938e556cbc"]
         }],ExpressionUUID->"0c6e81a1-bc66-4f61-b988-db8388cad83f"],
         StripOnInput->False],{
        StyleBox[
          "\"SweepCheckpoint\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/SweepCheckpoint"], 
         StyleBox[
          "\"CandidateEnumeration\"", "SeeAlsoRelated", StripOnInput -> 
           False] :> Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/CandidateEnumeration"], 
         StyleBox[
          "\"SearchLedger\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/SearchLedger"], 
         StyleBox[
          "\"SearchLedgerFilter\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/SearchLedgerFilter"], 
         StyleBox[
          "\"WordlistCandidates\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/WordlistCandidates"], 
         StyleBox[
          "\"CandidateFingerprint\"", "SeeAlsoRelated", StripOnInput -> 
           False] :> Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/CandidateFingerprint"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"SeeAlso"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "7134ac6f-5cb7-40df-bdb7-0594e52bfc25"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "Related Guides",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "0f8905b9-3243-41c9-82d7-9953e70b9be8"]
         }],ExpressionUUID->"c484bd6c-37aa-462b-bedc-6882f61a9b58"],
         StripOnInput->False],{
        "\"Search\"" :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/guide/Search"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"MoreAbout"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "a03bb3a1-1592-49cc-a540-4926e5890607"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "URL",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "1799bc83-8d85-441e-80d3-92714c388603"]
         }],ExpressionUUID->"7ce573a2-b14b-4ddf-9029-d421b20257fa"],
         StripOnInput->False],{
        "\"WolframInstitute/Puzzles/ref/CandidateSweep\"" :> None, 
         "\"Copy Wolfram Documentation Center URL\"" :> 
         CopyToClipboard["WolframInstitute/Puzzles/ref/CandidateSweep"], 
         Delimiter, "\"Copy web URL\"" :> 
         Module[{DocumentationSearch`Private`nb$}, 
           DocumentationSearch`Private`nb$ = 
            NotebookPut[
             Notebook[{
               Cell[BoxData[
                 MakeBoxes[
                  Hyperlink[
                   "http://reference.wolfram.com/language/WolframInstitute/\
Puzzles/ref/CandidateSweep.html"], StandardForm]], "Input", TextClipboardType -> 
                 "PlainText"]}, Visible -> False]]; 
           SelectionMove[DocumentationSearch`Private`nb$, All, Notebook]; 
           FrontEndTokenExecute[DocumentationSearch`Private`nb$, "Copy"]; 
           NotebookClose[DocumentationSearch`Private`nb$]; Null], 
         "\"Go to web URL\"" :> 
         FrontEndExecute[{
           NotebookLocate[{
             URL[If[TrueQ[False], 
                 "http://reference.wolfram.com/system-modeler/", 
                 "http://reference.wolfram.com/language/"] <> 
               "WolframInstitute/Puzzles/ref/CandidateSweep" <> ".html"], 
              None}]}]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"URLMenu"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "56ce9736-d4fb-4b9b-971e-76652ee25efb"]
    }], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "7f7bc23d-569e-4370-9942-7596d5355f15"]}
  }]], "AnchorBarGrid",
 CellID->1,ExpressionUUID->"a406d8e1-cea2-4b13-82f9-68211a028e3d"],

Cell["WolframInstitute`Puzzles`", "ContextNameCell",ExpressionUUID->"854571e9-2753-40ca-b6da-7d715a742cdb"],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {Cell[TextData[{
     Cell[
     "CandidateSweep", "ObjectName",ExpressionUUID->
      "c0ef12a9-daf9-491b-8a28-1f7b36ca3483"],
     Cell[BoxData[
      TemplateBox[{8},
       "Spacer1"]],ExpressionUUID->"6b1e5b68-0175-41fb-a67d-de1cc2ab3594"],
     Cell[BoxData[
     ""], "ObjectNameTranslation",ExpressionUUID->
      "32e99e25-87b1-469e-837d-e54475606a5b"]
    }],ExpressionUUID->"144b18ba-abb9-4235-b35b-80a600b254fc"], 
    "\[SpanFromLeft]"}
  }]], "ObjectNameGrid",ExpressionUUID->"464ca88e-2a9a-4be5-9813-\
097abeec4578"],

Cell[BoxData[GridBox[{
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["CandidateSweep"]], 
         "paclet:WolframInstitute/Puzzles/ref/CandidateSweep", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       RowBox[{
        StyleBox["enum", "TI"], ",", " ", 
        StyleBox["oracle", "TI"]}], "]"}]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "aa48de73-7e87-4a5a-b3c1-546d3c20a03b"],
     "\[LineSeparator]",
     "tests every candidate of a ",
     Cell[BoxData[
      TemplateBox[{
        Cell[
         TextData["CandidateEnumeration"]], 
        "paclet:WolframInstitute/Puzzles/ref/CandidateEnumeration", 
        "WolframInstitute/Puzzles Package Symbol"},
       "PackageLink",
       BaseStyle->"InlineFormula"]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "26b87c04-c60d-43bd-8ca0-632123871343"],
     " with an oracle and gives an Association reporting the hits, how many \
candidates were tested and skipped, the index reached, whether the sweep is \
complete, and why it stopped."
    }],ExpressionUUID->"fab3280a-25a2-4a83-986d-21ba6f3b909b"]},
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["CandidateSweep"]], 
         "paclet:WolframInstitute/Puzzles/ref/CandidateSweep", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       RowBox[{
        StyleBox["enum", "TI"], ",", " ", 
        StyleBox["oracle", "TI"], ",", " ", 
        RowBox[{"\"\<Checkpoint\>\"", " ", "->", 
         " ", "\"\<\!\(\*StyleBox[\"file\", \"TI\"]\)\>\""}]}], "]"}]], 
      "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "cde59def-7055-48b8-af6a-e04b519fcc9f"],
     "\[LineSeparator]",
     "writes progress to a JSON file after every chunk and resumes from it if \
it is already there."
    }],ExpressionUUID->"6b4388c6-34a1-4308-96fc-018abafe29bd"]},
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["CandidateSweep"]], 
         "paclet:WolframInstitute/Puzzles/ref/CandidateSweep", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       RowBox[{
        StyleBox["enum", "TI"], ",", " ", 
        StyleBox["oracle", "TI"], ",", " ", 
        RowBox[{"\"\<Ledger\>\"", " ", "->", " ", 
         StyleBox["ledger", "TI"]}], ",", " ", 
        RowBox[{"\"\<Target\>\"", " ", "->", 
         " ", "\"\<\!\(\*StyleBox[\"target\", \"TI\"]\)\>\""}]}], "]"}]], 
      "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "67535170-722a-4f1d-9fbc-baf6ec447d84"],
     "\[LineSeparator]",
     "drops candidates a ",
     Cell[BoxData[
      TemplateBox[{
        Cell[
         TextData["SearchLedger"]], 
        "paclet:WolframInstitute/Puzzles/ref/SearchLedger", 
        "WolframInstitute/Puzzles Package Symbol"},
       "PackageLink",
       BaseStyle->"InlineFormula"]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "161d0c0c-a8b6-4601-8138-892a69b7b2d3"],
     " already records against the target, and records the ones it tests."
    }],ExpressionUUID->"78529194-7545-4ad4-97b7-c9beafdd8973"]}
  }]], "Usage",ExpressionUUID->"6aecc68d-0cb7-4b1c-a708-39dbf87e8887"]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[Cell[BoxData[Cell[TextData[{
  Cell[BoxData[
   DynamicBox[ToBoxes[
     If[CurrentValue[
        EvaluationCell[], "CellGroupOpen"] =!= Closed, 
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], 
      Rotate[
       Style[
        Graphics[{
          Thickness[0.18], 
          RGBColor[0.8509803921568627, 0.396078431372549, 0], 
          Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
         PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
        0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
    ImageSizeCache->{
     13.600000000000001`, {-0.1685058593749993, 13.768505859375}}]],
   ExpressionUUID->"0a3cc3cb-fd8f-41ee-91ae-88f6cd10b0c7"],
  Cell[BoxData[
   TemplateBox[{1},
    "Spacer1"]],ExpressionUUID->"c6e218e0-6e0a-4a32-a851-31bf205c55d9"],
  "Details and Options"
 }], "NotesFrameText",ExpressionUUID->
  "1bb2c103-cf49-4609-b435-e692114dbbec"]],ExpressionUUID->"558ee924-6201-\
4d48-ba42-9726901498c2"]], "NotesSection",
 ShowGroupOpener->"Thumbnail",
 WholeCellGroupOpener->True,
 CellGroupingRules->{"SectionGrouping", 50},
 CacheGraphics->False,
 CellID->1346274520,ExpressionUUID->"f67e9250-8f03-4f02-86bc-6f9deeb51bad"],

Cell[TextData[{
 "The oracle takes one candidate and gives ",
 Cell[BoxData["True"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "26f362f7-d3e4-43c5-9ec2-62efbe8c8bf6"],
 " for a hit. Anything other than ",
 Cell[BoxData["True"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "7bd844aa-6c07-43e4-a3e2-c1433b8c2c9d"],
 " is not a hit."
}], "Notes",ExpressionUUID->"9d2ea737-c525-447e-9fc4-2a7460f61971"],

Cell[TextData[{
 "With ",
 Cell[BoxData[
  RowBox[{"\<\"BatchOracle\"\>", " ", "->", " ", "True"}]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "550e1769-b384-45ac-9f1a-655d7015c76c"],
 " the oracle instead takes a list of candidates and gives a list of \
booleans, which is the shape a compiled batch verifier has."
}], "Notes",ExpressionUUID->"338c7bc1-bfa3-4339-984b-ac1c970ade6b"],

Cell[TextData[{
 "The result has keys ",
 Cell[BoxData["\<\"Hits\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "c6f97967-aca2-4d65-a6e9-861952d67d3c"],
 ", ",
 Cell[BoxData["\<\"HitIndices\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "6c09eaea-6012-4182-9b60-cdb8f03a10cb"],
 ", ",
 Cell[BoxData["\<\"Tested\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "f54ec00d-7227-4431-a586-31216a2d10ba"],
 ", ",
 Cell[BoxData["\<\"Skipped\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "c808ae57-ff2b-4dfa-bcde-b1787c16a27b"],
 ", ",
 Cell[BoxData["\<\"Index\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "a6d7d5ce-8681-4ba8-8f69-c4b5862b960d"],
 ", ",
 Cell[BoxData["\<\"Length\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "74e6a413-fdc5-4f1f-a378-6dd4a1ddda8a"],
 ", ",
 Cell[BoxData["\<\"Complete\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "a44dad74-b07b-4882-81fa-d055c8cf2d35"],
 ", ",
 Cell[BoxData["\<\"StopReason\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "ac8d824e-b70d-4322-80d8-f9e9369ad597"],
 " and ",
 Cell[BoxData["\<\"TimeElapsed\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "67244213-df35-43e6-b015-befeb0ca5426"],
 ". ",
 Cell[BoxData["\<\"HitIndices\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "4888bbb7-f4bc-48b6-b57a-67dd723a45b5"],
 " are indices into the enumeration, so a hit can be found again by index \
alone."
}], "Notes",ExpressionUUID->"787000ac-a0d7-4dd7-b0ab-2d4bdf8ad99f"],

Cell[TextData[{
 Cell[BoxData["\<\"StopReason\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "27808ffb-d808-4323-bce2-f9760e48f929"],
 " is ",
 Cell[BoxData["\<\"Exhausted\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "538721f1-850f-4e86-aea9-601b30177def"],
 ", ",
 Cell[BoxData["\<\"MaxHits\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "a8695711-b8e8-40c9-87bb-7d72d92f5a13"],
 " or ",
 Cell[BoxData["\<\"TimeConstraint\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "c0c21e2e-ad04-415e-8e2d-6ff72daa13e8"],
 "."
}], "Notes",ExpressionUUID->"76e7e857-fecf-4318-96a6-a8f64b52b7bc"],

Cell[TextData[{
 "The sweep proceeds in chunks. A chunk is the unit of ledger filtering, of \
ledger recording, of checkpoint writing and of progress reporting, so ",
 Cell[BoxData["\<\"ChunkSize\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "033d8588-7538-4f3c-9580-f01a53d228a7"],
 " trades bookkeeping cost against how much work a crash loses."
}], "Notes",ExpressionUUID->"921ffbb9-9c71-4800-9599-4bef26211110"],

Cell[TextData[{
 "A checkpoint records the index reached, the counters, the hits so far, and \
the enumeration's ",
 Cell[BoxData["\<\"Fingerprint\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "a9fd38f2-6bce-4179-b67a-46837a10059f"],
 ". Resuming against a different candidate space is refused with a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Failure"]], "paclet:ref/Failure"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "500fe91a-2b78-4a5e-8ec7-a563ac3f3370"],
 " rather than restarted at a meaningless index."
}], "Notes",ExpressionUUID->"0efb4549-2fc2-4844-b6af-13ef29a0281c"],

Cell["\<\
Because hits are written into the checkpoint as JSON, checkpointing a sweep \
whose candidates are not JSON-serialisable will not round-trip; strings and \
lists of strings are.\
\>", "Notes",ExpressionUUID->"feb31d66-6e2f-4ea6-aa6a-ed9091aad9a8"],

Cell[TextData[{
 "A ",
 Cell[BoxData["\<\"Ledger\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "3a7d4b44-49fa-4641-8ce7-7b8e6ce99990"],
 " needs a ",
 Cell[BoxData["\<\"Target\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "643b072f-d821-462d-8233-8625fce530ec"],
 ", and the pair make a repeated sweep of covered ground free: the second run \
tests nothing and reports it all as ",
 Cell[BoxData["\<\"Skipped\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "68c255a1-fcc8-4232-9367-61cf0ca0eca6"],
 "."
}], "Notes",ExpressionUUID->"b12d6c88-6eeb-41de-9ab1-a9ebbcec07e3"],

Cell[TextData[{
 "Ledger filtering costs one ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["CandidateFingerprint"]], 
    "paclet:WolframInstitute/Puzzles/ref/CandidateFingerprint", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "43f7bfc5-f37a-45eb-ba72-3e7a8ee479f7"],
 " per candidate, about a quarter of a millisecond, so it pays for itself \
whenever the oracle is slower than that and is pure overhead when it is not."
}], "Notes",ExpressionUUID->"ea6ef1ce-1fda-48f6-8d12-d2145649e78c"],

Cell[TextData[{
 "Options that are inconsistent, such as a ",
 Cell[BoxData["\<\"Ledger\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "544e4c1d-d0ae-4f6f-9526-185885e980a7"],
 " with no ",
 Cell[BoxData["\<\"Target\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "55f98ace-94b5-4ad4-aeed-29b0049cb073"],
 ", a non-positive ",
 Cell[BoxData["\<\"ChunkSize\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "e2ea1fc8-450f-4b96-9bde-2513714eba64"],
 ", or a ",
 Cell[BoxData["\<\"MaxHits\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "7f2cfce0-f8f6-48f5-8241-c0886e5ee7a6"],
 " that is not a positive integer, give a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Failure"]], "paclet:ref/Failure"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "f3996831-863e-4507-bf53-419351db3304"],
 "."
}], "Notes",ExpressionUUID->"2178e75d-2df6-4a7a-8a86-1c66e38115a8"],

Cell[TextData[{
 "A batch oracle that gives a different number of verdicts than there were \
candidates cannot be reconciled with the chunk, and gives a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Failure"]], "paclet:ref/Failure"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "91db97d2-6c06-4b74-8f1d-7f35ac75d7e1"],
 ". So does a checkpoint or a ledger that cannot be written: a sweep that \
believes it is recording and is not would be run again from scratch later."
}], "Notes",ExpressionUUID->"11d3cdd2-ee70-4976-bf05-39077acb5a11"],

Cell[TextData[{
 "A first argument that is not a ",
 Cell[BoxData["CandidateEnumeration"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "4bd6bc7c-2df0-488d-a324-b50ef817bc85"],
 " matches no definition and the call is returned unevaluated."
}], "Notes",ExpressionUUID->"17102a2d-3e27-4404-a074-19ee184f93df"],

Cell[BoxData[GridBox[{
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "41216659-fbff-4edc-8434-9b43b0f626f0"], Cell["", "TableText",
     FontWeight->Bold,ExpressionUUID->"95424e82-fe63-4ded-ae59-330c3fa9a48e"],
     Cell["", "TableText",
     FontWeight->Bold,ExpressionUUID->"26a4b6bd-48d5-467c-a7ad-8ad0b11576ca"],
     Cell["", "TableText",
     FontWeight->Bold,ExpressionUUID->"9b60871a-6a6a-4f34-9ba7-0c2018f53583"]},
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "bb408ead-92db-4a4e-8b57-12595a44c923"], Cell[TextData[Cell[
    BoxData["\"\<ChunkSize\>\""], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "df9d26dc-9e5f-4a05-9213-a86c5ea03c0a"]], "TableText",ExpressionUUID->
     "fcbaf18e-4100-4058-a418-50c9e513d010"], Cell[TextData[Cell[BoxData[
    "1000"], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "66cc7f85-4327-44fd-979c-83f69ba9a753"]], "TableText",ExpressionUUID->
     "671371f7-0e1e-43dc-8a92-9d7975cc6cd4"], Cell["\<\
candidates per chunk, the unit of checkpointing, ledger work and progress\
\>", "TableText",ExpressionUUID->"5e00347c-85dd-4828-8be3-873f2f8fcf33"]},
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "fd272372-ffcd-4e48-bc44-f744e2933f84"], Cell[TextData[Cell[
    BoxData["\"\<Checkpoint\>\""], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "e29c10ab-a503-467e-bff5-be12ee4ab203"]], "TableText",ExpressionUUID->
     "80bda9a7-43b1-440f-8f4f-9c2a6ccbb732"], Cell[TextData[Cell[BoxData[
     TemplateBox[{
       Cell[
        TextData["None"]], "paclet:ref/None"},
      "RefLink",
      BaseStyle->"InlineFormula"]], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "bf9e0717-7fd6-463d-aa99-1d6851be9c67"]], "TableText",ExpressionUUID->
     "979644b1-eae3-4783-bd65-ab1efdfeb189"], Cell[
    "a JSON file to write progress to and resume from", "TableText",
     ExpressionUUID->"bd42ab29-fa18-4b68-9bf4-c360eeecc609"]},
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "1db4d4f1-9bfe-4024-95d2-7c45806e935b"], Cell[TextData[Cell[
    BoxData["\"\<Ledger\>\""], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "dcd17aab-dc43-4e2e-a245-bc746213fa90"]], "TableText",ExpressionUUID->
     "907e2185-e61c-4703-8fbf-b4fe174d8791"], Cell[TextData[Cell[BoxData[
     TemplateBox[{
       Cell[
        TextData["None"]], "paclet:ref/None"},
      "RefLink",
      BaseStyle->"InlineFormula"]], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "f9c764b7-dac1-4305-bba2-273ba841d1d2"]], "TableText",ExpressionUUID->
     "197e1140-0ad0-413b-a2e4-3b74903716eb"], Cell[TextData[{
     "a ",
     Cell[BoxData[
      TemplateBox[{
        Cell[
         TextData["SearchLedger"]], 
        "paclet:WolframInstitute/Puzzles/ref/SearchLedger", 
        "WolframInstitute/Puzzles Package Symbol"},
       "PackageLink",
       BaseStyle->"InlineFormula"]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "e38543c6-cfa8-42c7-953e-3d26d5d6b3b8"],
     " to filter against and record into"
    }], "TableText",ExpressionUUID->"0a27db3e-e7ab-4a49-9ff2-70852e37fc07"]},
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "a10a6c3b-96f6-42f6-8c07-d456fae9d5c0"], Cell[TextData[Cell[
    BoxData["\"\<Target\>\""], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "838ffd7d-bca0-45df-aae7-18da7b57fbf5"]], "TableText",ExpressionUUID->
     "66631b19-6369-4e24-8902-217d59a8972d"], Cell[TextData[Cell[BoxData[
     TemplateBox[{
       Cell[
        TextData["None"]], "paclet:ref/None"},
      "RefLink",
      BaseStyle->"InlineFormula"]], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "635a4245-f258-48fe-b19c-3e792dbd774f"]], "TableText",ExpressionUUID->
     "dba25454-a9d7-41d3-b850-914bab3c9249"], Cell["\<\
the target string the ledger records against, required with a ledger\
\>", "TableText",ExpressionUUID->"c254c7ae-e757-463e-ba3c-30f5a768662c"]},
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "7d80ef5b-7d89-43b3-ae58-f4c106c47d8d"], Cell[TextData[Cell[
    BoxData["\"\<BatchOracle\>\""], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "61531bcb-73b1-488a-99a5-e6b6202c2175"]], "TableText",ExpressionUUID->
     "8302ca5c-b080-470e-835a-bc22a2d4e442"], Cell[TextData[Cell[BoxData[
     TemplateBox[{
       Cell[
        TextData["False"]], "paclet:ref/False"},
      "RefLink",
      BaseStyle->"InlineFormula"]], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "314550e2-5965-4e7f-8d75-fdff5694a4d2"]], "TableText",ExpressionUUID->
     "1466be1c-deba-466f-8fdc-80088c833fc1"], Cell["\<\
whether the oracle takes a whole chunk and gives a list of booleans\
\>", "TableText",ExpressionUUID->"02af6711-25b1-443d-9aff-4b38f1e3cd9e"]},
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "aa4ace47-eb16-4b2d-bc48-b451b5a80540"], Cell[TextData[Cell[
    BoxData["\"\<MaxHits\>\""], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "4d0a77b8-1522-4a28-8670-705b9b233e10"]], "TableText",ExpressionUUID->
     "5d0c2b9c-2e86-4e1d-8be1-3a655ff99f25"], Cell[TextData[Cell[BoxData[
     TemplateBox[{
       Cell[
        TextData["Infinity"]], "paclet:ref/Infinity"},
      "RefLink",
      BaseStyle->"InlineFormula"]], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "e7d26e7c-58c2-4578-9095-9f240a308bd0"]], "TableText",ExpressionUUID->
     "1c63526a-d7b9-4c53-9027-0140650a101b"], Cell[
    "stop once this many hits have been found", "TableText",ExpressionUUID->
     "eaefa661-41c9-4d79-aaf7-d43f0e80d70e"]},
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "5b2116d0-120a-489a-b250-ca0cf674df00"], Cell[TextData[Cell[
    BoxData["\"\<ProgressFunction\>\""], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "9ba6d6bf-88f0-4af8-8b91-4c6d281050e3"]], "TableText",ExpressionUUID->
     "5d45f976-fc9a-4079-9607-6de69fb8a018"], Cell[TextData[Cell[BoxData[
     TemplateBox[{
       Cell[
        TextData["None"]], "paclet:ref/None"},
      "RefLink",
      BaseStyle->"InlineFormula"]], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "909c43fb-96bf-4e09-ba75-2811a52b93fe"]], "TableText",ExpressionUUID->
     "aeae55cb-cdb5-44aa-9e10-cf0657aeb6d0"], Cell["\<\
a function called with a progress Association after each chunk\
\>", "TableText",ExpressionUUID->"3e293103-bb3c-423d-98ec-246549ddd3f7"]},
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "0a99e19c-28c2-4899-9b28-769a21938212"], Cell[TextData[Cell[BoxData[
     TemplateBox[{
       Cell[
        TextData["TimeConstraint"]], "paclet:ref/TimeConstraint"},
      "RefLink",
      BaseStyle->"InlineFormula"]], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "0c9ef3d3-d086-4fe7-8dd1-5721962a2720"]], "TableText",ExpressionUUID->
     "e81495ab-7d86-4c22-bd5a-83086071cb01"], Cell[TextData[Cell[BoxData[
     TemplateBox[{
       Cell[
        TextData["Infinity"]], "paclet:ref/Infinity"},
      "RefLink",
      BaseStyle->"InlineFormula"]], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "d1bed803-8195-4a0d-8fdd-0e7518a5f5c1"]], "TableText",ExpressionUUID->
     "b69f4f52-9368-4d16-bf1d-e951fcc54619"], Cell[
    "stop once this many seconds have elapsed", "TableText",ExpressionUUID->
     "ee64d9ff-5df8-4da8-a242-b52530c5839f"]}
  }]], "3ColumnTableMod",
 GridBoxOptions->{
 GridBoxBackground->{
  "Columns" -> {{None}}, 
   "Rows" -> {None, None, None, None, None, None, None, None, {None}}},
 GridBoxDividers->{
  "Rows" -> {{
     True, True, True, True, True, True, True, True, True, 
      True}}}},ExpressionUUID->"bbeb5bbc-1bb4-451b-a310-35d39dc032f1"]
}, Closed]],

Cell["", "PageDelimiter",ExpressionUUID->"dcdc2ca8-fdc2-4952-9265-cfa8207f58fc"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[
     MatchQ[
      CurrentValue[
       EvaluationNotebook[], {
       TaggingRules, "Openers", "PrimaryExamplesSection"}, Open], 
      Alternatives[True, Open]], 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
   ImageSizeCache->{
    13.600000000000001`, {4.251494140625001, 9.348505859375}}]],
  ExpressionUUID->"6cba77e7-e289-4fa1-ab44-dda660d6f89c"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"70cbb87c-5d51-498b-a984-58f2a5135d3f"],
 "Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(22)", "ExampleCount",ExpressionUUID->
  "ba354a4a-7c59-4437-99d0-004c0a588158"]
}], "PrimaryExamplesSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->948152848,ExpressionUUID->"4326461b-d319-4469-9b8c-8c07e8a14f8b"],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<WolframInstitute`Puzzles`\>\"", "]"}]], "Input", \
"ExampleInitialization",
 CellLabel->"In[1]:=",
 CellID->1969679695,ExpressionUUID->"9adc621a-9eb9-4285-8d04-a62762edea86"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "60af3540-b3cd-4b47-91c8-6dfd9a60dca3"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"65516d5e-dd97-495a-8240-192bc91f3a77"],
 "Basic Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(4)", "ExampleCount",ExpressionUUID->
  "ef71ad10-f382-4c4d-831a-5834412b002a"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1276255596,ExpressionUUID->"688787da-b7a4-4544-882d-caa40efcfb23"],

Cell[TextData[{
 "Sweeping a small space for the preimage of the NIST FIPS 180-4 example \
digest of ",
 Cell[BoxData["\<\"abc\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "3bc28161-5327-4ab1-8605-370bacd5671e"],
 ":"
}], "ExampleText",
 CellTags->
  "TextAnnotation",ExpressionUUID->"5cfbc836-eeaa-49a1-adb9-d0b2dbac327c"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Lookup", "[", "\n", "\t", 
  RowBox[{
   RowBox[{"CandidateSweep", "[", "\n", "\t\t", 
    RowBox[{
     RowBox[{"CandidateEnumeration", "[", 
      RowBox[{"Map", "[", 
       RowBox[{"StringJoin", ",", " ", 
        RowBox[{"Permutations", "[", 
         RowBox[{"{", 
          RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\"", ",", " ", "\"\<c\>\""}],
           "}"}], "]"}]}], "]"}], "]"}], ",", "\n", "\t\t", 
     RowBox[{"Function", "[", 
      RowBox[{"candidate", ",", " ", 
       RowBox[{
        RowBox[{"CandidateFingerprint", "[", "candidate", "]"}], " ", "===", 
        " ", "\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\""}]}], 
      "]"}]}], "\n", "\t", "]"}], ",", "\n", "\t", "\"\<Hits\>\""}], "\n", 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"3b5b330a-6ab1-452f-be0c-2b0409c1fe70"],

Cell[BoxData[
 RowBox[{"{", "\<\"abc\"\>", "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"21067457-d9a7-4b81-bc28-9d679befc53a"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "ccfe0e83-8a51-43ef-8f9f-3b3e67eb144e"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"44d8c83a-41e2-44d2-\
b087-763c15d7b50e"],

Cell["The full report of that sweep:", "ExampleText",ExpressionUUID->"8f9518e3-61d8-4a29-a18d-f32e34440ee5"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Normal", "[", 
  RowBox[{"KeyDrop", "[", "\n", "\t", 
   RowBox[{
    RowBox[{"CandidateSweep", "[", "\n", "\t\t", 
     RowBox[{
      RowBox[{"CandidateEnumeration", "[", 
       RowBox[{"Map", "[", 
        RowBox[{"StringJoin", ",", " ", 
         RowBox[{"Permutations", "[", 
          RowBox[{"{", 
           
           RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\"", ",", 
            " ", "\"\<c\>\""}], "}"}], "]"}]}], "]"}], "]"}], ",", "\n", 
      "\t\t", 
      RowBox[{"Function", "[", 
       RowBox[{"candidate", ",", " ", 
        RowBox[{
         RowBox[{"CandidateFingerprint", "[", "candidate", "]"}], " ", "===", 
         " ", "\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\""}]}], 
       "]"}]}], "\n", "\t", "]"}], ",", "\n", "\t", "\"\<TimeElapsed\>\""}], 
   "\n", "]"}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"eb91aebd-2484-4add-b32b-9c969fbcd2a5"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"\<\"Hits\"\>", "\[Rule]", 
    RowBox[{"{", "\<\"abc\"\>", "}"}]}], ",", 
   RowBox[{"\<\"HitIndices\"\>", "\[Rule]", 
    RowBox[{"{", "1", "}"}]}], ",", 
   RowBox[{"\<\"Tested\"\>", "\[Rule]", "6"}], ",", 
   RowBox[{"\<\"Skipped\"\>", "\[Rule]", "0"}], ",", 
   RowBox[{"\<\"Index\"\>", "\[Rule]", "6"}], ",", 
   RowBox[{"\<\"Length\"\>", "\[Rule]", "6"}], ",", 
   RowBox[{"\<\"Complete\"\>", "\[Rule]", "True"}], ",", 
   RowBox[{"\<\"StopReason\"\>", "\[Rule]", "\<\"Exhausted\"\>"}]}], 
  "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"ea1bfdf9-398c-439c-a0f3-42af412f516a"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "f98330cf-9a55-4de9-910b-5152a53cbe39"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"5230eca3-32b7-4e24-\
b047-ffe59190d233"],

Cell["A sweep that finds nothing exhausts the space and says so:", \
"ExampleText",ExpressionUUID->"d09d5114-92d3-4c91-8977-40aefa2a69e7"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Lookup", "[", "\n", "\t", 
  RowBox[{
   RowBox[{"CandidateSweep", "[", 
    RowBox[{
     RowBox[{"CandidateEnumeration", "[", 
      RowBox[{"{", 
       RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\"", ",", " ", "\"\<c\>\""}], 
       "}"}], "]"}], ",", " ", 
     RowBox[{"Function", "[", 
      RowBox[{"candidate", ",", " ", "False"}], "]"}]}], "]"}], ",", "\n", 
   "\t", 
   RowBox[{"{", 
    RowBox[{"\"\<Hits\>\"", ",", " ", "\"\<Tested\>\"", ",", 
     " ", "\"\<StopReason\>\""}], "}"}]}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"145f5aa9-2cbd-4135-87bc-9c6e2d143d67"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"{", "}"}], ",", "3", ",", "\<\"Exhausted\"\>"}], "}"}]], "Output",\

 CellLabel->"Out[1]= ",ExpressionUUID->"54c67aad-93dc-45a3-a90d-a3b7507f1829"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "98bed839-68fb-4583-88ab-5bc602233209"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"f1ee0ea3-a06b-4c56-\
ad8a-117d8e20270b"],

Cell["\<\
Recovering the twelfth word of the BIP-0039 official test vector for zero \
entropy:\
\>", "ExampleText",ExpressionUUID->"83353732-b57a-47a9-b513-9534248fb2a2"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Lookup", "[", "\n", "\t", 
  RowBox[{
   RowBox[{"CandidateSweep", "[", "\n", "\t\t", 
    RowBox[{
     RowBox[{"WordlistCandidates", "[", 
      RowBox[{"Append", "[", 
       RowBox[{
        RowBox[{"ConstantArray", "[", 
         RowBox[{
          RowBox[{"{", "\"\<abandon\>\"", "}"}], ",", " ", "11"}], "]"}], ",",
         " ", 
        RowBox[{"{", 
         RowBox[{"\"\<ability\>\"", ",", " ", "\"\<able\>\"", ",", 
          " ", "\"\<about\>\""}], "}"}]}], "]"}], "]"}], ",", "\n", "\t\t", 
     RowBox[{"Function", "[", 
      RowBox[{"mnemonic", ",", " ", 
       RowBox[{"StringEndsQ", "[", 
        RowBox[{"mnemonic", ",", " ", "\"\<about\>\""}], "]"}]}], "]"}]}], 
    "\n", "\t", "]"}], ",", "\n", "\t", "\"\<Hits\>\""}], "\n", 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"0b46de6c-7cb6-420a-befc-0114531ef7b6"],

Cell[BoxData[
 RowBox[{"{", "\<\"abandon abandon abandon abandon abandon abandon abandon \
abandon abandon abandon abandon about\"\>", "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"3a78a0b8-3ae1-4f7f-b14f-abe53570d07e"]
}, Open  ]]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "8f5c8d0c-f11a-4529-8589-ef30cc44cd1e"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"31f0f90f-16ae-4d04-ab82-3b46b0d1ad58"],
 "Scope",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "47f731d3-0592-43f0-92b7-c24de3983f00"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1293636265,ExpressionUUID->"34647c1a-9dec-4d05-aff8-d720e0fa3d44"],

Cell["\<\
A hit's index locates it in the enumeration, so it can be recovered without \
keeping the candidate:\
\>", "ExampleText",ExpressionUUID->"0c7abbca-d5e3-47a7-a14f-08b888278422"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Lookup", "[", "\n", "\t", 
  RowBox[{
   RowBox[{"CandidateSweep", "[", 
    RowBox[{
     RowBox[{"CandidateEnumeration", "[", 
      RowBox[{"{", 
       RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\"", ",", " ", "\"\<c\>\"", ",",
         " ", "\"\<d\>\""}], "}"}], "]"}], ",", " ", 
     RowBox[{"Function", "[", 
      RowBox[{"candidate", ",", " ", 
       RowBox[{"candidate", " ", "===", " ", "\"\<c\>\""}]}], "]"}]}], "]"}], 
   ",", "\n", "\t", "\"\<HitIndices\>\""}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"b6fc6d74-0072-4bab-a358-35543c41eaa2"],

Cell[BoxData[
 RowBox[{"{", "3", "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"3c51f0c9-f00f-489f-b6b9-bc3810b5604f"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "922e114c-cf3f-47d6-b73e-ad52204b62d5"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"1d45d7b7-848e-453b-\
b977-58d7e360a659"],

Cell["The answer does not depend on the chunking:", "ExampleText",ExpressionUUID->"a2bf9be7-da4d-4ba0-87c5-0870fc79c82e"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"DeleteDuplicates", "[", 
  RowBox[{"Table", "[", "\n", "\t", 
   RowBox[{
    RowBox[{"Lookup", "[", 
     RowBox[{
      RowBox[{"CandidateSweep", "[", 
       RowBox[{
        RowBox[{"CandidateEnumeration", "[", 
         RowBox[{"{", 
          
          RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\"", ",", " ", "\"\<c\>\"", ",",
            " ", "\"\<d\>\"", ",", " ", "\"\<e\>\""}], "}"}], "]"}], ",", " ", 
        RowBox[{"Function", "[", 
         RowBox[{"candidate", ",", " ", 
          RowBox[{"candidate", " ", "===", " ", "\"\<d\>\""}]}], "]"}], ",", 
        " ", 
        RowBox[{"\"\<ChunkSize\>\"", " ", "->", " ", "size"}]}], "]"}], ",", 
      " ", "\"\<Hits\>\""}], "]"}], ",", "\n", "\t", 
    RowBox[{"{", 
     RowBox[{"size", ",", " ", "1", ",", " ", "6"}], "}"}]}], "\n", "]"}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"69808964-56db-48b9-9daf-a1831b4cbea6"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"{", "\<\"d\"\>", "}"}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"cccdddfb-bfb8-4c48-8edc-59721e47230e"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "2fa87227-605a-4b9e-a3fb-9931e7e6d5f7"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"bb2a13ad-2db0-4c67-\
84b1-b2cf2a30a094"],

Cell["A space with nothing in it is complete before it starts:", "ExampleText",ExpressionUUID->"91c56ac4-298f-4cee-acff-28c1ae6dee6a"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Lookup", "[", 
  RowBox[{
   RowBox[{"CandidateSweep", "[", 
    RowBox[{
     RowBox[{"CandidateEnumeration", "[", 
      RowBox[{"{", "}"}], "]"}], ",", " ", 
     RowBox[{"Function", "[", 
      RowBox[{"candidate", ",", " ", "True"}], "]"}]}], "]"}], ",", " ", 
   RowBox[{"{", 
    RowBox[{"\"\<Tested\>\"", ",", " ", "\"\<Complete\>\"", ",", 
     " ", "\"\<StopReason\>\""}], "}"}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"ab25e884-82d1-4a09-b87e-ee9ade1c580e"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0", ",", "True", ",", "\<\"Exhausted\"\>"}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"a92d35de-27a3-47ed-ba58-fea765778f47"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "23d1a7d0-48fa-42d7-bb9b-268ef53e0156"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"0f5ff43b-880d-4f29-99b9-cfb739982d20"],
 "Options",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(7)", "ExampleCount",ExpressionUUID->
  "75dcb319-7b88-4da0-b4eb-ecd315db3ca2"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2061341341,ExpressionUUID->"0cf47e4b-b212-4e43-8177-f66b166f6cec"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "13a39a3c-c4e3-4e07-a741-3437942481b4"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"b5f35418-c6a1-4324-bc56-b00a0a5a382c"],
 "ChunkSize",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "e4291455-2c41-4855-8f7b-c3b5f55e390f"]
}], "ExampleSubsection", "ExampleSubsection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,ExpressionUUID->"5bd7deba-5d4b-4e22-ad00-ff8ff5525e4e"],

Cell["\<\
A smaller chunk checkpoints and reports more often, at more bookkeeping:\
\>", "ExampleText",ExpressionUUID->"93b59841-e6d7-42a4-bedc-db6edef74ecc"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"seen", " ", "=", " ", 
     RowBox[{"{", "}"}]}], "}"}], ",", "\n", "\t", 
   RowBox[{
    RowBox[{"CandidateSweep", "[", 
     RowBox[{
      RowBox[{"CandidateEnumeration", "[", 
       RowBox[{"Range", "[", "10", "]"}], "]"}], ",", " ", 
      RowBox[{"Function", "[", 
       RowBox[{"candidate", ",", " ", "False"}], "]"}], ",", " ", 
      RowBox[{"\"\<ChunkSize\>\"", " ", "->", " ", "3"}], ",", " ", 
      RowBox[{"\"\<ProgressFunction\>\"", " ", "->", " ", 
       RowBox[{"Function", "[", 
        RowBox[{"report", ",", " ", 
         RowBox[{"seen", " ", "=", " ", 
          RowBox[{"Append", "[", 
           RowBox[{"seen", ",", " ", 
            RowBox[{"Lookup", "[", 
             RowBox[{"report", ",", " ", "\"\<Index\>\""}], "]"}]}], 
           "]"}]}]}], "]"}]}]}], "]"}], ";", "\n", "\t", "seen"}]}], "\n", 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"5302c59d-f6eb-4ada-a59b-f5ea90a45e79"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"3", ",", "6", ",", "9", ",", "10"}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"bbec3ad7-3f44-4945-b49f-7180a77251a8"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "708cd533-4051-419e-9d10-c7cc05b48509"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"a4fa958b-c6d3-4396-8880-52a1579b4483"],
 "ProgressFunction",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "66b9e094-c137-43a9-b25c-8c4700ccc704"]
}], "ExampleSubsection", "ExampleSubsection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,ExpressionUUID->"444d5232-60df-400b-b457-5e4f9d275dec"],

Cell["The progress report carries everything a status line needs:", \
"ExampleText",ExpressionUUID->"8b741f86-89de-48b0-ba69-bf90f2ef2002"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"last", " ", "=", " ", "None"}], "}"}], ",", "\n", "\t", 
   RowBox[{
    RowBox[{"CandidateSweep", "[", 
     RowBox[{
      RowBox[{"CandidateEnumeration", "[", 
       RowBox[{"Range", "[", "10", "]"}], "]"}], ",", " ", 
      RowBox[{"Function", "[", 
       RowBox[{"candidate", ",", " ", "False"}], "]"}], ",", " ", 
      RowBox[{"\"\<ChunkSize\>\"", " ", "->", " ", "5"}], ",", " ", 
      RowBox[{"\"\<ProgressFunction\>\"", " ", "->", " ", 
       RowBox[{"Function", "[", 
        RowBox[{"report", ",", " ", 
         RowBox[{"last", " ", "=", " ", "report"}]}], "]"}]}]}], "]"}], ";", 
    "\n", "\t", 
    RowBox[{"Normal", "[", 
     RowBox[{"KeyDrop", "[", 
      RowBox[{"last", ",", " ", "\"\<TimeElapsed\>\""}], "]"}], "]"}]}]}], 
  "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"08066d57-332d-426b-9fbe-d2714136366b"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"\<\"Index\"\>", "\[Rule]", "10"}], ",", 
   RowBox[{"\<\"Tested\"\>", "\[Rule]", "10"}], ",", 
   RowBox[{"\<\"Skipped\"\>", "\[Rule]", "0"}], ",", 
   RowBox[{"\<\"Hits\"\>", "\[Rule]", 
    RowBox[{"{", "}"}]}], ",", 
   RowBox[{"\<\"HitIndices\"\>", "\[Rule]", 
    RowBox[{"{", "}"}]}], ",", 
   RowBox[{"\<\"Length\"\>", "\[Rule]", "10"}]}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"e3b01d14-f36d-4c33-acc0-ebb1b408976f"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "6702aea1-6b9f-420e-b2a6-35a268c80666"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"1bd045b4-4da5-4f86-b7f2-a221e580e1e6"],
 "MaxHits",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "976d1edb-0006-40d8-8956-f809bc1b9918"]
}], "ExampleSubsection", "ExampleSubsection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,ExpressionUUID->"d10f6f24-3114-410e-8a24-f2c76972ed24"],

Cell["\<\
Stopping at the first hit leaves the sweep incomplete and resumable:\
\>", "ExampleText",ExpressionUUID->"2aa61ba1-9bae-4967-97c8-6be017cdb3d3"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Lookup", "[", "\n", "\t", 
  RowBox[{
   RowBox[{"CandidateSweep", "[", 
    RowBox[{
     RowBox[{"CandidateEnumeration", "[", 
      RowBox[{"{", 
       RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\"", ",", " ", "\"\<c\>\"", ",",
         " ", "\"\<d\>\""}], "}"}], "]"}], ",", " ", 
     RowBox[{"Function", "[", 
      RowBox[{"candidate", ",", " ", "True"}], "]"}], ",", " ", 
     RowBox[{"\"\<ChunkSize\>\"", " ", "->", " ", "1"}], ",", " ", 
     RowBox[{"\"\<MaxHits\>\"", " ", "->", " ", "1"}]}], "]"}], ",", "\n", 
   "\t", 
   RowBox[{"{", 
    RowBox[{"\"\<Index\>\"", ",", " ", "\"\<Complete\>\"", ",", 
     " ", "\"\<StopReason\>\""}], "}"}]}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"5bd8c542-3729-4fb1-8c63-e562ab096da5"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"1", ",", "False", ",", "\<\"MaxHits\"\>"}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"38087bfb-5f21-4b2a-9f32-d32d937bf615"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "c043e952-c25c-4e8e-a329-e07a72100d9a"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"b9de6a4d-3856-458d-8d17-e0d8c28b01a6"],
 "BatchOracle",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "4797680e-4486-4ed7-a092-4c8c2fd5ff17"]
}], "ExampleSubsection", "ExampleSubsection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,ExpressionUUID->"0f581db1-87da-4f4f-b215-db80188aa25a"],

Cell["A batch oracle sees the whole chunk at once:", "ExampleText",ExpressionUUID->"7faa3da6-f661-4d43-bc34-3098c3fad786"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Lookup", "[", "\n", "\t", 
  RowBox[{
   RowBox[{"CandidateSweep", "[", "\n", "\t\t", 
    RowBox[{
     RowBox[{"CandidateEnumeration", "[", 
      RowBox[{"{", 
       RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\"", ",", " ", "\"\<c\>\""}], 
       "}"}], "]"}], ",", "\n", "\t\t", 
     RowBox[{"Function", "[", 
      RowBox[{"chunk", ",", " ", 
       RowBox[{"Map", "[", 
        RowBox[{
         RowBox[{
          RowBox[{"#", " ", "===", " ", "\"\<b\>\""}], " ", "&"}], ",", " ", 
         "chunk"}], "]"}]}], "]"}], ",", "\n", "\t\t", 
     RowBox[{"\"\<BatchOracle\>\"", " ", "->", " ", "True"}]}], "\n", "\t", 
    "]"}], ",", "\n", "\t", "\"\<Hits\>\""}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"1887aafd-30e4-4d55-a862-b33f0df8f5ed"],

Cell[BoxData[
 RowBox[{"{", "\<\"b\"\>", "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"1800b8ed-ec77-4def-9e4b-e8885664a931"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "5cbd679c-172c-4303-b284-07cb98d17adc"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"ecea8cd4-971a-40fd-9a9b-fb4d06bc3b3c"],
 "TimeConstraint",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "5f24e577-41d0-4f04-a903-555eb19e49d0"]
}], "ExampleSubsection", "ExampleSubsection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,ExpressionUUID->"1d553b18-60ab-49bc-a311-1f50b423ffe7"],

Cell["\<\
A zero-second budget is already spent when the sweep starts, so no chunk runs \
at all:\
\>", "ExampleText",ExpressionUUID->"be5094e6-8d58-421e-a486-06a13a7b216d"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Lookup", "[", "\n", "\t", 
  RowBox[{
   RowBox[{"CandidateSweep", "[", 
    RowBox[{
     RowBox[{"CandidateEnumeration", "[", 
      RowBox[{"Range", "[", "100", "]"}], "]"}], ",", " ", 
     RowBox[{"Function", "[", 
      RowBox[{"candidate", ",", " ", "False"}], "]"}], ",", " ", 
     RowBox[{"\"\<ChunkSize\>\"", " ", "->", " ", "10"}], ",", " ", 
     RowBox[{"TimeConstraint", " ", "->", " ", "0"}]}], "]"}], ",", "\n", 
   "\t", 
   RowBox[{"{", 
    RowBox[{"\"\<Index\>\"", ",", " ", "\"\<Complete\>\"", ",", 
     " ", "\"\<StopReason\>\""}], "}"}]}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"247df5b8-d037-4bea-9a9a-1222c7821eea"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0", ",", "False", ",", "\<\"TimeConstraint\"\>"}], "}"}]], "Output",\

 CellLabel->"Out[1]= ",ExpressionUUID->"c511db3c-d2b3-48c0-89c7-9d5fe0f9073d"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "65d444cb-2b44-4119-9b26-eaf8a05c96d0"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"6b14a83f-e215-454f-b377-b94d1fc66bda"],
 "Checkpoint",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "331a1953-728b-4ddd-bc49-95f896e1c07e"]
}], "ExampleSubsection", "ExampleSubsection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,ExpressionUUID->"1bd76ca0-4697-45f6-ace0-939de1a35b63"],

Cell["\<\
A checkpointed sweep that stopped early resumes exactly where it left off, \
testing each candidate once across the two runs:\
\>", "ExampleText",ExpressionUUID->"ef92c529-02eb-428b-96ea-1f0d350f7e37"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"file", " ", "=", " ", 
      RowBox[{"FileNameJoin", "[", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{"CreateDirectory", "[", "]"}], ",", 
         " ", "\"\<sweep.json\>\""}], "}"}], "]"}]}], ",", " ", 
     RowBox[{"space", " ", "=", " ", 
      RowBox[{"CandidateEnumeration", "[", 
       RowBox[{"Range", "[", "6", "]"}], "]"}]}], ",", " ", "first", ",", " ",
      "second"}], "}"}], ",", "\n", "\t", 
   RowBox[{
    RowBox[{"first", " ", "=", " ", 
     RowBox[{"CandidateSweep", "[", 
      RowBox[{"space", ",", " ", 
       RowBox[{"Function", "[", 
        RowBox[{"candidate", ",", " ", 
         RowBox[{"candidate", " ", "===", " ", "2"}]}], "]"}], ",", " ", 
       RowBox[{"\"\<ChunkSize\>\"", " ", "->", " ", "2"}], ",", " ", 
       RowBox[{"\"\<MaxHits\>\"", " ", "->", " ", "1"}], ",", " ", 
       RowBox[{"\"\<Checkpoint\>\"", " ", "->", " ", "file"}]}], "]"}]}], ";",
     "\n", "\t", 
    RowBox[{"second", " ", "=", " ", 
     RowBox[{"CandidateSweep", "[", 
      RowBox[{"space", ",", " ", 
       RowBox[{"Function", "[", 
        RowBox[{"candidate", ",", " ", 
         RowBox[{"candidate", " ", "===", " ", "5"}]}], "]"}], ",", " ", 
       RowBox[{"\"\<ChunkSize\>\"", " ", "->", " ", "2"}], ",", " ", 
       RowBox[{"\"\<Checkpoint\>\"", " ", "->", " ", "file"}]}], "]"}]}], ";",
     "\n", "\t", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"Lookup", "[", 
       RowBox[{"first", ",", " ", "\"\<Tested\>\""}], "]"}], ",", " ", 
      RowBox[{"Lookup", "[", 
       RowBox[{"second", ",", " ", "\"\<Tested\>\""}], "]"}], ",", " ", 
      RowBox[{"Lookup", "[", 
       RowBox[{"second", ",", " ", "\"\<Complete\>\""}], "]"}]}], "}"}]}]}], 
  "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"4b8ce2da-7481-428f-8c81-4f2b4aca8c69"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"2", ",", "6", ",", "True"}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"51f66e1a-0fb9-4482-ba59-195e301efe51"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "5fa9d82c-1c3a-4830-99f8-4594172e9e5a"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"ea41f888-8302-4df5-928b-cde19ce4ca4e"],
 "Ledger and Target",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "46f94621-08c5-4880-897f-f0c66f392b3e"]
}], "ExampleSubsection", "ExampleSubsection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,ExpressionUUID->"788ccb1e-8f42-4e2a-82e6-ffffaeb5973c"],

Cell["\<\
The second sweep of the same space against the same target tests nothing:\
\>", "ExampleText",ExpressionUUID->"7ff95ebf-008f-4384-bbbe-a1dfb8c45fbd"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"ledger", " ", "=", " ", 
      RowBox[{"SearchLedger", "[", 
       RowBox[{"FileNameJoin", "[", 
        RowBox[{"{", 
         RowBox[{
          RowBox[{"CreateDirectory", "[", "]"}], ",", " ", "\"\<ledger\>\""}],
          "}"}], "]"}], "]"}]}], ",", " ", 
     RowBox[{
     "target", " ", "=", " ", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\""}], 
     ",", " ", 
     RowBox[{"space", " ", "=", " ", 
      RowBox[{"CandidateEnumeration", "[", 
       RowBox[{"{", 
        RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\"", ",", " ", "\"\<c\>\""}], 
        "}"}], "]"}]}], ",", " ", "first", ",", " ", "second"}], "}"}], ",", 
   "\n", "\t", 
   RowBox[{
    RowBox[{"first", " ", "=", " ", 
     RowBox[{"CandidateSweep", "[", 
      RowBox[{"space", ",", " ", 
       RowBox[{"Function", "[", 
        RowBox[{"candidate", ",", " ", "False"}], "]"}], ",", " ", 
       RowBox[{"\"\<Ledger\>\"", " ", "->", " ", "ledger"}], ",", " ", 
       RowBox[{"\"\<Target\>\"", " ", "->", " ", "target"}]}], "]"}]}], ";", 
    "\n", "\t", 
    RowBox[{"second", " ", "=", " ", 
     RowBox[{"CandidateSweep", "[", 
      RowBox[{"space", ",", " ", 
       RowBox[{"Function", "[", 
        RowBox[{"candidate", ",", " ", "False"}], "]"}], ",", " ", 
       RowBox[{"\"\<Ledger\>\"", " ", "->", " ", "ledger"}], ",", " ", 
       RowBox[{"\"\<Target\>\"", " ", "->", " ", "target"}]}], "]"}]}], ";", 
    "\n", "\t", 
    RowBox[{"{", 
     RowBox[{
      RowBox[{"Lookup", "[", 
       RowBox[{"first", ",", " ", 
        RowBox[{"{", 
         RowBox[{"\"\<Tested\>\"", ",", " ", "\"\<Skipped\>\""}], "}"}]}], 
       "]"}], ",", " ", 
      RowBox[{"Lookup", "[", 
       RowBox[{"second", ",", " ", 
        RowBox[{"{", 
         RowBox[{"\"\<Tested\>\"", ",", " ", "\"\<Skipped\>\""}], "}"}]}], 
       "]"}]}], "}"}]}]}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"29eff22f-a694-4ecc-9741-cc3dfe1da3d5"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"3", ",", "0"}], "}"}], ",", 
   RowBox[{"{", 
    RowBox[{"0", ",", "3"}], "}"}]}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"88273ab0-1b16-4b95-aa28-787643ac93f8"]
}, Open  ]]
}, Closed]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "c098ef0b-2c87-44e8-ab71-17e63c40a995"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"42ab3727-5316-4fdd-8c7c-80e015520167"],
 "Applications",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "e622fa68-2ce4-4033-a45a-f4119b704b00"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->258228157,ExpressionUUID->"1b85efcb-ad21-4080-ad54-16acc90f890d"],

Cell["\<\
A ledger already holding part of a space narrows the sweep to the rest of it, \
which is what makes a long search compound:\
\>", "ExampleText",ExpressionUUID->"2a99dc58-1b24-4ef8-85f7-427db0adb330"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"ledger", " ", "=", " ", 
      RowBox[{"SearchLedger", "[", 
       RowBox[{"FileNameJoin", "[", 
        RowBox[{"{", 
         RowBox[{
          RowBox[{"CreateDirectory", "[", "]"}], ",", " ", "\"\<ledger\>\""}],
          "}"}], "]"}], "]"}]}], ",", " ", 
     RowBox[{
     "target", " ", "=", " ", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\""}], 
     ",", " ", 
     RowBox[{"space", " ", "=", " ", 
      RowBox[{"CandidateEnumeration", "[", 
       RowBox[{"Map", "[", 
        RowBox[{"StringJoin", ",", " ", 
         RowBox[{"Permutations", "[", 
          RowBox[{"{", 
           
           RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\"", ",", 
            " ", "\"\<c\>\""}], "}"}], "]"}]}], "]"}], "]"}]}]}], "}"}], ",", 
   "\n", "\t", 
   RowBox[{
    RowBox[{"SearchLedgerRecord", "[", 
     RowBox[{"ledger", ",", " ", "target", ",", " ", 
      RowBox[{"{", 
       RowBox[{"\"\<bac\>\"", ",", " ", "\"\<bca\>\"", ",", " ", "\"\<cab\>\"",
         ",", " ", "\"\<cba\>\"", ",", " ", "\"\<acb\>\""}], "}"}]}], "]"}], ";",
     "\n", "\t", 
    RowBox[{"Lookup", "[", "\n", "\t\t", 
     RowBox[{
      RowBox[{"CandidateSweep", "[", 
       RowBox[{"space", ",", " ", 
        RowBox[{"Function", "[", 
         RowBox[{"candidate", ",", " ", 
          RowBox[{
           RowBox[{"CandidateFingerprint", "[", "candidate", "]"}], " ", "===",
            " ", "\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\""}]}], 
         "]"}], ",", " ", 
        RowBox[{"\"\<Ledger\>\"", " ", "->", " ", "ledger"}], ",", " ", 
        RowBox[{"\"\<Target\>\"", " ", "->", " ", "target"}]}], "]"}], ",", 
      "\n", "\t\t", 
      RowBox[{"{", 
       RowBox[{"\"\<Tested\>\"", ",", " ", "\"\<Skipped\>\"", ",", 
        " ", "\"\<Hits\>\""}], "}"}]}], "\n", "\t", "]"}]}]}], "\n", 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"004f1c7d-f91b-4596-98ef-c49e4258bbd9"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"1", ",", "5", ",", 
   RowBox[{"{", "\<\"abc\"\>", "}"}]}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"6aea9557-0bfd-4d0f-b668-2b5432c1f93f"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "8f888b84-3ee4-4fc0-af69-3bea5f193b59"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"e6cd9ff7-fb12-4a33-957b-25108f3360db"],
 "Properties & Relations",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "87c556db-786f-4d86-b573-f4f872e81212"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2123667759,ExpressionUUID->"86492b9c-c469-40c5-a62c-34973c33abce"],

Cell[TextData[{
 "The candidates a chunk actually reaches are the ones ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SearchLedgerFilter"]], 
    "paclet:WolframInstitute/Puzzles/ref/SearchLedgerFilter", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "b97310cc-64e1-471e-872f-b0df6ccf7a13"],
 " leaves:"
}], "ExampleText",ExpressionUUID->"510ebd9f-0565-406c-b49a-261df0d1d135"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"ledger", " ", "=", " ", 
      RowBox[{"SearchLedger", "[", 
       RowBox[{"FileNameJoin", "[", 
        RowBox[{"{", 
         RowBox[{
          RowBox[{"CreateDirectory", "[", "]"}], ",", " ", "\"\<ledger\>\""}],
          "}"}], "]"}], "]"}]}], ",", " ", 
     RowBox[{
     "target", " ", "=", 
      " ", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\""}]}], "}"}], ",", "\n",
    "\t", 
   RowBox[{
    RowBox[{"SearchLedgerRecord", "[", 
     RowBox[{"ledger", ",", " ", "target", ",", " ", 
      RowBox[{"{", 
       RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\""}], "}"}]}], "]"}], ";", 
    "\n", "\t", 
    RowBox[{
     RowBox[{"SearchLedgerFilter", "[", 
      RowBox[{"ledger", ",", " ", "target", ",", " ", 
       RowBox[{"{", 
        RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\"", ",", " ", "\"\<c\>\""}], 
        "}"}]}], "]"}], " ", "===", " ", 
     RowBox[{"Lookup", "[", 
      RowBox[{
       RowBox[{"CandidateSweep", "[", 
        RowBox[{
         RowBox[{"CandidateEnumeration", "[", 
          RowBox[{"{", 
           
           RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\"", ",", 
            " ", "\"\<c\>\""}], "}"}], "]"}], ",", " ", 
         RowBox[{"Function", "[", 
          RowBox[{"candidate", ",", " ", "True"}], "]"}], ",", " ", 
         RowBox[{"\"\<Ledger\>\"", " ", "->", " ", "ledger"}], ",", " ", 
         RowBox[{"\"\<Target\>\"", " ", "->", " ", "target"}]}], "]"}], ",", 
       " ", "\"\<Hits\>\""}], "]"}]}]}]}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"bfb7ba4c-331e-48d7-b29a-c0880be41158"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"b1216d07-cde8-4309-b8de-330501093c56"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "af4e611c-04b4-43f4-a083-5f73e8201e72"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"0ad990ef-30eb-4f43-\
b11a-234a31470b69"],

Cell[TextData[{
 "The checkpoint a sweep writes is what ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["SweepCheckpoint"]], 
    "paclet:WolframInstitute/Puzzles/ref/SweepCheckpoint", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "c9391ee8-6eaf-4593-8fa6-a4562753c685"],
 " reads:"
}], "ExampleText",ExpressionUUID->"5ad2775e-98c7-410b-9a74-2a267f170aa2"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"file", " ", "=", " ", 
      RowBox[{"FileNameJoin", "[", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{"CreateDirectory", "[", "]"}], ",", 
         " ", "\"\<sweep.json\>\""}], "}"}], "]"}]}], ",", " ", 
     RowBox[{"space", " ", "=", " ", 
      RowBox[{"CandidateEnumeration", "[", 
       RowBox[{"Range", "[", "6", "]"}], "]"}]}]}], "}"}], ",", "\n", "\t", 
   RowBox[{
    RowBox[{"CandidateSweep", "[", 
     RowBox[{"space", ",", " ", 
      RowBox[{"Function", "[", 
       RowBox[{"candidate", ",", " ", "True"}], "]"}], ",", " ", 
      RowBox[{"\"\<ChunkSize\>\"", " ", "->", " ", "1"}], ",", " ", 
      RowBox[{"\"\<MaxHits\>\"", " ", "->", " ", "1"}], ",", " ", 
      RowBox[{"\"\<Checkpoint\>\"", " ", "->", " ", "file"}]}], "]"}], ";", 
    "\n", "\t", 
    RowBox[{
     RowBox[{"Lookup", "[", 
      RowBox[{
       RowBox[{"SweepCheckpoint", "[", "file", "]"}], ",", 
       " ", "\"\<Enumeration\>\""}], "]"}], " ", "===", " ", 
     RowBox[{"space", "[", "\"\<Fingerprint\>\"", "]"}]}]}]}], "\n", 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"1a674b39-19e5-4c79-9db8-18825a44172d"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"835c3d28-f428-44f7-96bb-c73ff280f93b"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "75be4d54-556b-4e3a-b44c-64fd8a335344"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"6b334c33-f4d0-48f4-aced-32fbdff7e787"],
 "Possible Issues",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(5)", "ExampleCount",ExpressionUUID->
  "37a311b1-d577-4c41-bed2-e22555fb6d8d"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1305812373,ExpressionUUID->"0550a2a0-d809-45b9-a9c3-0fd04cbc9534"],

Cell["\<\
A checkpoint written for another candidate space cannot be resumed against \
this one:\
\>", "ExampleText",ExpressionUUID->"faa99770-6846-41da-bdf4-cf4122bdfc96"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Module", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"file", " ", "=", " ", 
     RowBox[{"FileNameJoin", "[", 
      RowBox[{"{", 
       RowBox[{
        RowBox[{"CreateDirectory", "[", "]"}], ",", 
        " ", "\"\<sweep.json\>\""}], "}"}], "]"}]}], "}"}], ",", "\n", "\t", 
   RowBox[{
    RowBox[{"CandidateSweep", "[", 
     RowBox[{
      RowBox[{"CandidateEnumeration", "[", 
       RowBox[{"Range", "[", "6", "]"}], "]"}], ",", " ", 
      RowBox[{"Function", "[", 
       RowBox[{"candidate", ",", " ", "True"}], "]"}], ",", " ", 
      RowBox[{"\"\<ChunkSize\>\"", " ", "->", " ", "1"}], ",", " ", 
      RowBox[{"\"\<MaxHits\>\"", " ", "->", " ", "1"}], ",", " ", 
      RowBox[{"\"\<Checkpoint\>\"", " ", "->", " ", "file"}]}], "]"}], ";", 
    "\n", "\t", 
    RowBox[{"CandidateSweep", "[", 
     RowBox[{
      RowBox[{"CandidateEnumeration", "[", 
       RowBox[{"{", 
        RowBox[{"\"\<x\>\"", ",", " ", "\"\<y\>\""}], "}"}], "]"}], ",", " ", 
      
      RowBox[{"Function", "[", 
       RowBox[{"candidate", ",", " ", "False"}], "]"}], ",", " ", 
      RowBox[{"\"\<Checkpoint\>\"", " ", "->", " ", "file"}]}], "]"}]}]}], 
  "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"1f49d8b5-24ab-498c-9a26-64d1a72e2d5e"],

Cell[BoxData[
 InterpretationBox[
  RowBox[{
   TagBox["Failure",
    "SummaryHead"], "[", 
   DynamicModuleBox[{Typeset`open$$ = False, Typeset`embedState$$ = "Ready"}, 
    
    TemplateBox[{
      PaneSelectorBox[{False -> GridBox[{{
            PaneBox[
             ButtonBox[
              DynamicBox[
               FEPrivate`FrontEndResource["FEBitmaps", "SummaryBoxOpener"]], 
              ButtonFunction :> (Typeset`open$$ = True), Appearance -> None, 
              BaseStyle -> {}, Evaluator -> Automatic, Method -> 
              "Preemptive"], Alignment -> {Center, Center}, ImageSize -> 
             Dynamic[{
               Automatic, 
                3.5 (CurrentValue["FontCapHeight"]/AbsoluteCurrentValue[
                 Magnification])}]], 
            FrameBox[
             StyleBox["\"\[WarningSign]\"", 
              Directive["Message", 35], StripOnInput -> False], 
             ContentPadding -> False, FrameStyle -> None, 
             FrameMargins -> {{0, 0}, {0, 0}}, StripOnInput -> False], 
            GridBox[{{
               TagBox[
                GridBox[{{
                   TagBox["\"Message: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox[
                   "\"the checkpoint was written for a different candidate \
space.\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}, {
               TagBox[
                GridBox[{{
                   TagBox["\"Tag: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox["\"ConfirmationFailed\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}}, 
             GridBoxAlignment -> {
              "Columns" -> {{Left}}, "Rows" -> {{Automatic}}}, AutoDelete -> 
             False, GridBoxItemSize -> {
              "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
             GridBoxSpacings -> {"Columns" -> {{2}}, "Rows" -> {{Automatic}}},
              BaseStyle -> {
              ShowStringCharacters -> False, NumberMarks -> False, 
               PrintPrecision -> 3, ShowSyntaxStyles -> False}]}}, 
          GridBoxAlignment -> {"Columns" -> {{Left}}, "Rows" -> {{Top}}}, 
          AutoDelete -> False, 
          GridBoxItemSize -> {
           "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
          BaselinePosition -> {1, 1}], True -> GridBox[{{
            PaneBox[
             ButtonBox[
              DynamicBox[
               FEPrivate`FrontEndResource["FEBitmaps", "SummaryBoxCloser"]], 
              ButtonFunction :> (Typeset`open$$ = False), Appearance -> None, 
              BaseStyle -> {}, Evaluator -> Automatic, Method -> 
              "Preemptive"], Alignment -> {Center, Center}, ImageSize -> 
             Dynamic[{
               Automatic, 
                3.5 (CurrentValue["FontCapHeight"]/AbsoluteCurrentValue[
                 Magnification])}]], 
            FrameBox[
             StyleBox["\"\[WarningSign]\"", 
              Directive["Message", 35], StripOnInput -> False], 
             ContentPadding -> False, FrameStyle -> None, 
             FrameMargins -> {{0, 0}, {0, 0}}, StripOnInput -> False], 
            GridBox[{{
               TagBox[
                GridBox[{{
                   TagBox["\"Message: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox[
                   "\"the checkpoint was written for a different candidate \
space.\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}, {
               TagBox[
                GridBox[{{
                   TagBox["\"Tag: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox["\"ConfirmationFailed\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}, {
               RowBox[{
                 TagBox[
                  
                  TemplateBox[{"\"ConfirmationType\"", "\": \""}, 
                   "RowDefault"], "SummaryItemAnnotation"], 
                 "\[InvisibleSpace]", 
                 TagBox[
                  TagBox["\"ConfirmAssert\"", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"Expression\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox["False", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"Information\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox[
                  "\"the checkpoint was written for a different candidate \
space.\"", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"Test\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox["False", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"HeldTest\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox[
                   RowBox[{"Hold", "[", 
                    RowBox[{
                    RowBox[{"Lookup", "[", 
                    
                    RowBox[{
                    "WolframInstitute`Puzzles`Search`Sweep`Private`stored$\
340453", ",", "\"Enumeration\""}], "]"}], "===", 
                    RowBox[{
                    InterpretationBox[
                    
                    TemplateBox[{
                    "\"CandidateEnumeration[\"", "\"List\"", "\", \"", "2", 
                    "\" candidates]\""}, "RowDefault"], 
                    
                    WolframInstitute`Puzzles`CandidateEnumeration[<|
                    "Kind" -> "List", "Parameters" -> {"x", "y"}, "Length" -> 
                    2, "Generator" -> Function[$CellContext`\[FormalI]$, 
                    Extract[{"x", "y"}, $CellContext`\[FormalI]$]], 
                    "Fingerprint" -> 
                    "8fcb7e524b1d5aa593612922d8d3c17f2c5d2c0ac2e226b3defbe187b\
b2df573"|>]], "[", "\"Fingerprint\"", "]"}]}], "]"}], HoldForm], 
                  "SummaryItem"]}]}}, 
             GridBoxAlignment -> {
              "Columns" -> {{Left}}, "Rows" -> {{Automatic}}}, AutoDelete -> 
             False, GridBoxItemSize -> {
              "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
             GridBoxSpacings -> {"Columns" -> {{2}}, "Rows" -> {{Automatic}}},
              BaseStyle -> {
              ShowStringCharacters -> False, NumberMarks -> False, 
               PrintPrecision -> 3, ShowSyntaxStyles -> False}]}}, 
          GridBoxAlignment -> {"Columns" -> {{Left}}, "Rows" -> {{Top}}}, 
          AutoDelete -> False, 
          GridBoxItemSize -> {
           "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
          BaselinePosition -> {1, 1}]}, 
       Dynamic[Typeset`open$$], ImageSize -> Automatic]},
     "SummaryPanel"],
    DynamicModuleValues:>{}], "]"}],
  Failure[
  "ConfirmationFailed", <|
   "MessageTemplate" -> 
    "the checkpoint was written for a different candidate space.", 
    "MessageParameters" -> {}, "ConfirmationType" -> "ConfirmAssert", 
    "Expression" :> False, "Information" -> 
    "the checkpoint was written for a different candidate space.", "Test" :> 
    False, "HeldTest" -> 
    Hold[Lookup[
       WolframInstitute`Puzzles`Search`Sweep`Private`stored$340453, 
        "Enumeration"] === 
      WolframInstitute`Puzzles`CandidateEnumeration[<|
        "Kind" -> "List", "Parameters" -> {"x", "y"}, "Length" -> 2, 
         "Generator" -> Function[$CellContext`\[FormalI]$, 
           Extract[{"x", "y"}, $CellContext`\[FormalI]$]], "Fingerprint" -> 
         "8fcb7e524b1d5aa593612922d8d3c17f2c5d2c0ac2e226b3defbe187bb2df573"|>]\
["Fingerprint"]]|>],
  Editable->False,
  SelectWithContents->True,
  Selectable->False]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"6a142b4d-7af0-4390-bac5-14bd0170441b"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "99ad1d26-2349-4731-a3c5-d9bce9948879"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"686ce626-b95b-4d8a-\
86a7-3a3e3290f0ca"],

Cell["A ledger with no target has nothing to record against:", "ExampleText",ExpressionUUID->"461ec6bf-cad9-4131-b1d6-0c48fb54cf88"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"CandidateSweep", "[", 
  RowBox[{
   RowBox[{"CandidateEnumeration", "[", 
    RowBox[{"{", "\"\<a\>\"", "}"}], "]"}], ",", " ", 
   RowBox[{"Function", "[", 
    RowBox[{"candidate", ",", " ", "False"}], "]"}], ",", " ", 
   RowBox[{"\"\<Ledger\>\"", " ", "->", " ", 
    RowBox[{"SearchLedger", "[", 
     RowBox[{"FileNameJoin", "[", 
      RowBox[{"{", 
       RowBox[{
        RowBox[{"CreateDirectory", "[", "]"}], ",", " ", "\"\<ledger\>\""}], 
       "}"}], "]"}], "]"}]}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"39120ec4-bf84-4ae5-9215-3ffa5754bc37"],

Cell[BoxData[
 InterpretationBox[
  RowBox[{
   TagBox["Failure",
    "SummaryHead"], "[", 
   DynamicModuleBox[{Typeset`open$$ = False, Typeset`embedState$$ = "Ready"}, 
    
    TemplateBox[{
      PaneSelectorBox[{False -> GridBox[{{
            PaneBox[
             ButtonBox[
              DynamicBox[
               FEPrivate`FrontEndResource["FEBitmaps", "SummaryBoxOpener"]], 
              ButtonFunction :> (Typeset`open$$ = True), Appearance -> None, 
              BaseStyle -> {}, Evaluator -> Automatic, Method -> 
              "Preemptive"], Alignment -> {Center, Center}, ImageSize -> 
             Dynamic[{
               Automatic, 
                3.5 (CurrentValue["FontCapHeight"]/AbsoluteCurrentValue[
                 Magnification])}]], 
            FrameBox[
             StyleBox["\"\[WarningSign]\"", 
              Directive["Message", 35], StripOnInput -> False], 
             ContentPadding -> False, FrameStyle -> None, 
             FrameMargins -> {{0, 0}, {0, 0}}, StripOnInput -> False], 
            GridBox[{{
               TagBox[
                GridBox[{{
                   TagBox["\"Message: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox[
                   "\"a \\\"Ledger\\\" needs a \\\"Target\\\" to record \
against.\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}, {
               TagBox[
                GridBox[{{
                   TagBox["\"Tag: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox["\"ConfirmationFailed\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}}, 
             GridBoxAlignment -> {
              "Columns" -> {{Left}}, "Rows" -> {{Automatic}}}, AutoDelete -> 
             False, GridBoxItemSize -> {
              "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
             GridBoxSpacings -> {"Columns" -> {{2}}, "Rows" -> {{Automatic}}},
              BaseStyle -> {
              ShowStringCharacters -> False, NumberMarks -> False, 
               PrintPrecision -> 3, ShowSyntaxStyles -> False}]}}, 
          GridBoxAlignment -> {"Columns" -> {{Left}}, "Rows" -> {{Top}}}, 
          AutoDelete -> False, 
          GridBoxItemSize -> {
           "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
          BaselinePosition -> {1, 1}], True -> GridBox[{{
            PaneBox[
             ButtonBox[
              DynamicBox[
               FEPrivate`FrontEndResource["FEBitmaps", "SummaryBoxCloser"]], 
              ButtonFunction :> (Typeset`open$$ = False), Appearance -> None, 
              BaseStyle -> {}, Evaluator -> Automatic, Method -> 
              "Preemptive"], Alignment -> {Center, Center}, ImageSize -> 
             Dynamic[{
               Automatic, 
                3.5 (CurrentValue["FontCapHeight"]/AbsoluteCurrentValue[
                 Magnification])}]], 
            FrameBox[
             StyleBox["\"\[WarningSign]\"", 
              Directive["Message", 35], StripOnInput -> False], 
             ContentPadding -> False, FrameStyle -> None, 
             FrameMargins -> {{0, 0}, {0, 0}}, StripOnInput -> False], 
            GridBox[{{
               TagBox[
                GridBox[{{
                   TagBox["\"Message: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox[
                   "\"a \\\"Ledger\\\" needs a \\\"Target\\\" to record \
against.\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}, {
               TagBox[
                GridBox[{{
                   TagBox["\"Tag: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox["\"ConfirmationFailed\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}, {
               RowBox[{
                 TagBox[
                  
                  TemplateBox[{"\"ConfirmationType\"", "\": \""}, 
                   "RowDefault"], "SummaryItemAnnotation"], 
                 "\[InvisibleSpace]", 
                 TagBox[
                  TagBox["\"ConfirmAssert\"", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"Expression\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox["False", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"Information\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox[
                  "\"a \\\"Ledger\\\" needs a \\\"Target\\\" to record \
against.\"", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"Test\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox["False", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"HeldTest\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox[
                   RowBox[{"Hold", "[", 
                    RowBox[{
                    
                    RowBox[{
                    "WolframInstitute`Puzzles`Search`Sweep`Private`ledger$\
340521", "===", "None"}], "||", 
                    
                    RowBox[{
                    "StringQ", "[", 
                    "WolframInstitute`Puzzles`Search`Sweep`Private`target$\
340521", "]"}]}], "]"}], HoldForm], "SummaryItem"]}]}}, 
             GridBoxAlignment -> {
              "Columns" -> {{Left}}, "Rows" -> {{Automatic}}}, AutoDelete -> 
             False, GridBoxItemSize -> {
              "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
             GridBoxSpacings -> {"Columns" -> {{2}}, "Rows" -> {{Automatic}}},
              BaseStyle -> {
              ShowStringCharacters -> False, NumberMarks -> False, 
               PrintPrecision -> 3, ShowSyntaxStyles -> False}]}}, 
          GridBoxAlignment -> {"Columns" -> {{Left}}, "Rows" -> {{Top}}}, 
          AutoDelete -> False, 
          GridBoxItemSize -> {
           "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
          BaselinePosition -> {1, 1}]}, 
       Dynamic[Typeset`open$$], ImageSize -> Automatic]},
     "SummaryPanel"],
    DynamicModuleValues:>{}], "]"}],
  Failure[
  "ConfirmationFailed", <|
   "MessageTemplate" -> "a \"Ledger\" needs a \"Target\" to record against.", 
    "MessageParameters" -> {}, "ConfirmationType" -> "ConfirmAssert", 
    "Expression" :> False, "Information" -> 
    "a \"Ledger\" needs a \"Target\" to record against.", "Test" :> False, 
    "HeldTest" -> Hold[
      Or[WolframInstitute`Puzzles`Search`Sweep`Private`ledger$340521 === None, 
       StringQ[
       WolframInstitute`Puzzles`Search`Sweep`Private`target$340521]]]|>],
  Editable->False,
  SelectWithContents->True,
  Selectable->False]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"f0f1accf-8d3d-47e9-abfb-d1b986137c54"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "54517deb-47b9-44f5-abde-4137d73110b7"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"5a4d0b7c-39a0-40c2-\
bd9e-68744bd705ba"],

Cell["\<\
A chunk size that is not a positive integer is an option the sweep cannot act \
on:\
\>", "ExampleText",ExpressionUUID->"2d20ea87-2c29-4644-b002-485bed756e5e"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"CandidateSweep", "[", 
  RowBox[{
   RowBox[{"CandidateEnumeration", "[", 
    RowBox[{"{", "\"\<a\>\"", "}"}], "]"}], ",", " ", 
   RowBox[{"Function", "[", 
    RowBox[{"candidate", ",", " ", "False"}], "]"}], ",", " ", 
   RowBox[{"\"\<ChunkSize\>\"", " ", "->", " ", "0"}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"973c3135-1bf5-421b-ba6f-3e2f769b356a"],

Cell[BoxData[
 InterpretationBox[
  RowBox[{
   TagBox["Failure",
    "SummaryHead"], "[", 
   DynamicModuleBox[{Typeset`open$$ = False, Typeset`embedState$$ = "Ready"}, 
    
    TemplateBox[{
      PaneSelectorBox[{False -> GridBox[{{
            PaneBox[
             ButtonBox[
              DynamicBox[
               FEPrivate`FrontEndResource["FEBitmaps", "SummaryBoxOpener"]], 
              ButtonFunction :> (Typeset`open$$ = True), Appearance -> None, 
              BaseStyle -> {}, Evaluator -> Automatic, Method -> 
              "Preemptive"], Alignment -> {Center, Center}, ImageSize -> 
             Dynamic[{
               Automatic, 
                3.5 (CurrentValue["FontCapHeight"]/AbsoluteCurrentValue[
                 Magnification])}]], 
            FrameBox[
             StyleBox["\"\[WarningSign]\"", 
              Directive["Message", 35], StripOnInput -> False], 
             ContentPadding -> False, FrameStyle -> None, 
             FrameMargins -> {{0, 0}, {0, 0}}, StripOnInput -> False], 
            GridBox[{{
               TagBox[
                GridBox[{{
                   TagBox["\"Message: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox[
                   "\"\\\"ChunkSize\\\" must be a positive integer.\"", 
                    "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}, {
               TagBox[
                GridBox[{{
                   TagBox["\"Tag: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox["\"ConfirmationFailed\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}}, 
             GridBoxAlignment -> {
              "Columns" -> {{Left}}, "Rows" -> {{Automatic}}}, AutoDelete -> 
             False, GridBoxItemSize -> {
              "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
             GridBoxSpacings -> {"Columns" -> {{2}}, "Rows" -> {{Automatic}}},
              BaseStyle -> {
              ShowStringCharacters -> False, NumberMarks -> False, 
               PrintPrecision -> 3, ShowSyntaxStyles -> False}]}}, 
          GridBoxAlignment -> {"Columns" -> {{Left}}, "Rows" -> {{Top}}}, 
          AutoDelete -> False, 
          GridBoxItemSize -> {
           "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
          BaselinePosition -> {1, 1}], True -> GridBox[{{
            PaneBox[
             ButtonBox[
              DynamicBox[
               FEPrivate`FrontEndResource["FEBitmaps", "SummaryBoxCloser"]], 
              ButtonFunction :> (Typeset`open$$ = False), Appearance -> None, 
              BaseStyle -> {}, Evaluator -> Automatic, Method -> 
              "Preemptive"], Alignment -> {Center, Center}, ImageSize -> 
             Dynamic[{
               Automatic, 
                3.5 (CurrentValue["FontCapHeight"]/AbsoluteCurrentValue[
                 Magnification])}]], 
            FrameBox[
             StyleBox["\"\[WarningSign]\"", 
              Directive["Message", 35], StripOnInput -> False], 
             ContentPadding -> False, FrameStyle -> None, 
             FrameMargins -> {{0, 0}, {0, 0}}, StripOnInput -> False], 
            GridBox[{{
               TagBox[
                GridBox[{{
                   TagBox["\"Message: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox[
                   "\"\\\"ChunkSize\\\" must be a positive integer.\"", 
                    "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}, {
               TagBox[
                GridBox[{{
                   TagBox["\"Tag: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox["\"ConfirmationFailed\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}, {
               RowBox[{
                 TagBox[
                  
                  TemplateBox[{"\"ConfirmationType\"", "\": \""}, 
                   "RowDefault"], "SummaryItemAnnotation"], 
                 "\[InvisibleSpace]", 
                 TagBox[
                  TagBox["\"ConfirmAssert\"", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"Expression\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox["False", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"Information\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox[
                  "\"\\\"ChunkSize\\\" must be a positive integer.\"", 
                   HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"Test\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox["False", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"HeldTest\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox[
                   RowBox[{"Hold", "[", 
                    RowBox[{
                    
                    RowBox[{
                    "IntegerQ", "[", 
                    "WolframInstitute`Puzzles`Search`Sweep`Private`chunkSize$\
340550", "]"}], "&&", 
                    
                    RowBox[{
                    "Positive", "[", 
                    "WolframInstitute`Puzzles`Search`Sweep`Private`chunkSize$\
340550", "]"}]}], "]"}], HoldForm], "SummaryItem"]}]}}, 
             GridBoxAlignment -> {
              "Columns" -> {{Left}}, "Rows" -> {{Automatic}}}, AutoDelete -> 
             False, GridBoxItemSize -> {
              "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
             GridBoxSpacings -> {"Columns" -> {{2}}, "Rows" -> {{Automatic}}},
              BaseStyle -> {
              ShowStringCharacters -> False, NumberMarks -> False, 
               PrintPrecision -> 3, ShowSyntaxStyles -> False}]}}, 
          GridBoxAlignment -> {"Columns" -> {{Left}}, "Rows" -> {{Top}}}, 
          AutoDelete -> False, 
          GridBoxItemSize -> {
           "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
          BaselinePosition -> {1, 1}]}, 
       Dynamic[Typeset`open$$], ImageSize -> Automatic]},
     "SummaryPanel"],
    DynamicModuleValues:>{}], "]"}],
  Failure[
  "ConfirmationFailed", <|
   "MessageTemplate" -> "\"ChunkSize\" must be a positive integer.", 
    "MessageParameters" -> {}, "ConfirmationType" -> "ConfirmAssert", 
    "Expression" :> False, "Information" -> 
    "\"ChunkSize\" must be a positive integer.", "Test" :> False, "HeldTest" -> 
    Hold[
      And[
       IntegerQ[
       WolframInstitute`Puzzles`Search`Sweep`Private`chunkSize$340550], 
       Positive[
       WolframInstitute`Puzzles`Search`Sweep`Private`chunkSize$340550]]]|>],
  Editable->False,
  SelectWithContents->True,
  Selectable->False]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"b5ce42ca-3855-462b-ad10-5fb96e62df02"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "957f85ba-d79b-4fea-b08b-4a9cefebc23d"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"a7b6d709-6320-4ffc-\
8e37-936f613f187d"],

Cell["A batch oracle must answer once per candidate:", "ExampleText",ExpressionUUID->"61d1804c-724c-40a6-86eb-fdc3b9bb5277"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"CandidateSweep", "[", 
  RowBox[{
   RowBox[{"CandidateEnumeration", "[", 
    RowBox[{"{", 
     RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\"", ",", " ", "\"\<c\>\""}], 
     "}"}], "]"}], ",", " ", 
   RowBox[{"Function", "[", 
    RowBox[{"chunk", ",", " ", 
     RowBox[{"{", "True", "}"}]}], "]"}], ",", " ", 
   RowBox[{"\"\<BatchOracle\>\"", " ", "->", " ", "True"}]}], "]"}]], "Input",\

 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"3e57eac8-cdde-4db2-8397-b446d963e928"],

Cell[BoxData[
 InterpretationBox[
  RowBox[{
   TagBox["Failure",
    "SummaryHead"], "[", 
   DynamicModuleBox[{Typeset`open$$ = False, Typeset`embedState$$ = "Ready"}, 
    
    TemplateBox[{
      PaneSelectorBox[{False -> GridBox[{{
            PaneBox[
             ButtonBox[
              DynamicBox[
               FEPrivate`FrontEndResource["FEBitmaps", "SummaryBoxOpener"]], 
              ButtonFunction :> (Typeset`open$$ = True), Appearance -> None, 
              BaseStyle -> {}, Evaluator -> Automatic, Method -> 
              "Preemptive"], Alignment -> {Center, Center}, ImageSize -> 
             Dynamic[{
               Automatic, 
                3.5 (CurrentValue["FontCapHeight"]/AbsoluteCurrentValue[
                 Magnification])}]], 
            FrameBox[
             StyleBox["\"\[WarningSign]\"", 
              Directive["Message", 35], StripOnInput -> False], 
             ContentPadding -> False, FrameStyle -> None, 
             FrameMargins -> {{0, 0}, {0, 0}}, StripOnInput -> False], 
            GridBox[{{
               TagBox[
                GridBox[{{
                   TagBox["\"Message: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox[
                   "\"the batch oracle gave a different number of verdicts \
than there were candidates.\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}, {
               TagBox[
                GridBox[{{
                   TagBox["\"Tag: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox["\"ConfirmationFailed\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}}, 
             GridBoxAlignment -> {
              "Columns" -> {{Left}}, "Rows" -> {{Automatic}}}, AutoDelete -> 
             False, GridBoxItemSize -> {
              "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
             GridBoxSpacings -> {"Columns" -> {{2}}, "Rows" -> {{Automatic}}},
              BaseStyle -> {
              ShowStringCharacters -> False, NumberMarks -> False, 
               PrintPrecision -> 3, ShowSyntaxStyles -> False}]}}, 
          GridBoxAlignment -> {"Columns" -> {{Left}}, "Rows" -> {{Top}}}, 
          AutoDelete -> False, 
          GridBoxItemSize -> {
           "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
          BaselinePosition -> {1, 1}], True -> GridBox[{{
            PaneBox[
             ButtonBox[
              DynamicBox[
               FEPrivate`FrontEndResource["FEBitmaps", "SummaryBoxCloser"]], 
              ButtonFunction :> (Typeset`open$$ = False), Appearance -> None, 
              BaseStyle -> {}, Evaluator -> Automatic, Method -> 
              "Preemptive"], Alignment -> {Center, Center}, ImageSize -> 
             Dynamic[{
               Automatic, 
                3.5 (CurrentValue["FontCapHeight"]/AbsoluteCurrentValue[
                 Magnification])}]], 
            FrameBox[
             StyleBox["\"\[WarningSign]\"", 
              Directive["Message", 35], StripOnInput -> False], 
             ContentPadding -> False, FrameStyle -> None, 
             FrameMargins -> {{0, 0}, {0, 0}}, StripOnInput -> False], 
            GridBox[{{
               TagBox[
                GridBox[{{
                   TagBox["\"Message: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox[
                   "\"the batch oracle gave a different number of verdicts \
than there were candidates.\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}, {
               TagBox[
                GridBox[{{
                   TagBox["\"Tag: \"", "SummaryItemAnnotation"], 
                   "\[InvisibleSpace]", 
                   TagBox["\"ConfirmationFailed\"", "SummaryItem"]}}, 
                 GridBoxItemSize -> {"Columns" -> {6.5, All, Automatic}}, 
                 GridBoxAlignment -> {"Columns" -> {{Left}}}, 
                 GridBoxSpacings -> {"Columns" -> {{0}}}], "SummaryItem"]}, {
               RowBox[{
                 TagBox[
                  
                  TemplateBox[{"\"ConfirmationType\"", "\": \""}, 
                   "RowDefault"], "SummaryItemAnnotation"], 
                 "\[InvisibleSpace]", 
                 TagBox[
                  TagBox["\"ConfirmBy\"", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"Expression\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox[
                   RowBox[{"{", "True", "}"}], HoldForm], "SummaryItem"]}]}, {
              
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"Information\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox[
                  "\"the batch oracle gave a different number of verdicts \
than there were candidates.\"", HoldForm], "SummaryItem"]}]}, {
               RowBox[{
                 TagBox[
                  TemplateBox[{"\"Function\"", "\": \""}, "RowDefault"], 
                  "SummaryItemAnnotation"], "\[InvisibleSpace]", 
                 TagBox[
                  TagBox[
                   RowBox[{
                    RowBox[{
                    RowBox[{"Length", "[", "#1", "]"}], "===", 
                    RowBox[{"Length", "[", 
                    RowBox[{"{", 
                    RowBox[{"\"a\"", ",", "\"b\"", ",", "\"c\""}], "}"}], 
                    "]"}]}], "&"}], HoldForm], "SummaryItem"]}]}}, 
             GridBoxAlignment -> {
              "Columns" -> {{Left}}, "Rows" -> {{Automatic}}}, AutoDelete -> 
             False, GridBoxItemSize -> {
              "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
             GridBoxSpacings -> {"Columns" -> {{2}}, "Rows" -> {{Automatic}}},
              BaseStyle -> {
              ShowStringCharacters -> False, NumberMarks -> False, 
               PrintPrecision -> 3, ShowSyntaxStyles -> False}]}}, 
          GridBoxAlignment -> {"Columns" -> {{Left}}, "Rows" -> {{Top}}}, 
          AutoDelete -> False, 
          GridBoxItemSize -> {
           "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
          BaselinePosition -> {1, 1}]}, 
       Dynamic[Typeset`open$$], ImageSize -> Automatic]},
     "SummaryPanel"],
    DynamicModuleValues:>{}], "]"}],
  Failure[
  "ConfirmationFailed", <|
   "MessageTemplate" -> 
    "the batch oracle gave a different number of verdicts than there were \
candidates.", "MessageParameters" -> {}, "ConfirmationType" -> "ConfirmBy", 
    "Expression" :> {True}, "Information" -> 
    "the batch oracle gave a different number of verdicts than there were \
candidates.", "Function" -> (Length[#] === Length[{"a", "b", "c"}]& )|>],
  Editable->False,
  SelectWithContents->True,
  Selectable->False]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"8f75e313-06ac-4abf-ab0a-14b93999f941"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "39fbbe28-25e9-4495-bb3c-f638a6303f33"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"da363552-f637-4e80-\
bbeb-1cfd46085ca9"],

Cell["\<\
A plain list is not an enumeration, and the call is returned unevaluated:\
\>", "ExampleText",ExpressionUUID->"ace7939c-74e6-4a42-8a33-6a7c59aaafa1"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"CandidateSweep", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"\"\<a\>\"", ",", " ", "\"\<b\>\""}], "}"}], ",", " ", 
   RowBox[{"Function", "[", 
    RowBox[{"candidate", ",", " ", "True"}], "]"}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"e2e00927-f3e8-475e-a3c3-9d5e7c8f3ef5"],

Cell[BoxData[
 RowBox[{"CandidateSweep", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"\<\"a\"\>", ",", "\<\"b\"\>"}], "}"}], ",", 
   RowBox[{"Function", "[", 
    RowBox[{"candidate", ",", "True"}], "]"}]}], "]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"d71ec6a7-5be4-4b51-bca2-315b4d00eaf2"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedFunction.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"See", " ", "Also"}], "SeeAlsoSection"]},
      {Cell[TextData[{
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["SweepCheckpoint"]], 
           "paclet:WolframInstitute/Puzzles/ref/SweepCheckpoint", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "605b0ebe-3aa1-4752-b1fc-961f3f366ae0"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["CandidateEnumeration"]], 
           "paclet:WolframInstitute/Puzzles/ref/CandidateEnumeration", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "6bdc1505-dcd4-40d4-bf3d-9bb2a56e958a"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["SearchLedger"]], 
           "paclet:WolframInstitute/Puzzles/ref/SearchLedger", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "2d1fad52-865d-4f8f-b424-25cc4e25b1eb"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["SearchLedgerFilter"]], 
           "paclet:WolframInstitute/Puzzles/ref/SearchLedgerFilter", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "ee7943da-90c1-49fb-aa7a-a7b925ac3e53"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["WordlistCandidates"]], 
           "paclet:WolframInstitute/Puzzles/ref/WordlistCandidates", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "ee0ed11f-fdc8-4504-9784-599d7ecc04d1"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["CandidateFingerprint"]], 
           "paclet:WolframInstitute/Puzzles/ref/CandidateFingerprint", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "72d21d1e-0a0b-416d-b8cf-cb51bcea6a93"]
       }], "SeeAlso",ExpressionUUID->"fe7b662e-66d3-400d-9977-0a4c0b866784"]}
     }]}
  }]], "SeeAlsoSection",ExpressionUUID->"6f1bf761-7349-4453-bc3e-\
8d2a184e6e0d"],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedGuide.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "MoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Search"]], 
           "paclet:WolframInstitute/Puzzles/guide/Search"},
          "RefLinkPlain",
          BaseStyle->{"MoreAbout"}]], "MoreAbout",ExpressionUUID->
         "e0e667f8-5ee7-4ba8-a72b-7852cc8b3e53"]}]}
     }]}
  }]], "MoreAboutSection",ExpressionUUID->"25906936-7bb1-41fe-a0d2-\
f430429c7d82"],

Cell[" ", "FooterCell",ExpressionUUID->"99c64fc0-6c6a-4e77-8704-3956b9bf48d0"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"CandidateSweep",
TaggingRules->{
 "ModificationHighlight" -> False, "ColorType" -> "", "LinkTrails" -> "", 
  "ExampleCounter" -> 1, 
  "Openers" -> {
   "PrimaryExamplesSection" -> Open, "ExampleSection" -> {"0" -> Open}, 
    "AllOptsTable" -> Closed}, "NewStyles" -> True, 
  "CitationPopupData" -> $Failed, "ShowCitation" -> False, "HasOptions" -> 
  True, "RootCaptions" -> "", "HeaderCoreAreaLink" -> {}, 
  "Metadata" -> {
   "built" -> "{2026, 8, 27, 0, 11, 6.219535}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {}, "specialkeywords" -> {}, 
    "tutorialcollectionlinks" -> {}, "index" -> True, "label" -> 
    "Wolfram Institute/ Puzzles Symbol", "language" -> "en", "paclet" -> 
    "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "PackageLink[CandidateSweep,paclet : \
WolframInstitute/Puzzles/ref/CandidateSweep, WolframInstitute/Puzzles Package \
Symbol][enum, oracle] tests every candidate of a \
PackageLink[CandidateEnumeration, paclet : \
WolframInstitute/Puzzles/ref/CandidateEnumeration, WolframInstitute/Puzzles \
Package Symbol] with an oracle and gives an Association reporting the hits, \
how many candidates were tested and skipped, the index reached, whether the \
sweep is complete, and why it stopped. PackageLink[CandidateSweep,paclet : \
WolframInstitute/Puzzles/ref/CandidateSweep, WolframInstitute/Puzzles Package \
Symbol][enum, oracle, Checkpoint ->  file] writes progress to a JSON file \
after every chunk and resumes from it if it is already there. \
PackageLink[CandidateSweep,paclet : \
WolframInstitute/Puzzles/ref/CandidateSweep, WolframInstitute/Puzzles Package \
Symbol][enum, oracle, Ledger -> ledger, Target ->  target] drops candidates a \
PackageLink[SearchLedger, paclet : WolframInstitute/Puzzles/ref/SearchLedger, \
WolframInstitute/Puzzles Package Symbol] already records against the target, \
and records the ones it tests.", "synonyms" -> {}, "tabletags" -> {}, "title" -> 
    "CandidateSweep", "titlemodifier" -> "", "metadescription" -> "", 
    "windowtitle" -> "CandidateSweep", "type" -> "Symbol", "uri" -> 
    "WolframInstitute/Puzzles/ref/CandidateSweep", "WorkflowDockedCell" -> 
    ""}, "SearchTextTranslated" -> ""},
CellContext->CellGroup,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"a1ba4ff4-1e09-4523-801b-8882619b5bad"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "TextAnnotation"->{
  Cell[32688, 818, 380, 10, 70, "ExampleText",ExpressionUUID->"5cfbc836-eeaa-49a1-adb9-d0b2dbac327c",
   CellTags->"TextAnnotation"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"TextAnnotation", 121931, 3070}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[582, 21, 6051, 147, 70, "AnchorBarGrid",ExpressionUUID->"a406d8e1-cea2-4b13-82f9-68211a028e3d",
 CellID->1],
Cell[6636, 170, 107, 0, 70, "ContextNameCell",ExpressionUUID->"854571e9-2753-40ca-b6da-7d715a742cdb"],
Cell[CellGroupData[{
Cell[6768, 174, 557, 14, 70, "ObjectNameGrid",ExpressionUUID->"464ca88e-2a9a-4be5-9813-097abeec4578"],
Cell[7328, 190, 3687, 93, 70, "Usage",ExpressionUUID->"6aecc68d-0cb7-4b1c-a708-39dbf87e8887"]
}, Open  ]],
Cell[CellGroupData[{
Cell[11052, 288, 1444, 34, 70, "NotesSection",ExpressionUUID->"f67e9250-8f03-4f02-86bc-6f9deeb51bad",
 CellGroupingRules->{"SectionGrouping", 50},
 CellID->1346274520],
Cell[12499, 324, 502, 12, 70, "Notes",ExpressionUUID->"9d2ea737-c525-447e-9fc4-2a7460f61971"],
Cell[13004, 338, 436, 9, 70, "Notes",ExpressionUUID->"338c7bc1-bfa3-4339-984b-ac1c970ade6b"],
Cell[13443, 349, 1965, 53, 70, "Notes",ExpressionUUID->"787000ac-a0d7-4dd7-b0ab-2d4bdf8ad99f"],
Cell[15411, 404, 805, 21, 70, "Notes",ExpressionUUID->"76e7e857-fecf-4318-96a6-a8f64b52b7bc"],
Cell[16219, 427, 471, 8, 70, "Notes",ExpressionUUID->"921ffbb9-9c71-4800-9599-4bef26211110"],
Cell[16693, 437, 751, 18, 70, "Notes",ExpressionUUID->"0efb4549-2fc2-4844-b6af-13ef29a0281c"],
Cell[17447, 457, 257, 4, 70, "Notes",ExpressionUUID->"feb31d66-6e2f-4ea6-aa6a-ed9091aad9a8"],
Cell[17707, 463, 736, 18, 70, "Notes",ExpressionUUID->"b12d6c88-6eeb-41de-9ab1-a9ebbcec07e3"],
Cell[18446, 483, 651, 15, 70, "Notes",ExpressionUUID->"ea6ef1ce-1fda-48f6-8d12-d2145649e78c"],
Cell[19100, 500, 1181, 32, 70, "Notes",ExpressionUUID->"2178e75d-2df6-4a7a-8a86-1c66e38115a8"],
Cell[20284, 534, 649, 14, 70, "Notes",ExpressionUUID->"11d3cdd2-ee70-4976-bf05-39077acb5a11"],
Cell[20936, 550, 358, 7, 70, "Notes",ExpressionUUID->"17102a2d-3e27-4404-a074-19ee184f93df"],
Cell[21297, 559, 8387, 172, 70, "3ColumnTableMod",ExpressionUUID->"bbeb5bbc-1bb4-451b-a310-35d39dc032f1"]
}, Closed]],
Cell[29699, 734, 80, 0, 70, "PageDelimiter",ExpressionUUID->"dcdc2ca8-fdc2-4952-9265-cfa8207f58fc"],
Cell[CellGroupData[{
Cell[29804, 738, 1401, 37, 70, "PrimaryExamplesSection",ExpressionUUID->"4326461b-d319-4469-9b8c-8c07e8a14f8b",
 CellID->948152848],
Cell[31208, 777, 216, 4, 70, "Input",ExpressionUUID->"9adc621a-9eb9-4285-8d04-a62762edea86",
 CellID->1969679695],
Cell[CellGroupData[{
Cell[31449, 785, 1236, 31, 70, "ExampleSection",ExpressionUUID->"688787da-b7a4-4544-882d-caa40efcfb23",
 CellID->1276255596],
Cell[32688, 818, 380, 10, 70, "ExampleText",ExpressionUUID->"5cfbc836-eeaa-49a1-adb9-d0b2dbac327c",
 CellTags->"TextAnnotation"],
Cell[CellGroupData[{
Cell[33093, 832, 915, 21, 70, "Input",ExpressionUUID->"3b5b330a-6ab1-452f-be0c-2b0409c1fe70"],
Cell[34011, 855, 139, 2, 70, "Output",ExpressionUUID->"21067457-d9a7-4b81-bc28-9d679befc53a"]
}, Open  ]],
Cell[CellGroupData[{
Cell[34187, 862, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"44d8c83a-41e2-44d2-b087-763c15d7b50e"],
Cell[34414, 869, 108, 0, 70, "ExampleText",ExpressionUUID->"8f9518e3-61d8-4a29-a18d-f32e34440ee5"],
Cell[CellGroupData[{
Cell[34547, 873, 993, 24, 70, "Input",ExpressionUUID->"eb91aebd-2484-4add-b32b-9c969fbcd2a5"],
Cell[35543, 899, 646, 14, 70, "Output",ExpressionUUID->"ea1bfdf9-398c-439c-a0f3-42af412f516a"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[36238, 919, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"5230eca3-32b7-4e24-b047-ffe59190d233"],
Cell[36465, 926, 138, 1, 70, "ExampleText",ExpressionUUID->"d09d5114-92d3-4c91-8977-40aefa2a69e7"],
Cell[CellGroupData[{
Cell[36628, 931, 670, 16, 70, "Input",ExpressionUUID->"145f5aa9-2cbd-4135-87bc-9c6e2d143d67"],
Cell[37301, 949, 199, 5, 70, "Output",ExpressionUUID->"54c67aad-93dc-45a3-a90d-a3b7507f1829"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[37549, 960, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"f1ee0ea3-a06b-4c56-ad8a-117d8e20270b"],
Cell[37776, 967, 170, 3, 70, "ExampleText",ExpressionUUID->"83353732-b57a-47a9-b513-9534248fb2a2"],
Cell[CellGroupData[{
Cell[37971, 974, 919, 22, 70, "Input",ExpressionUUID->"0b46de6c-7cb6-420a-befc-0114531ef7b6"],
Cell[38893, 998, 231, 3, 70, "Output",ExpressionUUID->"3a78a0b8-3ae1-4f7f-b14f-abe53570d07e"]
}, Open  ]]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[39185, 1008, 1227, 31, 70, "ExampleSection",ExpressionUUID->"34647c1a-9dec-4d05-aff8-d720e0fa3d44",
 CellID->1293636265],
Cell[40415, 1041, 186, 3, 70, "ExampleText",ExpressionUUID->"0c7abbca-d5e3-47a7-a14f-08b888278422"],
Cell[CellGroupData[{
Cell[40626, 1048, 647, 14, 70, "Input",ExpressionUUID->"b6fc6d74-0072-4bab-a358-35543c41eaa2"],
Cell[41276, 1064, 129, 2, 70, "Output",ExpressionUUID->"3c51f0c9-f00f-489f-b6b9-bc3810b5604f"]
}, Open  ]],
Cell[CellGroupData[{
Cell[41442, 1071, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"1d45d7b7-848e-453b-b977-58d7e360a659"],
Cell[41669, 1078, 121, 0, 70, "ExampleText",ExpressionUUID->"a2bf9be7-da4d-4ba0-87c5-0870fc79c82e"],
Cell[CellGroupData[{
Cell[41815, 1082, 974, 23, 70, "Input",ExpressionUUID->"69808964-56db-48b9-9daf-a1831b4cbea6"],
Cell[42792, 1107, 160, 3, 70, "Output",ExpressionUUID->"cccdddfb-bfb8-4c48-8edc-59721e47230e"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[43001, 1116, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"bb2a13ad-2db0-4c67-84b1-b2cf2a30a094"],
Cell[43228, 1123, 134, 0, 70, "ExampleText",ExpressionUUID->"91c56ac4-298f-4cee-acff-28c1ae6dee6a"],
Cell[CellGroupData[{
Cell[43387, 1127, 559, 13, 70, "Input",ExpressionUUID->"ab25e884-82d1-4a09-b87e-ee9ade1c580e"],
Cell[43949, 1142, 181, 3, 70, "Output",ExpressionUUID->"a92d35de-27a3-47ed-ba58-fea765778f47"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[44191, 1152, 1229, 31, 70, "ExampleSection",ExpressionUUID->"0cf47e4b-b212-4e43-8177-f66b166f6cec",
 CellID->2061341341],
Cell[CellGroupData[{
Cell[45445, 1187, 1216, 30, 70, "ExampleSubsection",ExpressionUUID->"5bd7deba-5d4b-4e22-ad00-ff8ff5525e4e"],
Cell[46664, 1219, 158, 2, 70, "ExampleText",ExpressionUUID->"93b59841-e6d7-42a4-bedc-db6edef74ecc"],
Cell[CellGroupData[{
Cell[46847, 1225, 1058, 25, 70, "Input",ExpressionUUID->"5302c59d-f6eb-4ada-a59b-f5ea90a45e79"],
Cell[47908, 1252, 173, 3, 70, "Output",ExpressionUUID->"bbec3ad7-3f44-4945-b49f-7180a77251a8"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[48130, 1261, 1223, 30, 70, "ExampleSubsection",ExpressionUUID->"444d5232-60df-400b-b457-5e4f9d275dec"],
Cell[49356, 1293, 139, 1, 70, "ExampleText",ExpressionUUID->"8b741f86-89de-48b0-ba69-bf90f2ef2002"],
Cell[CellGroupData[{
Cell[49520, 1298, 980, 23, 70, "Input",ExpressionUUID->"08066d57-332d-426b-9fbe-d2714136366b"],
Cell[50503, 1323, 495, 11, 70, "Output",ExpressionUUID->"e3b01d14-f36d-4c33-acc0-ebb1b408976f"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[51047, 1340, 1214, 30, 70, "ExampleSubsection",ExpressionUUID->"d10f6f24-3114-410e-8a24-f2c76972ed24"],
Cell[52264, 1372, 154, 2, 70, "ExampleText",ExpressionUUID->"2aa61ba1-9bae-4967-97c8-6be017cdb3d3"],
Cell[CellGroupData[{
Cell[52443, 1378, 830, 18, 70, "Input",ExpressionUUID->"5bd8c542-3729-4fb1-8c63-e562ab096da5"],
Cell[53276, 1398, 180, 3, 70, "Output",ExpressionUUID->"38087bfb-5f21-4b2a-9f32-d32d937bf615"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[53505, 1407, 1218, 30, 70, "ExampleSubsection",ExpressionUUID->"0f581db1-87da-4f4f-b215-db80188aa25a"],
Cell[54726, 1439, 122, 0, 70, "ExampleText",ExpressionUUID->"7faa3da6-f661-4d43-bc34-3098c3fad786"],
Cell[CellGroupData[{
Cell[54873, 1443, 839, 19, 70, "Input",ExpressionUUID->"1887aafd-30e4-4d55-a862-b33f0df8f5ed"],
Cell[55715, 1464, 137, 2, 70, "Output",ExpressionUUID->"1800b8ed-ec77-4def-9e4b-e8885664a931"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[55901, 1472, 1221, 30, 70, "ExampleSubsection",ExpressionUUID->"1d553b18-60ab-49bc-a311-1f50b423ffe7"],
Cell[57125, 1504, 173, 3, 70, "ExampleText",ExpressionUUID->"be5094e6-8d58-421e-a486-06a13a7b216d"],
Cell[CellGroupData[{
Cell[57323, 1511, 738, 16, 70, "Input",ExpressionUUID->"247df5b8-d037-4bea-9a9a-1222c7821eea"],
Cell[58064, 1529, 189, 4, 70, "Output",ExpressionUUID->"c511db3c-d2b3-48c0-89c7-9d5fe0f9073d"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[58302, 1539, 1217, 30, 70, "ExampleSubsection",ExpressionUUID->"1bd76ca0-4697-45f6-ace0-939de1a35b63"],
Cell[59522, 1571, 211, 3, 70, "ExampleText",ExpressionUUID->"ef92c529-02eb-428b-96ea-1f0d350f7e37"],
Cell[CellGroupData[{
Cell[59758, 1578, 1935, 45, 70, "Input",ExpressionUUID->"4b8ce2da-7481-428f-8c81-4f2b4aca8c69"],
Cell[61696, 1625, 165, 3, 70, "Output",ExpressionUUID->"51f66e1a-0fb9-4482-ba59-195e301efe51"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[61910, 1634, 1224, 30, 70, "ExampleSubsection",ExpressionUUID->"788ccb1e-8f42-4e2a-82e6-ffffaeb5973c"],
Cell[63137, 1666, 159, 2, 70, "ExampleText",ExpressionUUID->"7ff95ebf-008f-4384-bbbe-a1dfb8c45fbd"],
Cell[CellGroupData[{
Cell[63321, 1672, 2064, 51, 70, "Input",ExpressionUUID->"29eff22f-a694-4ecc-9741-cc3dfe1da3d5"],
Cell[65388, 1725, 250, 7, 70, "Output",ExpressionUUID->"88273ab0-1b16-4b95-aa28-787643ac93f8"]
}, Open  ]]
}, Closed]]
}, Closed]],
Cell[CellGroupData[{
Cell[65699, 1739, 1233, 31, 70, "ExampleSection",ExpressionUUID->"1b85efcb-ad21-4080-ad54-16acc90f890d",
 CellID->258228157],
Cell[66935, 1772, 209, 3, 70, "ExampleText",ExpressionUUID->"2a99dc58-1b24-4ef8-85f7-427db0adb330"],
Cell[CellGroupData[{
Cell[67169, 1779, 2056, 51, 70, "Input",ExpressionUUID->"004f1c7d-f91b-4596-98ef-c49e4258bbd9"],
Cell[69228, 1832, 196, 4, 70, "Output",ExpressionUUID->"6aea9557-0bfd-4d0f-b668-2b5432c1f93f"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[69473, 1842, 1244, 31, 70, "ExampleSection",ExpressionUUID->"86492b9c-c469-40c5-a62c-34973c33abce",
 CellID->2123667759],
Cell[70720, 1875, 537, 14, 70, "ExampleText",ExpressionUUID->"510ebd9f-0565-406c-b49a-261df0d1d135"],
Cell[CellGroupData[{
Cell[71282, 1893, 1702, 43, 70, "Input",ExpressionUUID->"bfb7ba4c-331e-48d7-b29a-c0880be41158"],
Cell[72987, 1938, 110, 1, 70, "Output",ExpressionUUID->"b1216d07-cde8-4309-b8de-330501093c56"]
}, Open  ]],
Cell[CellGroupData[{
Cell[73134, 1944, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"0ad990ef-30eb-4f43-b11a-234a31470b69"],
Cell[73361, 1951, 515, 14, 70, "ExampleText",ExpressionUUID->"5ad2775e-98c7-410b-9a74-2a267f170aa2"],
Cell[CellGroupData[{
Cell[73901, 1969, 1272, 31, 70, "Input",ExpressionUUID->"1a674b39-19e5-4c79-9db8-18825a44172d"],
Cell[75176, 2002, 110, 1, 70, "Output",ExpressionUUID->"835c3d28-f428-44f7-96bb-c73ff280f93b"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[75347, 2010, 1237, 31, 70, "ExampleSection",ExpressionUUID->"0550a2a0-d809-45b9-a9c3-0fd04cbc9534",
 CellID->1305812373],
Cell[76587, 2043, 172, 3, 70, "ExampleText",ExpressionUUID->"faa99770-6846-41da-bdf4-cf4122bdfc96"],
Cell[CellGroupData[{
Cell[76784, 2050, 1325, 32, 70, "Input",ExpressionUUID->"1f49d8b5-24ab-498c-9a26-64d1a72e2d5e"],
Cell[78112, 2084, 8900, 184, 70, "Output",ExpressionUUID->"6a142b4d-7af0-4390-bac5-14bd0170441b"]
}, Open  ]],
Cell[CellGroupData[{
Cell[87049, 2273, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"686ce626-b95b-4d8a-86a7-3a3e3290f0ca"],
Cell[87276, 2280, 132, 0, 70, "ExampleText",ExpressionUUID->"461ec6bf-cad9-4131-b1d6-0c48fb54cf88"],
Cell[CellGroupData[{
Cell[87433, 2284, 651, 15, 70, "Input",ExpressionUUID->"39120ec4-bf84-4ae5-9215-3ffa5754bc37"],
Cell[88087, 2301, 7939, 166, 70, "Output",ExpressionUUID->"f0f1accf-8d3d-47e9-abfb-d1b986137c54"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[96075, 2473, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"5a4d0b7c-39a0-40c2-bd9e-68744bd705ba"],
Cell[96302, 2480, 169, 3, 70, "ExampleText",ExpressionUUID->"2d20ea87-2c29-4644-b002-485bed756e5e"],
Cell[CellGroupData[{
Cell[96496, 2487, 447, 9, 70, "Input",ExpressionUUID->"973c3135-1bf5-421b-ba6f-3e2f769b356a"],
Cell[96946, 2498, 7998, 169, 70, "Output",ExpressionUUID->"b5ce42ca-3855-462b-ad10-5fb96e62df02"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[104993, 2673, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"a7b6d709-6320-4ffc-8e37-936f613f187d"],
Cell[105220, 2680, 124, 0, 70, "ExampleText",ExpressionUUID->"61d1804c-724c-40a6-86eb-fdc3b9bb5277"],
Cell[CellGroupData[{
Cell[105369, 2684, 543, 13, 70, "Input",ExpressionUUID->"3e57eac8-cdde-4db2-8397-b446d963e928"],
Cell[105915, 2699, 7581, 156, 70, "Output",ExpressionUUID->"8f75e313-06ac-4abf-ab0a-14b93999f941"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[113545, 2861, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"da363552-f637-4e80-bbeb-1cfd46085ca9"],
Cell[113772, 2868, 159, 2, 70, "ExampleText",ExpressionUUID->"ace7939c-74e6-4a42-8a33-6a7c59aaafa1"],
Cell[CellGroupData[{
Cell[113956, 2874, 369, 8, 70, "Input",ExpressionUUID->"e2e00927-f3e8-475e-a3c3-9d5e7c8f3ef5"],
Cell[114328, 2884, 307, 7, 70, "Output",ExpressionUUID->"d71ec6a7-5be4-4b51-bca2-315b4d00eaf2"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],
Cell[114686, 2897, 3737, 97, 70, "SeeAlsoSection",ExpressionUUID->"6f1bf761-7349-4453-bc3e-8d2a184e6e0d"],
Cell[118426, 2996, 692, 19, 70, "MoreAboutSection",ExpressionUUID->"25906936-7bb1-41fe-a0d2-f430429c7d82"],
Cell[119121, 3017, 78, 0, 70, "FooterCell",ExpressionUUID->"99c64fc0-6c6a-4e77-8704-3956b9bf48d0"]
}
]
*)

(* End of internal cache information *)

