(* Content-type: application/vnd.wolfram.mathematica *) (*** Wolfram Notebook File ***) (* http://www.wolfram.com/nb *) (* CreatedBy='Mathematica 8.0' *) (*CacheID: 234*) (* Internal cache information: NotebookFileLineBreakTest NotebookFileLineBreakTest NotebookDataPosition[ 157, 7] NotebookDataLength[ 56326, 1382] NotebookOptionsPosition[ 55930, 1365] NotebookOutlinePosition[ 56387, 1383] CellTagsIndexPosition[ 56344, 1380] WindowFrame->Normal*) (* Beginning of Notebook Content *) Notebook[{ Cell[TextData[StyleBox["In the light blue cell below, edit the values of k, \ verbose, and maxSteps, as desired. ", "Subsubtitle", FontColor->RGBColor[0.5, 0, 0.5]]], "Text", CellChangeTimes->{{3.518653028089147*^9, 3.5186530600556507`*^9}, { 3.518653185678896*^9, 3.5186531934699183`*^9}, {3.518653452965423*^9, 3.518653467834882*^9}, {3.533744115761052*^9, 3.533744116689831*^9}, { 3.533744432659567*^9, 3.533744461541913*^9}, {3.5340095182180767`*^9, 3.534009525157593*^9}, {3.534091233097081*^9, 3.534091253344233*^9}, { 3.534204485992084*^9, 3.534204493477866*^9}}], Cell[BoxData[{ RowBox[{ RowBox[{ RowBox[{"k", " ", "=", " ", "15"}], ";", " ", RowBox[{"(*", " ", RowBox[{ "We", " ", "work", " ", "with", " ", "Stirling", " ", "numbers", " ", "of", " ", "the", " ", "form", " ", FormBox[ RowBox[{ StyleBox["S", "TI"], "(", RowBox[{ StyleBox["n", "TI"], ",", StyleBox["k", "TI"]}], ")"}], TraditionalForm], " ", "where", " ", StyleBox["k", "TI"], " ", "is", " ", RowBox[{"fixed", "."}]}], " ", "*)"}], " ", "\n", RowBox[{"verbose", "=", "True"}], ";", " ", RowBox[{"(*", " ", RowBox[{ RowBox[{ "When", " ", "verbose", " ", "is", " ", "set", " ", "to", " ", "true"}], ",", " ", RowBox[{"the", " ", "intermediate", " ", "calculations", " ", "are", " ", RowBox[{"displayed", "."}]}]}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"maxSteps", "=", "7"}], ";", " ", RowBox[{"(*", " ", RowBox[{ RowBox[{ "This", " ", "is", " ", "the", " ", "maximum", " ", "depth", " ", "to", " ", "be", " ", RowBox[{"investigated", ".", " ", "If"}], " ", "you", " ", RowBox[{"don", "'"}], "t", " ", "want", " ", "a", " ", "maximal", " ", "setting"}], ",", " ", RowBox[{"define", " ", "maxSteps", " ", "to", " ", "be", " ", RowBox[{"Infinity", "."}]}]}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"checkClasses", "=", "False"}], ";", " ", RowBox[{"(*", " ", RowBox[{ RowBox[{"For", " ", "some", " ", "values", " ", "of", " ", "k"}], ",", " ", RowBox[{ "there", " ", "might", " ", "not", " ", "be", " ", "a", " ", "Proposition", " ", "of", " ", "the", " ", "form", " ", FormBox[ RowBox[{ RowBox[{ RowBox[{ StyleBox["S", "TI"], "(", RowBox[{ StyleBox["n", "TI"], ",", StyleBox["k", "TI"]}], ")"}], "\[NotCongruent]", RowBox[{ RowBox[{ StyleBox["S", "TI"], "(", RowBox[{ RowBox[{ StyleBox["n", "TI"], "+", SuperscriptBox["2", StyleBox["m", "TI"]]}], ",", StyleBox["k", "TI"]}], ")"}], " ", "mod", SuperscriptBox["2", RowBox[{ StyleBox["m", "TI"], StyleBox["+", "TI"], StyleBox["L", "TI"], "-", SubscriptBox[ StyleBox["b", "TI"], StyleBox["k", "TI"]]}]], " ", "for", " ", "sufficiently", " ", "large", " ", RowBox[{"n", ".", " ", "If"}], " ", "this", " ", "is", " ", "the", " ", "case"}]}], ",", " ", RowBox[{ "then", " ", "checkClasses", " ", "should", " ", "be", " ", "set", " ", "to", " ", RowBox[{"True", ".", " ", "In"}], " ", "particular"}], ",", " ", RowBox[{ RowBox[{"this", " ", "occurs", " ", "for", " ", "k"}], "=", "13.", " "}]}], TraditionalForm]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ RowBox[{ FormBox[ RowBox[{"Below", ",", " ", RowBox[{ "the", " ", "shift", " ", "is", " ", "defined", " ", "as", " ", RowBox[{ SubscriptBox["\[Nu]", "2"], "(", RowBox[{ StyleBox["k", "TI"], "!"}], ")"}]}]}], TraditionalForm], " ", "which", " ", "is", " ", "commonly", " ", "used", " ", "in", " ", "conjunction", " ", "with", " ", "the", " ", "identity", " ", FormBox[ RowBox[{ RowBox[{ RowBox[{ StyleBox["k", "TI"], "!"}], RowBox[{"S", "(", StyleBox[ RowBox[{"n", ",", "k"}], "TI"], ")"}]}], "\[LongEqual]", RowBox[{ SuperscriptBox[ RowBox[{"(", RowBox[{"-", "1"}], ")"}], StyleBox["k", "TI"]], RowBox[{ UnderoverscriptBox["\[Sum]", RowBox[{ StyleBox["t", "TI"], "=", "1"}], StyleBox["k", "TI"], LimitsPositioning->True], RowBox[{ SuperscriptBox[ RowBox[{"(", RowBox[{"-", "1"}], ")"}], StyleBox["t", "TI"]], RowBox[{"(", GridBox[{ { StyleBox["k", "TI"]}, { StyleBox["t", "TI"]} }], ")"}], RowBox[{ SuperscriptBox[ StyleBox["t", "TI"], StyleBox["n", "TI"]], "."}]}]}]}]}], TraditionalForm], "The", " ", "term", " ", FormBox[ StyleBox["b", "TI"], TraditionalForm], " ", "below", " ", "appears", " ", "in", " ", "the", " ", "identity", " ", RowBox[{ FormBox[ RowBox[{ RowBox[{ StyleBox["S", "TI"], "(", RowBox[{ StyleBox["n", "TI"], ",", StyleBox["k", "TI"]}], ")"}], "\[Congruent]", RowBox[{ RowBox[{ StyleBox["S", "TI"], "(", RowBox[{ RowBox[{ StyleBox["n", "TI"], "+", SuperscriptBox["2", StyleBox["m", "TI"]]}], ",", StyleBox["k", "TI"]}], ")"}], " ", "mod", SuperscriptBox["2", RowBox[{ StyleBox["m", "TI"], "-", SubscriptBox[ StyleBox["b", "TI"], StyleBox["k", "TI"]]}]]}]}], TraditionalForm], ".", " ", "For"}], " ", "any", " ", "odd", " ", "integer", " ", FormBox[ StyleBox["t", "TI"], TraditionalForm]}], ",", " ", RowBox[{"non", "-", RowBox[{"negative", " ", "integer", " ", FormBox[ StyleBox["s", "TI"], TraditionalForm]}]}], ",", RowBox[{"positive", " ", "integer", " ", FormBox[ RowBox[{ RowBox[{ StyleBox["m", "TI"], "\[GreaterEqual]", RowBox[{"s", "+", "1"}]}], ",", " ", RowBox[{"the", " ", "function"}]}], TraditionalForm], " ", RowBox[{"binaryRep", "[", RowBox[{"s_", ",", "t_"}], "]"}], " ", "produces", " ", "a", " ", "vector", " ", FormBox[ RowBox[{"(", RowBox[{ SubscriptBox[ StyleBox["c", "TI"], "0"], ",", SubscriptBox[ StyleBox["c", "TI"], "1"], ",", "\[Ellipsis]", ",", SubscriptBox[ StyleBox["c", "TI"], StyleBox["s", "TI"]]}], ")"}], TraditionalForm], " ", "such", " ", "that", " ", FormBox[ RowBox[{ SuperscriptBox[ StyleBox["t", "TI"], SuperscriptBox["2", StyleBox["m", "TI"]]], "\[Congruent]", RowBox[{"1", "+", RowBox[{ UnderoverscriptBox["\[Sum]", RowBox[{ StyleBox["i", "TI"], "=", "0"}], StyleBox["s", "TI"], LimitsPositioning->False], RowBox[{ SubscriptBox[ StyleBox["c", "TI"], StyleBox["i", "TI"]], SuperscriptBox["2", RowBox[{ StyleBox["m", "TI"], "+", "2", "+", StyleBox["i", "TI"]}]], " ", "mod", RowBox[{ SuperscriptBox["2", RowBox[{ StyleBox["m", "TI"], "+", StyleBox["s", "TI"], "+", "3"}]], "."}]}]}]}]}], TraditionalForm]}]}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"binaryRep", "[", RowBox[{"s_", ",", "t_"}], "]"}], ":=", RowBox[{"Part", "[", RowBox[{ RowBox[{"Reverse", "[", RowBox[{"PadLeft", "[", RowBox[{ RowBox[{"IntegerDigits", "[", RowBox[{ RowBox[{"Mod", "[", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"PowerMod", "[", RowBox[{"t", ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"s", "+", "1"}], ")"}]}], ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{ RowBox[{"2", "*", "s"}], "+", "4"}], ")"}]}]}], "]"}], "-", "1"}], ")"}], "/", RowBox[{"(", RowBox[{"2", "^", RowBox[{"(", RowBox[{"s", "+", "3"}], ")"}]}], ")"}]}], ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"s", "+", "1"}], ")"}]}]}], "]"}], ",", "2"}], "]"}], ",", RowBox[{"s", "+", "1"}]}], "]"}], "]"}], ",", RowBox[{"1", ";;", RowBox[{"s", "+", "1"}]}]}], "]"}]}]}], "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ RowBox[{ "We", " ", "will", " ", "commonly", " ", "use", " ", "the", " ", "following", " ", "identity", " ", RowBox[{ FormBox[ RowBox[{ RowBox[{ RowBox[{ RowBox[{ StyleBox["k", "TI"], "!"}], RowBox[{ StyleBox["S", "TI"], "(", RowBox[{ RowBox[{ StyleBox["n", "TI"], "+", SuperscriptBox["2", StyleBox["m", "TI"]]}], ",", StyleBox["k", "TI"]}], ")"}]}], "-", RowBox[{ RowBox[{ StyleBox["k", "TI"], "!"}], RowBox[{ StyleBox["S", "TI"], "(", RowBox[{ StyleBox["n", "TI"], ",", StyleBox["k", "TI"]}], ")"}]}]}], "\[LongEqual]", RowBox[{ SuperscriptBox[ RowBox[{"(", RowBox[{"-", "1"}], ")"}], StyleBox["k", "TI"]], RowBox[{ UnderoverscriptBox["\[Sum]", RowBox[{ StyleBox["t", "TI"], "=", "1"}], StyleBox["k", "TI"], LimitsPositioning->True], RowBox[{ SuperscriptBox[ RowBox[{"(", RowBox[{"-", "1"}], ")"}], StyleBox["t", "TI"]], RowBox[{"(", GridBox[{ { StyleBox["k", "TI"]}, { StyleBox["t", "TI"]} }], ")"}], RowBox[{ SuperscriptBox[ StyleBox["t", "TI"], StyleBox["n", "TI"]], "(", RowBox[{ SuperscriptBox[ StyleBox["t", "TI"], SuperscriptBox["2", StyleBox["m", "TI"]]], "-", "1"}], ")"}]}]}]}]}], TraditionalForm], ".", " ", "Below"}], " ", "we", " ", "extract", " ", "the", " ", "terms", " ", "of", " ", "the", " ", "difference", " ", "when", " ", "t", " ", "is", " ", RowBox[{"odd", ".", " ", "For"}], " ", "the", " ", "terms", " ", "where", " ", "t", " ", "is", " ", "even"}], ",", " ", RowBox[{"when", " ", "n", " ", "is", " ", "large", " ", "enough"}], ",", " ", RowBox[{"we", " ", "observe", " ", "that", " ", RowBox[{"t", "^", "n"}], " ", "is", " ", "congruent", " ", "to", " ", "0", " ", "modulo", " ", RowBox[{"2", "^", RowBox[{"(", RowBox[{"10", "+", "m"}], ")"}]}], " ", "or", " ", "whatever", " ", "it", " ", "might", " ", RowBox[{"be", ".", " ", "Since"}], " ", "we", " ", "are", " ", "only", " ", "interested", " ", "in", " ", "whether", " ", "the", " ", "expression", " ", "is", " ", "congruent", " ", "to", " ", "0"}], ",", " ", RowBox[{"we", " ", "ignore", " ", "the", " ", "factor", " ", RowBox[{ SuperscriptBox[ RowBox[{"(", RowBox[{"-", "1"}], ")"}], StyleBox["k", "TI"]], "."}]}]}], "*)"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{ RowBox[{"diffS", "[", RowBox[{"n_", ",", "k_", ",", "m_"}], "]"}], ":=", RowBox[{"Sum", "[", RowBox[{ RowBox[{ RowBox[{"Binomial", "[", RowBox[{"k", ",", "t"}], "]"}], "*", RowBox[{"t", "^", "n"}], "*", RowBox[{"(", RowBox[{ RowBox[{"t", "^", RowBox[{"(", RowBox[{"2", "^", "m"}], ")"}]}], "-", "1"}], ")"}]}], ",", RowBox[{"{", RowBox[{"t", ",", "3", ",", "k", ",", "2"}], "}"}]}], "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ "The", " ", "following", " ", "function", " ", "takes", " ", "a", " ", "vector", " ", "of", " ", "length", " ", RowBox[{"2", "^", "a"}], " ", "and", " ", "finds", " ", "a", " ", "vector", " ", "of", " ", "length", " ", RowBox[{"2", "^", "m"}], " ", "such", " ", "that", " ", "when", " ", "repeated", " ", "forms", " ", "the", " ", "original", " ", RowBox[{"vector", "."}]}], " ", "*)"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{ RowBox[{"reduce", "[", "vect_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", "a", "}"}], ",", RowBox[{ RowBox[{"a", "=", RowBox[{"Length", "[", "vect", "]"}]}], ";", RowBox[{"While", "[", RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"(", RowBox[{"a", ">", "1"}], ")"}], "&&", RowBox[{"(", RowBox[{ RowBox[{"vect", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"a", "/", "2"}]}], "]"}], "]"}], "==", RowBox[{"vect", "[", RowBox[{"[", RowBox[{ RowBox[{ RowBox[{"a", "/", "2"}], "+", "1"}], ";;", "a"}], "]"}], "]"}]}], ")"}]}], ")"}], ",", RowBox[{"a", "=", RowBox[{"(", RowBox[{"a", "/", "2"}], ")"}]}]}], "]"}], ";", RowBox[{"vect", "[", RowBox[{"[", RowBox[{"1", ";;", "a"}], "]"}], "]"}]}]}], "]"}]}], ";"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"shift", "=", RowBox[{"IntegerExponent", "[", RowBox[{ RowBox[{"k", "!"}], ",", "2"}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"b", "=", RowBox[{ RowBox[{"Ceiling", "[", RowBox[{"Log", "[", RowBox[{"2", ",", "k"}], "]"}], "]"}], "-", "2"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", "b", ",", "\"\< and \!\(\*FormBox[ RowBox[{ StyleBox[\"n\", \"TI\"], \"\[GreaterEqual]\", RowBox[{ StyleBox[\"m\", \"TI\"], \"+\"}]}], TraditionalForm]\)\>\"", ",", RowBox[{"(", RowBox[{"shift", "-", "b"}], ")"}], ",", "\"\<, we have \!\(\*FormBox[ RowBox[{ StyleBox[\"S\", \"TI\"], \"(\", StyleBox[ RowBox[{\"n\", \",\"}], \"TI\"]}], TraditionalForm]\)\>\"", ",", "k", ",", "\"\<)\[Congruent]\!\(\* StyleBox[\"S\", \"TI\"]\)(\!\(\* StyleBox[\"n\", \"TI\"]\)+\!\(\*SuperscriptBox[\"2\", StyleBox[\"m\", \"TI\"]]\),\>\"", ",", "k", ",", "\"\<) mod \>\"", ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"m", "-", "b"}], ")"}]}], ",", "\"\<.\>\""}], "]"}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{ "Print", "[", "\"\<---------------------------------------------------\>\"", "]"}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ "The", " ", "function", " ", "below", " ", "determines", " ", "whether", " ", "nu_", RowBox[{"2", " ", "\\", "circ"}], " ", "S", RowBox[{"(", RowBox[{"_", ",", "k"}], ")"}], " ", "is", " ", "constant", " ", "on", " ", "the", " ", "congruence", " ", RowBox[{"class", " ", "[", "n", "]"}], "_", RowBox[{ RowBox[{"{", RowBox[{"2", "^", "m"}], "}"}], "."}]}], " ", "*)"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"constantClassQ", "[", RowBox[{"k_", ",", "m_", ",", "n_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"c", ",", "b", ",", "shift", ",", "en", ",", "j"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"en", "=", "n"}], ";", "\[IndentingNewLine]", RowBox[{"shift", "=", RowBox[{"IntegerExponent", "[", RowBox[{ RowBox[{"k", "!"}], ",", "2"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"b", "=", RowBox[{ RowBox[{"Ceiling", "[", RowBox[{"Log", "[", RowBox[{"2", ",", "k"}], "]"}], "]"}], "-", "2"}]}], ";", "\[IndentingNewLine]", RowBox[{"While", "[", RowBox[{ RowBox[{"Or", "[", RowBox[{ RowBox[{"en", "<", RowBox[{"m", "-", "b", "+", "shift"}]}], ",", RowBox[{"en", "<", "k"}]}], "]"}], ",", RowBox[{"en", "=", RowBox[{"en", "+", RowBox[{"2", "^", "m"}]}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"c", "=", RowBox[{"IntegerExponent", "[", RowBox[{ RowBox[{"StirlingS2", "[", RowBox[{"en", ",", "k"}], "]"}], ",", "2"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"m", ">", RowBox[{"c", "+", "b"}]}], ",", "True", ",", "\[IndentingNewLine]", RowBox[{"And", "[", RowBox[{ RowBox[{"Apply", "[", RowBox[{"And", ",", RowBox[{"Table", "[", RowBox[{ RowBox[{ RowBox[{"Mod", "[", RowBox[{ RowBox[{"StirlingS2", "[", RowBox[{ RowBox[{"en", "+", RowBox[{"j", "*", RowBox[{"2", "^", "m"}]}]}], ",", "k"}], "]"}], ",", RowBox[{"2", "^", "c"}]}], "]"}], "\[Equal]", "0"}], ",", RowBox[{"{", RowBox[{"j", ",", "0", ",", RowBox[{ RowBox[{"2", "^", RowBox[{"(", RowBox[{"c", "+", "b", "-", "m"}], ")"}]}], "-", "1"}]}], "}"}]}], "]"}]}], "]"}], ",", RowBox[{"Apply", "[", RowBox[{"And", ",", RowBox[{"Table", "[", RowBox[{ RowBox[{ RowBox[{"Mod", "[", RowBox[{ RowBox[{"StirlingS2", "[", RowBox[{ RowBox[{"en", "+", RowBox[{"j", "*", RowBox[{"2", "^", "m"}]}]}], ",", "k"}], "]"}], ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"c", "+", "1"}], ")"}]}]}], "]"}], "\[NotEqual]", "0"}], ",", RowBox[{"{", RowBox[{"j", ",", "0", ",", RowBox[{ RowBox[{"2", "^", RowBox[{"(", RowBox[{"c", "+", "1", "+", "b", "-", "m"}], ")"}]}], "-", "1"}]}], "}"}]}], "]"}]}], "]"}]}], "]"}]}], "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ RowBox[{ "If", " ", "the", " ", "result", " ", "below", " ", "is", " ", "True"}], ",", " ", RowBox[{"then", " ", "nu_", RowBox[{"2", " ", "\\", "circ"}], " ", "S", RowBox[{"(", RowBox[{"_", ",", "k"}], ")"}], " ", "is", " ", "constant", " ", "on", " ", "the", " ", "congruence", " ", RowBox[{"class", " ", "[", "n", "]"}], "_", RowBox[{"{", RowBox[{"2", "^", "m"}], "}"}], " ", "for", " ", "all", " ", RowBox[{"m", " ", "\\", "ge"}], " ", "em", " ", "and", " ", RowBox[{"n", " ", "\\", "equiv"}], " ", RowBox[{"d", " ", "\\", "mod"}], " ", RowBox[{ RowBox[{"2", "^", "M"}], "."}]}]}], " ", "*)"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"constantClassesQ", "[", RowBox[{"k_", ",", "em_", ",", "d_", ",", "M_"}], "]"}], ":=", "\[IndentingNewLine]", RowBox[{ RowBox[{"Length", "[", RowBox[{"Flatten", "[", RowBox[{"Position", "[", RowBox[{ RowBox[{"Table", "[", RowBox[{ RowBox[{"constantClassQ", "[", RowBox[{"k", ",", "em", ",", "j"}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", "d", ",", RowBox[{ RowBox[{"2", "^", "em"}], "-", "1"}], ",", RowBox[{"2", "^", "M"}]}], "}"}]}], "]"}], ",", "False"}], "]"}], "]"}], "]"}], "\[Equal]", "0"}]}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"proofIncomplete", "=", "True"}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"step", "=", "1"}], ";"}], "\[IndentingNewLine]"}], "\[IndentingNewLine]", RowBox[{"While", "[", RowBox[{"proofIncomplete", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"minimumM", "=", RowBox[{"shift", "+", "step", "-", "b", "-", "2"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"positions", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"equivs", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"base", "=", "3"}], ",", RowBox[{"base", "<=", "k"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"index", "=", RowBox[{ RowBox[{"(", RowBox[{"base", "-", "1"}], ")"}], "/", "2"}]}], ";", "\[IndentingNewLine]", RowBox[{"binrep", "=", RowBox[{"binaryRep", "[", RowBox[{ RowBox[{"shift", "+", "step", "-", "b", "-", "3"}], ",", "base"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ RowBox[{"Print", "[", "binrep", "]"}], ";"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"tempPositions", "=", RowBox[{"Flatten", "[", RowBox[{"Position", "[", RowBox[{"binrep", ",", "1"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"positions", "=", RowBox[{"Append", "[", RowBox[{"positions", ",", "tempPositions"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "positions", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"equivs", "=", RowBox[{"Append", "[", RowBox[{"equivs", ",", RowBox[{"1", "+", RowBox[{"Sum", "[", RowBox[{ RowBox[{"2", "^", RowBox[{"(", RowBox[{"m", "+", "1", "+", RowBox[{"positions", "[", RowBox[{"[", RowBox[{"index", ",", "j"}], "]"}], "]"}]}], ")"}]}], ",", RowBox[{"{", RowBox[{"j", ",", "1", ",", RowBox[{"Length", "[", RowBox[{"positions", "[", RowBox[{"[", "index", "]"}], "]"}], "]"}]}], "}"}]}], "]"}]}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"base", "=", RowBox[{"base", "+", "2"}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"lower", "=", "0"}], ";", "\[IndentingNewLine]", RowBox[{"lowerFlag", "=", "True"}], ";", "\[IndentingNewLine]", RowBox[{"While", "[", RowBox[{"lowerFlag", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"mStep", "=", RowBox[{"minimumM", "-", "lower"}]}], ";", "\[IndentingNewLine]", RowBox[{"lowerFlag", "=", RowBox[{"Apply", "[", RowBox[{"And", ",", RowBox[{"Table", "[", RowBox[{ RowBox[{ RowBox[{"Mod", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"PowerMod", "[", RowBox[{"base", ",", RowBox[{"(", RowBox[{"2", "^", RowBox[{"(", RowBox[{"mStep", "+", "b", "-", "2"}], ")"}]}], ")"}], ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"mStep", "+", "minimumM", "+", "2"}], ")"}]}]}], "]"}], "-", RowBox[{"(", RowBox[{"equivs", "[", RowBox[{"[", RowBox[{ RowBox[{"(", RowBox[{"base", "-", "1"}], ")"}], "/", "2"}], "]"}], "]"}], ")"}]}], "/.", RowBox[{"m", "\[Rule]", "mStep"}]}], ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"mStep", "+", "minimumM", "+", "2"}], ")"}]}]}], "]"}], "\[Equal]", "0"}], ",", RowBox[{"{", RowBox[{"base", ",", "3", ",", "k", ",", "2"}], "}"}]}], "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"lowerFlag", ",", RowBox[{"lower", "++"}], ","}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"lower", "=", RowBox[{"lower", "-", "1"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"verbose", ",", RowBox[{"Print", "[", RowBox[{"\"\\"", ",", "k", ",", "\"\<)\[Congruent]\!\(\* StyleBox[\"S\", \"TI\"]\)(\!\(\* StyleBox[\"n\", \"TI\"]\)+\!\(\*SuperscriptBox[\"2\", StyleBox[\"m\", \"TI\"]]\),\>\"", ",", "k", ",", "\"\<) mod \>\"", ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"m", "+", "step", "-", "b"}], ")"}]}], ",", "\"\<.\\nSince the largest power of 2 that divides \>\"", ",", "k", ",", "\"\\"", ",", "shift", ",", "\"\<,\>\"", ",", "\"\<\\nwe need to determine when \>\"", ",", "k", ",", "\"\\"", ",", "k", ",", "\"\<)\[Congruent]\>\"", ",", "k", ",", "\"\\"", ",", "k", ",", "\"\<) mod \>\"", ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"m", "+", "shift", "+", "step", "-", "b"}], ")"}]}], ",", "\"\<.\\nFor \!\(\* StyleBox[\"m\", \"TI\"]\)\[GreaterEqual]\>\"", ",", RowBox[{"minimumM", "-", "lower"}], ",", "\"\<, we have the following congruences mod \>\"", ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"m", "+", "shift", "+", "step", "-", "b"}], ")"}]}], ",", "\"\<:\>\""}], "]"}], ","}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"base", "=", "3"}], ",", RowBox[{"base", "<=", "k"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"index", "=", RowBox[{ RowBox[{"(", RowBox[{"base", "-", "1"}], ")"}], "/", "2"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"verbose", ",", RowBox[{"Print", "[", RowBox[{"\"\< \>\"", ",", RowBox[{"base", "^", RowBox[{"(", RowBox[{"2", "^", RowBox[{"(", "m", ")"}]}], ")"}]}], ",", "\"\< \[Congruent] \>\"", ",", RowBox[{"equivs", "[", RowBox[{"[", "index", "]"}], "]"}]}], "]"}], ","}], "]"}], ";", " ", "\[IndentingNewLine]", RowBox[{"base", "=", RowBox[{"base", "+", "2"}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ "Below", " ", "is", " ", "the", " ", "minimum", " ", "value", " ", "of", " ", "the", " ", "location", " ", "of", " ", "the", " ", "first", " ", "nonzero", " ", "entries", " ", "of", " ", "binrep"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"minlocation", "=", RowBox[{"Min", "[", RowBox[{ RowBox[{ RowBox[{"#", "[", RowBox[{"[", "1", "]"}], "]"}], "&"}], "/@", "positions"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"reps", "=", RowBox[{"Table", "[", RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{"2", "^", RowBox[{"(", RowBox[{ RowBox[{"positions", "[", RowBox[{"[", RowBox[{"index", ",", "j"}], "]"}], "]"}], "-", "minlocation"}], ")"}]}], ",", RowBox[{"{", RowBox[{"j", ",", "1", ",", RowBox[{"Length", "[", RowBox[{"positions", "[", RowBox[{"[", "index", "]"}], "]"}], "]"}]}], "}"}]}], "]"}], ",", RowBox[{"{", RowBox[{"index", ",", "1", ",", RowBox[{ RowBox[{"(", RowBox[{"k", "-", "1"}], ")"}], "/", "2"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"reducedExponent", "=", RowBox[{"minimumM", "+", "1", "-", "minlocation"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"verbose", ",", RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"minimumM", "-", "lower"}], ",", "\"\<, we have the following congruences mod 2^\>\"", ",", "reducedExponent", ",", "\"\<:\>\""}], "]"}], ","}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"base", "=", "3"}], ",", RowBox[{"base", "<=", "k"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"index", "=", RowBox[{ RowBox[{"(", RowBox[{"base", "-", "1"}], ")"}], "/", "2"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"verbose", ",", RowBox[{"Print", "[", RowBox[{"\"\< (\>\"", ",", RowBox[{"base", "^", RowBox[{"(", RowBox[{"2", "^", "m"}], ")"}]}], ",", "\"\<-1)/\>\"", ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"m", "+", "minlocation", "+", "1"}], ")"}]}], ",", "\"\< \[Congruent] \>\"", ",", RowBox[{"reps", "[", RowBox[{"[", "index", "]"}], "]"}]}], "]"}], ","}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"base", "=", RowBox[{"base", "+", "2"}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"verbose", ",", RowBox[{"Print", "[", RowBox[{"\"\True], RowBox[{SuperscriptBox[ RowBox[{\"(\", RowBox[{\"-\", \"1\"}], \")\"}], StyleBox[\"t\", \"TI\"]], RowBox[{\"(\", GridBox[{ { StyleBox[\"k\", \"TI\"]}, { StyleBox[\"t\", \"TI\"]} }], \")\"}], RowBox[{SuperscriptBox[ StyleBox[\"t\", \"TI\"], StyleBox[\"n\", \"TI\"]], \"(\", RowBox[{SuperscriptBox[ StyleBox[\"t\", \"TI\"], SuperscriptBox[\"2\", StyleBox[\"m\", \"TI\"]]], \"-\", \"1\"}], \")\"}]}]}]}]}]}], TraditionalForm]\).\\nWhenever \!\(\* StyleBox[\"n\", \"TI\"]\)\[GreaterEqual]\!\(\* StyleBox[\"m\", FontWeight->\"Plain\", FontSlant->\"Italic\"]\)\!\(\* StyleBox[\"+\", FontWeight->\"Plain\", FontSlant->\"Italic\"]\)\>\"", ",", RowBox[{"minimumM", "+", "2"}], ",", "\"\< the terms of this summation when t is even are congruent to 0 \ modulo \>\"", ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"m", "+", "minimumM", "-", "lower", "+", "2"}], ")"}]}], ",", "\"\<.\\nThus,\>\"", ",", "k", ",", "\"\\"", ",", "k", ",", "\"\<)-\>\"", ",", "k", ",", "\"\\"", ",", "k", ",", "\"\<) is congruent to the following expression mod \>\"", ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"m", "+", "shift", "+", "step", "-", "b"}], ")"}]}], ",", "\"\<:\>\""}], "]"}], ","}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"verbose", ",", RowBox[{"Print", "[", RowBox[{"\"\< \>\"", ",", RowBox[{"diffS", "[", RowBox[{"n", ",", "k", ",", "m"}], "]"}], ",", "\"\<.\>\""}], "]"}], ","}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"verbose", ",", RowBox[{"Print", "[", RowBox[{ "\"\\"", ",", "reducedExponent", ",", "\"\<:\>\""}], "]"}], ","}], "]"}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"testing", "[", "n_", "]"}], ":=", RowBox[{"Sum", "[", RowBox[{ RowBox[{ RowBox[{"Mod", "[", RowBox[{ RowBox[{ RowBox[{"Binomial", "[", RowBox[{"k", ",", "t"}], "]"}], "*", RowBox[{"reps", "[", RowBox[{"[", RowBox[{ RowBox[{"(", RowBox[{"t", "-", "1"}], ")"}], "/", "2"}], "]"}], "]"}]}], ",", RowBox[{"2", "^", "reducedExponent"}]}], "]"}], "*", RowBox[{"t", "^", "n"}]}], ",", RowBox[{"{", RowBox[{"t", ",", "3", ",", "k", ",", "2"}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"verbose", ",", RowBox[{"Print", "[", RowBox[{"\"\< \>\"", ",", RowBox[{"testing", "[", "n", "]"}], ",", "\"\<.\>\""}], "]"}], ","}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ "reducedTable", " ", "produces", " ", "the", " ", "locations", " ", "where", " ", "the", " ", "desired", " ", "congruence", " ", RowBox[{"holds", "."}]}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{" ", RowBox[{"Below", ",", " ", RowBox[{"{", RowBox[{"n", ",", "0", ",", RowBox[{ RowBox[{"2", "^", RowBox[{"(", "reducedExponent", ")"}]}], "-", "1"}]}], "}"}]}], "]"}], " ", "was", " ", "replaced", " ", "by", " ", RowBox[{"{", RowBox[{"n", ",", "0", ",", RowBox[{ RowBox[{"2", "^", RowBox[{"(", RowBox[{"reducedExponent", "-", "2"}], ")"}]}], "-", "1"}]}], "}"}]}], "]"}], "]"}], " ", "since", " ", RowBox[{"t", "^", RowBox[{"(", RowBox[{"2", "^", RowBox[{"(", RowBox[{"m", "-", "2"}], ")"}]}], ")"}]}], " ", "is", " ", "congruent", " ", "to", " ", "1", " ", "mod", " ", RowBox[{"2", "^", "m"}]}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ RowBox[{"Print", "[", "\"\\"", "]"}], ";"}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"reducedTable", "=", RowBox[{"reduce", "[", RowBox[{"Table", "[", RowBox[{ RowBox[{ RowBox[{"Mod", "[", RowBox[{ RowBox[{"testing", "[", "n", "]"}], ",", RowBox[{"2", "^", "reducedExponent"}]}], "]"}], "\[Equal]", "0"}], ",", RowBox[{"{", RowBox[{"n", ",", "0", ",", RowBox[{ RowBox[{"2", "^", RowBox[{"(", RowBox[{"reducedExponent", "-", "2"}], ")"}]}], "-", "1"}]}], "}"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"modulus", "=", RowBox[{"Length", "[", "reducedTable", "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ RowBox[{"Print", "[", "\"\\"", "]"}], ";"}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"zeros", "=", RowBox[{ RowBox[{"Flatten", "[", RowBox[{"Position", "[", RowBox[{"reducedTable", ",", "True"}], "]"}], "]"}], "-", "1"}]}], ";", "\[IndentingNewLine]", RowBox[{"nonzeros", "=", RowBox[{ RowBox[{"Flatten", "[", RowBox[{"Position", "[", RowBox[{"reducedTable", ",", "False"}], "]"}], "]"}], "-", "1"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ "NZ", " ", "is", " ", "True", " ", "if", " ", "the", " ", "only", " ", "classes", " ", "contributing", " ", "to", " ", "the", " ", "proposition", " ", "are", " ", "actually", " ", RowBox[{"constant", "."}]}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"NZ", "=", RowBox[{"If", "[", RowBox[{ RowBox[{"And", "[", RowBox[{"checkClasses", ",", RowBox[{ RowBox[{"Length", "[", "zeros", "]"}], "\[NotEqual]", "0"}]}], "]"}], ",", RowBox[{"Apply", "[", RowBox[{"And", ",", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"constantClassesQ", "[", RowBox[{"k", ",", "minimumM", ",", "#", ",", RowBox[{"Log", "[", RowBox[{"2", ",", "modulus"}], "]"}]}], "]"}], "&"}], ",", "zeros"}], "]"}]}], "]"}], ",", "False"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Length", "[", "zeros", "]"}], "\[Equal]", "0"}], ",", RowBox[{"proofIncomplete", "=", "False"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Length", "[", "zeros", "]"}], ">", "0"}], ",", RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"step", "+", "1"}], ",", "\"\<: For \!\(\* StyleBox[\"m\", \"TI\"]\)\[GreaterEqual]\>\"", ",", RowBox[{"minimumM", "-", "lower"}], ",", "\"\< and \!\(\* StyleBox[\"n\", \"TI\"]\)\[GreaterEqual]\!\(\* StyleBox[\"m\", FontWeight->\"Plain\", FontSlant->\"Italic\"]\)\!\(\* StyleBox[\"+\", FontWeight->\"Plain\", FontSlant->\"Italic\"]\)\>\"", ",", RowBox[{"minimumM", "+", "2", "-", "lower"}], ",", "\"\<, we have \!\(\*FormBox[ RowBox[{ StyleBox[\"S\", \"TI\"], \"(\", StyleBox[ RowBox[{\"n\", \",\"}], \"TI\"]}], TraditionalForm]\)\>\"", ",", "k", ",", "\"\<)\[NotCongruent]\!\(\* StyleBox[\"S\", \"TI\"]\)(\!\(\* StyleBox[\"n\", \"TI\"]\)+\!\(\*SuperscriptBox[\"2\", StyleBox[\"m\", \"TI\"]]\),\>\"", ",", "k", ",", "\"\<) mod \>\"", ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"m", "+", "step", "-", "b"}], ")"}]}], ",", "\"\< iff n\[Congruent]\>\"", ",", RowBox[{"StringReplace", "[", RowBox[{ RowBox[{"ToString", "[", "nonzeros", "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"\"\<{\>\"", "\[Rule]", "\"\<\>\""}], ",", RowBox[{"\"\< \>\"", "\[Rule]", "\"\<\>\""}], ",", RowBox[{"\"\<}\>\"", "\[Rule]", "\"\<\>\""}]}], "}"}]}], "]"}], ",", "\"\< mod \>\"", ",", "modulus", ",", "\"\<.\>\""}], "]"}], ",", RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"step", "+", "1"}], ",", "\"\<: For all \!\(\* StyleBox[\"m\", \"TI\"]\)\[GreaterEqual]\>\"", ",", RowBox[{"minimumM", "-", "lower"}], ",", "\"\< and \!\(\* StyleBox[\"n\", \"TI\"]\)\[GreaterEqual]\!\(\* StyleBox[\"m\", FontWeight->\"Plain\", FontSlant->\"Italic\"]\)\!\(\* StyleBox[\"+\", FontWeight->\"Plain\", FontSlant->\"Italic\"]\)\>\"", ",", RowBox[{"minimumM", "-", "lower", "+", "2"}], ",", "\"\<, we have \!\(\*FormBox[ RowBox[{ StyleBox[\"S\", \"TI\"], \"(\", StyleBox[ RowBox[{\"n\", \",\"}], \"TI\"]}], TraditionalForm]\)\>\"", ",", "k", ",", "\"\<)\[NotCongruent]\!\(\* StyleBox[\"S\", \"TI\"]\)(\!\(\* StyleBox[\"n\", \"TI\"]\)+\!\(\*SuperscriptBox[\"2\", StyleBox[\"m\", \"TI\"]]\),\>\"", ",", "k", ",", "\"\<) mod \>\"", ",", RowBox[{"2", "^", RowBox[{"(", RowBox[{"m", "+", "step", "-", "b"}], ")"}]}], ",", "\"\<.\>\""}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"NZ", ",", RowBox[{"Print", "[", RowBox[{ "\"\<---------------------------------------------------\\n\\\ nProposition \>\"", ",", RowBox[{"step", "+", "2"}], ",", "\"\<: For \!\(\* StyleBox[\"m\", \"TI\"]\)\[GreaterEqual]\>\"", ",", RowBox[{"minimumM", "-", "lower"}], ",", "\"\< and \!\(\* StyleBox[\"n\", \"TI\"]\)\[GreaterEqual]\!\(\* StyleBox[\"m\", FontWeight->\"Plain\", FontSlant->\"Italic\"]\)\!\(\* StyleBox[\"+\", FontWeight->\"Plain\", FontSlant->\"Italic\"]\)\>\"", ",", RowBox[{"minimumM", "-", "lower", "+", "2"}], ",", "\"\<, we have \!\(\*FormBox[ RowBox[{SubscriptBox[\"\[Nu]\", \"2\"], \"\[EmptySmallCircle]\", RowBox[{ StyleBox[\"S\", \"TI\"], \"(\", RowBox[{\"_\", \",\"}]}]}], TraditionalForm]\)\>\"", ",", "k", ",", "\"\<) is constant on the class \!\(\*FormBox[SubscriptBox[ RowBox[{\"[\", StyleBox[\"n\", \"TI\"], \"]\"}], SuperscriptBox[\"2\", StyleBox[\"m\", \"TI\"]]], TraditionalForm]\) whenever n\[Congruent]\>\"", ",", RowBox[{"StringReplace", "[", RowBox[{ RowBox[{"ToString", "[", "zeros", "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"\"\<{\>\"", "\[Rule]", "\"\<\>\""}], ",", RowBox[{"\"\< \>\"", "\[Rule]", "\"\<\>\""}], ",", RowBox[{"\"\<}\>\"", "\[Rule]", "\"\<\>\""}]}], "}"}]}], "]"}], ",", "\"\< mod \>\"", ",", "modulus", ",", "\"\<.\>\""}], "]"}], ","}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ "Print", "[", "\"\<---------------------------------------------------\>\"", "]"}], ";", "\[IndentingNewLine]", RowBox[{"step", "++"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"Or", "[", RowBox[{ RowBox[{"step", ">", "maxSteps"}], ",", "NZ"}], "]"}], ",", RowBox[{"proofIncomplete", "=", "False"}]}], "]"}]}]}], "\[IndentingNewLine]", "]"}]}], "Input", CellChangeTimes->{{3.534009329737368*^9, 3.534009363592433*^9}, { 3.5340095323247004`*^9, 3.534009538075145*^9}, {3.534009607485833*^9, 3.5340096487401543`*^9}, {3.534034167814665*^9, 3.534034169641564*^9}, { 3.534034283303437*^9, 3.5340344143077507`*^9}, {3.5340344447148113`*^9, 3.534034467079526*^9}, {3.534034598795816*^9, 3.5340347726843157`*^9}, { 3.534034861208385*^9, 3.53403490860154*^9}, {3.534034941038088*^9, 3.534034993391913*^9}, {3.534035040599992*^9, 3.5340350723627043`*^9}, { 3.534035121755764*^9, 3.534035193075704*^9}, {3.534035282651292*^9, 3.5340353010754623`*^9}, {3.534035488483705*^9, 3.5340356025758057`*^9}, { 3.5340357502198343`*^9, 3.534035750287128*^9}, {3.534035823991149*^9, 3.5340358851568413`*^9}, {3.534036202726864*^9, 3.534036234446765*^9}, { 3.5340362709568033`*^9, 3.5340362800915613`*^9}, {3.534036328932434*^9, 3.534036349075059*^9}, {3.534036402829034*^9, 3.534036421383202*^9}, { 3.534036572031904*^9, 3.534036592653483*^9}, {3.53403669830986*^9, 3.534036783442593*^9}, {3.5340368317487917`*^9, 3.534036899879241*^9}, { 3.5340370909248877`*^9, 3.5340370929925327`*^9}, {3.534037182986657*^9, 3.5340372139400663`*^9}, {3.534037343592698*^9, 3.534037398040326*^9}, { 3.534037759654125*^9, 3.5340378600955057`*^9}, {3.5340379740052557`*^9, 3.534037993283847*^9}, {3.53403806836347*^9, 3.534038142312868*^9}, { 3.5340381953438063`*^9, 3.534038241694944*^9}, 3.534038287775338*^9, { 3.5340383370016327`*^9, 3.5340383594819202`*^9}, {3.5340384077392*^9, 3.534038408227784*^9}, {3.5340385088728237`*^9, 3.5340385206235523`*^9}, { 3.53403864709247*^9, 3.534038647645514*^9}, {3.534038697657078*^9, 3.534038717222834*^9}, {3.5340388298123207`*^9, 3.534038853902384*^9}, 3.534038942032929*^9, {3.53403909058613*^9, 3.534039091003908*^9}, { 3.534039149235704*^9, 3.5340391732137203`*^9}, 3.5340899237864428`*^9, { 3.5340900639621477`*^9, 3.534090093979697*^9}, {3.534090193457466*^9, 3.534090215307939*^9}, {3.5340902976976624`*^9, 3.534090331257423*^9}, { 3.534090508614073*^9, 3.534090508953268*^9}, {3.5340912305657253`*^9, 3.534091262869088*^9}, {3.534091350921852*^9, 3.534091462622931*^9}, { 3.5340916203097973`*^9, 3.5340916446494627`*^9}, {3.534091676794627*^9, 3.534091760825036*^9}, {3.5340918452800207`*^9, 3.5340918724925737`*^9}, { 3.5340920097382307`*^9, 3.5340920106191607`*^9}, {3.5340920695099983`*^9, 3.534092070964122*^9}, {3.5340921293714647`*^9, 3.5340921334391747`*^9}, { 3.5340922079976273`*^9, 3.5340922495609007`*^9}, {3.534092360331049*^9, 3.534092387708274*^9}, {3.534092499972582*^9, 3.534092531625124*^9}, { 3.534092569891501*^9, 3.53409262501593*^9}, {3.534092890271152*^9, 3.534092899822485*^9}, {3.534092945584558*^9, 3.534093017736331*^9}, { 3.5340931958099318`*^9, 3.534093390059301*^9}, {3.534093497409561*^9, 3.534093608436873*^9}, {3.534093651524055*^9, 3.534093698726055*^9}, { 3.534093747213809*^9, 3.5340937666381083`*^9}, 3.5340939442620163`*^9, { 3.534094110980233*^9, 3.5340941248804293`*^9}, {3.53409430925944*^9, 3.534094322776166*^9}, 3.534094355557604*^9, {3.534094411670465*^9, 3.5340944587592907`*^9}, {3.534094494381462*^9, 3.5340944950603447`*^9}, { 3.534094526629897*^9, 3.5340946109644613`*^9}, {3.534094645849729*^9, 3.534094677869969*^9}, {3.534122542836461*^9, 3.534122623189218*^9}, { 3.53412268412008*^9, 3.5341227292223873`*^9}, {3.5341227709756327`*^9, 3.534122848827305*^9}, {3.5341229069649763`*^9, 3.534123030755289*^9}, 3.534123061879388*^9, {3.534123669273098*^9, 3.534123715546068*^9}, 3.534123799184389*^9, {3.534123844794776*^9, 3.5341238921558523`*^9}, { 3.534123977396069*^9, 3.5341240052618732`*^9}, {3.5341240843797903`*^9, 3.534124084614945*^9}, {3.534124218969634*^9, 3.534124377120144*^9}, { 3.534124411687895*^9, 3.534124487559224*^9}, {3.53412454535846*^9, 3.534124642407811*^9}, {3.5341247699463778`*^9, 3.5341249828774567`*^9}, { 3.534125020816884*^9, 3.534125111401058*^9}, {3.534125274845437*^9, 3.534125394400969*^9}, {3.53412542822033*^9, 3.534125440287692*^9}, { 3.534125479801834*^9, 3.5341254958404703`*^9}, {3.534125685677964*^9, 3.534125709839449*^9}, {3.534125756262417*^9, 3.534125782383461*^9}, { 3.534203914653871*^9, 3.53420391474897*^9}, {3.534204053710703*^9, 3.534204103534202*^9}, 3.534204134655286*^9, {3.534204175739171*^9, 3.534204203654454*^9}, {3.534204244388123*^9, 3.534204358626194*^9}, { 3.534204497374941*^9, 3.534204588835948*^9}, {3.534204628180007*^9, 3.534204662000022*^9}, {3.534205214717437*^9, 3.53420522395557*^9}, { 3.5342052574032507`*^9, 3.5342054807479677`*^9}, {3.534205527176876*^9, 3.534205554809085*^9}, {3.534205920416585*^9, 3.534206288105537*^9}, { 3.5342064084251213`*^9, 3.534206409440359*^9}, {3.534206463158826*^9, 3.534206491941774*^9}, {3.534206658207012*^9, 3.534206693109056*^9}, { 3.5342075031889772`*^9, 3.534207526147821*^9}, 3.5342077075675993`*^9, { 3.53420782631124*^9, 3.534207855542075*^9}, {3.534208194790832*^9, 3.534208199861187*^9}, {3.534264628905417*^9, 3.534264629930234*^9}, { 3.5342648644928923`*^9, 3.534264914192747*^9}, {3.5342649940810137`*^9, 3.534265121067636*^9}, 3.534265473208344*^9, {3.5342655049776373`*^9, 3.534265614401293*^9}, 3.534265660366089*^9, {3.534265713913186*^9, 3.5342657547857847`*^9}, {3.5342657865667543`*^9, 3.534266000192072*^9}, { 3.5342660433435297`*^9, 3.5342660442566843`*^9}, {3.534266343433613*^9, 3.5342663447840853`*^9}, {3.534266375640553*^9, 3.53426640103026*^9}, { 3.534266445458359*^9, 3.534266535632065*^9}, {3.534266610948889*^9, 3.534266620881166*^9}, {3.534266711241846*^9, 3.5342668209938383`*^9}, { 3.5342668719648037`*^9, 3.5342669003643208`*^9}, {3.534266932943302*^9, 3.534266933118438*^9}, {3.5342669649363937`*^9, 3.534266966198454*^9}, { 3.534266997984889*^9, 3.534267020055241*^9}, {3.534267072106373*^9, 3.534267097882565*^9}, {3.5342671572230988`*^9, 3.5342671625100107`*^9}, { 3.534267199227729*^9, 3.53426724434774*^9}, {3.534267943949595*^9, 3.534267944204269*^9}, {3.534268481263722*^9, 3.5342684813731947`*^9}, { 3.534269206122817*^9, 3.5342692071297817`*^9}, {3.5342708580564003`*^9, 3.534270872059519*^9}, {3.534270919911006*^9, 3.534270934884862*^9}, { 3.534271026288478*^9, 3.534271137932077*^9}, {3.5342713025226507`*^9, 3.534271415221327*^9}, {3.5342715084381323`*^9, 3.5342715841743917`*^9}, { 3.534271616103155*^9, 3.534271631329081*^9}, {3.534271676414628*^9, 3.53427169319306*^9}, {3.534271832536571*^9, 3.534271874985403*^9}, { 3.53427193071887*^9, 3.534271998001141*^9}, {3.534272048023571*^9, 3.534272143343989*^9}, {3.5342721977563334`*^9, 3.53427230625445*^9}, { 3.534272367671074*^9, 3.534272525408915*^9}, {3.534272559599388*^9, 3.534272560221834*^9}, {3.534272616589773*^9, 3.534272636311314*^9}, { 3.534272691426138*^9, 3.5342727246058702`*^9}, {3.534272756762693*^9, 3.534272839085854*^9}, {3.534272869175254*^9, 3.534272917465042*^9}, { 3.534273030686303*^9, 3.534273108739362*^9}, {3.534273372982563*^9, 3.534273376498756*^9}, {3.53428575328512*^9, 3.534285753616721*^9}, { 3.534286188027316*^9, 3.534286188116621*^9}, {3.534286259943799*^9, 3.5342862600456257`*^9}, {3.534286337269033*^9, 3.534286438679714*^9}, { 3.5342865203785353`*^9, 3.534286546881888*^9}, {3.534286637364862*^9, 3.534286637467923*^9}, {3.5342870399182653`*^9, 3.53428704178345*^9}, { 3.5342870989731493`*^9, 3.534287115835915*^9}, {3.534287154661397*^9, 3.534287180551663*^9}, 3.5342872151002417`*^9, {3.534287485208601*^9, 3.534287485656962*^9}, {3.5342875310677137`*^9, 3.534287599726471*^9}, { 3.534287727597917*^9, 3.534287738132574*^9}, {3.534287779234639*^9, 3.5342877793824263`*^9}, {3.534287810814789*^9, 3.534287810904558*^9}, 3.5342884532452927`*^9, {3.5342887881033916`*^9, 3.534288834842401*^9}, { 3.53428887075458*^9, 3.53428891216691*^9}, {3.534289017396492*^9, 3.534289044822421*^9}, {3.534289209132453*^9, 3.534289223783278*^9}, { 3.534289371094564*^9, 3.5342894655673933`*^9}, {3.534290336949667*^9, 3.5342903379904118`*^9}, {3.534290453916049*^9, 3.534290475736595*^9}, { 3.534290516965335*^9, 3.5342905176296377`*^9}, {3.534290549035199*^9, 3.534290549134387*^9}, {3.534290618615218*^9, 3.534290622557053*^9}, { 3.53429085037963*^9, 3.534290851652136*^9}, {3.534291561212501*^9, 3.534291561378768*^9}, {3.534291928520005*^9, 3.534291961068541*^9}, { 3.53429228609297*^9, 3.534292289240787*^9}, {3.534292534133252*^9, 3.5342925397983913`*^9}, {3.5342926763569202`*^9, 3.5342927091564417`*^9}, {3.534292785205106*^9, 3.534292801284441*^9}, { 3.534292878684119*^9, 3.5342928789942923`*^9}, {3.5342929266721363`*^9, 3.5342929303303127`*^9}, {3.534293023038553*^9, 3.5342930293280478`*^9}, { 3.534293101659534*^9, 3.534293109041903*^9}, {3.534293170750187*^9, 3.5342932294656467`*^9}, {3.534293317002521*^9, 3.534293413059828*^9}, { 3.534293508115418*^9, 3.534293542616395*^9}, {3.534293800676976*^9, 3.534293805269453*^9}, {3.5342938446177893`*^9, 3.534293923525099*^9}, { 3.534294020186551*^9, 3.534294067281378*^9}, {3.534294144040584*^9, 3.5342942153315573`*^9}, {3.5342942568917313`*^9, 3.534294260073262*^9}, { 3.5342943828293953`*^9, 3.534294440617865*^9}, {3.534294476295792*^9, 3.534294476542048*^9}, {3.534294511245079*^9, 3.5342945511334257`*^9}, 3.534294621600912*^9, {3.534294768060107*^9, 3.534294787861805*^9}, { 3.534294827001959*^9, 3.534294827106758*^9}, {3.534296576028841*^9, 3.534296576208351*^9}, 3.534377294117194*^9, {3.5343783768959293`*^9, 3.534378377333191*^9}, {3.534464163303089*^9, 3.53446416354683*^9}, { 3.534642817659679*^9, 3.5346428329876127`*^9}, {3.5354765953556695`*^9, 3.535476595433791*^9}, {3.5354768677340918`*^9, 3.5354768677809644`*^9}, { 3.5354769468399224`*^9, 3.5354769494023075`*^9}, {3.539113306302581*^9, 3.539113313751721*^9}, {3.5401720375909348`*^9, 3.540172151696948*^9}, { 3.5401722264784307`*^9, 3.540172278919756*^9}, {3.54017251103512*^9, 3.540172550588201*^9}, {3.5421948703195763`*^9, 3.542194938935011*^9}, { 3.5421949897444277`*^9, 3.542194989842225*^9}, {3.54219507597021*^9, 3.542195076084456*^9}, {3.542195118953436*^9, 3.542195119038274*^9}, { 3.54219514915949*^9, 3.54219514956388*^9}, {3.54219518089408*^9, 3.5421951810113363`*^9}, {3.5421952230046377`*^9, 3.54219522309473*^9}, { 3.542195284908082*^9, 3.542195285012624*^9}, {3.542195324401176*^9, 3.5421953521089373`*^9}, {3.54219541640526*^9, 3.542195416517009*^9}, { 3.5421954742142*^9, 3.5421955443801327`*^9}, {3.542195575011685*^9, 3.5421955751129417`*^9}, {3.544314533519916*^9, 3.544314575222726*^9}}, Background->RGBColor[0.87, 0.94, 1]] }, WindowSize->{1421, 946}, WindowMargins->{{-78, Automatic}, {Automatic, 0}}, Magnification:>FEPrivate`If[ FEPrivate`Equal[FEPrivate`$VersionNumber, 6.], 1.5, 1.5 Inherited], FrontEndVersion->"8.0 for Mac OS X x86 (32-bit, 64-bit Kernel) (February 23, \ 2011)", StyleDefinitions->"Default.nb" ] (* End of Notebook Content *) (* Internal cache information *) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[557, 20, 584, 8, 45, "Text"], Cell[1144, 30, 54782, 1333, 3939, "Input"] } ] *) (* End of internal cache information *)