(************** Content-type: application/mathematica ************** Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 91637, 2848]*) (*NotebookOutlinePosition[ 148779, 4951]*) (* CellTagsIndexPosition[ 147250, 4905]*) (*WindowFrame->Normal*) Notebook[{ Cell[GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgP020S/04P8j0S/2>P9K0QX2>`8j0S/2>P8k0SX2F`8J0S/2>P8k0Wd12`80 00030P0A0QT01@9L0>/000000>L0o`00P`00 000B00001DHa;F/0004?0SX0408I00D2>`3[000000360?l008<000003`0000T08@000016/00000 0`3[0000003600@00003BU9ooeJe0080000:E[E>L`00001Nmgoo?Nmg_Goo>Lh3 000023W>Oomoo`aS001g_Goo?Nl200000e:DOomNm`03000017NmOolicQcW1Goo00@006mkOolicP80 0004MkdaS0000002Ool012DYOomoob480`0000ENmgooIcT001S6009oo`069BT00000MkeoocW>0P00 00Lh00000;F]_N`03Ool01fmk;F/00000>Liooekg00<000086Lh00Woo00Ool00goo00Dmk`00OomoobDY 00<00003CW=oogoo00<00003?Nmg_Goo009oo`036Lh0000001000003249:DWoo 00=oo`03CW<8@P00008000036Liooekg0`0000<8@TicOol00goo00E> L`Q2000005kg00Aoo`04E[DHaP00G_L4Ool01bDY001oogoo9BT005Je009oo`066L200001QS6Kg]oogooMkde[@@00003>Liooekg01<000003`0000d0 8@00000IZaJg17<=4aXG0PlYcFli9O8:>P0;0QT01@9L0>/000000>L0100001DYBWooOol8@P00Mkeo ob48001JeWoo>LhmkgooMkdicSg_>LiW>GooIcT00P0000=JeWooBU800P0000LhmkcW>MkeoodHa0P00 0Woo00TaS000001NmgooCW<00124Mkd017oo00QNmb48OomoodHa>Lhmke:D0Woo00<8@P0000000P00 00=JeWooOol00goo00A[FPQ2001Nm`Aoo`058@P00000001S6002Ool01248000000001Goo00<00248 Ool00goo00=JePQ2HaP01Woo00IW>@Q2001JeWoo>Lh500000e[FOomoo`02Ool28@P2Ool01@00BU9o ogoo600<000038@Qoogoo009oo`0;G_L005kgOolmkaS6MkeooeJe000mk`04Ool01CW>001o ogoo8@P00P0000@mkgooOomoo`800003CW=oogoo00=oo`038@PicWoo00=oo`03?Nl0000000l00003 249S67oo00Eoo`05IcT8@P006Goo00Eoo`07HaP8 @P00G_MoofmkF]H00Woo00=g_@Q2G_L017oo00HQ2000Oomoob480000000300000`Q2 IcUoo`04Ool020008@QoogooIcU_NgooLi`2248017NmOom_NfAXe2M0540e>=[HbP0:0QT01@8k0>/000000L`00001600<000056Lh500001B48OomoogooDY@00`000Woo00DQ200000000248009oo`<00007>Lio ogoo?Nl8@PaS>Lh00Woo00Dmk`00G_Moocg_00D00003G_Moocg_00<000049BUoogoo:DX2Ool00cg_ 0000000300005QBUMkeoofLi5:D002DY>LhBDY000U:FLiOomg_@Q2>Liooekg0P0000UN mgooOomoocg_001Nmgoo?Nl00`0000LiW>GooKg/8@P00>Liooekg00@0 009oo`039BT002DY00Aoo`0<000]JgooOom:DPaS000mkb48?Nmooekg2P0000Lh01`0000Li cWooOolmk`Q236GooMkdQ200048A6<@0200000cW>OomNm`0200001cg_Oomo ocW>36<8@Sg_009oo`07>Lh005kgOolicP00:DX00Woo00@U:EkgOolicP@0009oo`04=Jeg_GooDY@7 000010Q2IcUoodic0`00011>LgooG_L000Q2Mkeooc6<=JeoogNm248005kgOom>L`<00003>Liooekg 01<000003`0000l08@00000ekcKK?_`fn2JE>aa7?4000aS09oo`05=JdYBWooOole[@0200000cW>OomcW0020000 11S6Oomooc6<0R4800m>LgooMkd005JeOomW>CW>?NlHaP00JeYooc6@0500002124Oomood8@ 8@Q[FWooBU8500000e[FOolicP0200002Cg_Oomooa24G_Mooekg>Lhmk`0300000dicOom_N`02Ool0 0a2400000002Ool01Dic>LhaS0008@P00Woo0`0000=_NgooG_L0100000EJeWooKg/005[F00=oo`0; JeYF]A24001JeWooF]HmkcW>000Q2002Ool00gNmOomW>@060000136001JeWooF]HmkcW>000Q2002Ool01cg_ >LhQ2000G_MoogNm009oo`0::DX00000?Nmoofmk>Lhmka240002Ool01B486Lioof]J?NlicQ241P0000DicWooOomoocW>00H00003Kg]ooekg00@00004F]Io ofmk48@2Ool00c6<0000000400000cg_OomNm`0200000fmkOomJeP0400004EkgOom_N`00G_Moodic 8@Q>LgooMkd8@UkgOomNmcW>?Nl00P000Woo00Ag_GooLi`@Q0P0000448Ag_GooCW<200000f`3[0000003600D0000;;F]oogNmDYAooekgOomg_FLi Oolmk`02000016mkOom:DRDY0Woo00@HaP00000U:@9oo`032480000000Qoo`0336Lh005kg00Eoo`03:DX003W>00Aoo`099BT007ooOol]JfLiOomW>Be[009o o`04001NmgooG_L500000cg_Oomoo`02Ool00b480000000400001EkgOomoogooG_L01P000Woo00Liooekg0080009oo`03?Nl000000080 0005>Lioogoo001Nm`04Ool016Li:DX005kg17oo0P001Goo00=g_A2400001`0000DHaWooOolmk`00 009oo`059BT00000>Lioo`02G_L01Goo?Nl000008@P00Woo0`0000Lh2000012e[Oomg_CW>0Woo0`0000@@Q7ooOolQ20800006Kg]ooe[F?NlicSg_ 0Woo00/Q23F]OomoocW>?NlYBP006L009oo`0648AcW7ooMkeoob480P0000I600800009?Nmoogoo48ANmgooG_LicSg_00800009>Lioog>L000icWoo Li`8@P00009oo`05CW000i cP02Ool02124F]Iooe[F?NlicP008@P2Ool01@008@Qoogoo=Jd0100000@aS7ooOolQ20@000048@P005kgOolmk`Q2E[Eoofmk000mkgooKg/icSg_48@00002Ool01G>LOomg_AS68@P00Woo 00D004YBOomg_@Q200@00006>Lioofmk?NlicQ241P0000DicWooOomoocW>00H00003Kg]ooekg00@0 0004F]Ioof]J48@2Ool00cW>0000000400000cg_OomNm`0200000f]JOomJeP0400002UkgOom_N`00 G_MooekgBU9oof]J0P0000ENmgooG_LicSg_0080009oo`058@P@Q6mkOom:DP0900001dYBOomcW000 HaQooc6<00800006CW=oodHa@Q1oodYB0P0000`3[0000003600H00006BU9oogooOol8 @QBU0goo00Tmk`00000005kgOomg_GooG_L010000Woo00HicP00001NmgooE[D30002Ool01Cg_8@Qo ogoo7>L0100000I_NgooOomW>@00=Jd3Ool02BDY000000Q2MkeoogNmOolmk`03000012DYOomooaS6 0P000Woo00Tmk`Q2MkeoofLi8@P00248=Jd00P0000Lh400001GNmOom6<@0024800Woo00DaS000Oomoob4800<000038@Qoogoo00<00007 >Lioogoo?Nl8@PaS>Lh00Woo00Lmk`00G_Moocg_000mk`02Ool011S6G_Moocg_0`0000DU:GooOol0 00aS009oo`03>Lh000000080000D36=g_GooIcTDY@009BTicPaSMkeoofLi9BT002DYIcUoogNm248i cP=oo`0:IcT00000G_Moocg_001Nmgoo?Nl300000bDYOomoo`0400001EkgOolicP00@Q000Woo00@0 03W>OomNm`@000Aoo`03;F/002DY009oo`0<000U:GooOom:DPaS000mkb48?Nmooekg2P0000Lh01`0000LicWooOolmk`Q236OomNm`02 00001cg_OomoocW>36<8@Sg_009oo`06>Lh005kgOolicP000Woo00DHaP00G_MoocW>00@0009oo`05 9BT006LiOomNm`0500001FmkOolmk`00?Nl00Woo014004icOomNm`00249g_GooLiooekg01<000003`0001<08@004@UK_ahe1A/000000>L01P0000@YBWooOom[FP800004AS5oogoo>Lh300001B48Oomo ogoo>Lh00P0000=NmgooOol00goo00@mkcW>OomJeP<00004F]IoocW>0005Ool00`Q20016<@02Ool0 14YB000006Li0Woo00DQ2000000003W>00=oo`038@P0000000Ioo`078@QJeWoo>Lh001S6Mkd017oo 00EBU0000008@WNm009oo`03G_L0000000@00003F]Ioogoo00=oo`04Kg/@Q000G_L4Ool01B48=Jeo ogoo48@00P0000A>LgooKg/000Eoo`04000Q27ooOol300000`Q2HaQoo`05Ool016Li248005[F1Goo 00=S6000F]H017oo0R480Woo00ENmgNmOomooaS600D00003=Jeoogoo00=oo`03?Nl003F]00Moo`03 =Jd003g_009oo`09JeX8@P00001JeWoo>Lh005[F00Aoo`8Q20Aoo`06G_L005kgOom_Nf@06Ool01fLOomBU0008@P00Woo00AW>F]JOomg_@88@P04MkeoofmkHaP2Ool01248 000005[F0Woo00=Nm`0000004@00000B00004Dic:U@9]PfAA]LMmTJmF_P`3[0000003600L00003Mkeoodic00800004249g_GooG_L4000015:DOomoobe[0P00 00=247ooOol00goo00ABU3F]Oomoo`<00005CW=ooekg001_N`04Ool00b48000HaP02Ool013F]0000 02480Woo00Hmk`00000000Q2Kg/2Ool010Q2000006Li1Goo00@icTicOomNm`80000348ANmgoo009o o`05IcT00000000mk`02Ool00d8@0000000400001ekgOomoogooKg]240Q200800003G_Moogoo009o o`049BUNmgooG_L300001248OomoobDY1Goo00@00248Oomoo`@00003249247oo00=oo`05AS48@P00 001Nm`03Ool01FmkCW<@Q000G_L017oo00Be[00001P0000<]JfmkOol00Woo 00DicP00000U:Fmk00=oo`08Kg/U:@00000icWooMkdLi`<00005G_Moocg_001Nm`04Ool00b489BUo o`03Ool00ekg001Nm`03Ool01GNmCW<8@P00>Lh017oo00Dmk`00Oomoodic00<000039BUoogoo00<0 0003?Nmg_Goo009oo`036Lh0000001000003249247oo00=oo`03AS48@P000080 00036/000000>L0E00000<8@R48 8@P0=`000R488`0000<@Q24824801@0000<@Q24848@0>@0000LhFLaKg9cXg6RD[16P64a6c?]a:W1TH6ILJn3:I4;H8V12H3EP6FP8I0U`0j`800003 0>L000000?l0084000004P0001M643G>6B/I[`;D1J`j5RhF<_X]dc8i@[Xn627F:]XE>13J3=TDf0DA 0QT2F`3[008000030bEh1=@F]cXEBU8]TdIEE[AJ]BXe05YDJ"], "GraphicHeader", Evaluatable->False, ImageSize->{430, 31}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}], Cell[CellGroupData[{ Cell["\<\ Dbg \[Dash] an easy-to-use debugger \ \>", "Title"], Cell["", "Subtitle"], Cell[TextData[StyleBox["Dr. David Bailey, Salford Software\n\ david.bailey@salfordsoftware.co.uk", "Author"]], "Author"] }, Open ]], Cell[CellGroupData[{ Cell["Introduction", "Section"], Cell[TextData[{ "This paper describes the rationale behind ", StyleBox["Dbg", FontWeight->"Bold"], ", an interactive debugger for ", StyleBox["Mathematica", FontSlant->"Italic"], " code \n(", StyleBox["MathSource", FontSlant->"Italic"], " item 0211-037). This package is designed to make debugging easy and \ effective for beginner ", StyleBox["Mathematica", FontSlant->"Italic"], " programmers - particularly those who prefer to program in a C or Fortran \ idiom.\n \nThe built-in debug facilities (", StyleBox["Trace", FontWeight->"Bold"], ", ", StyleBox["TracePrint", FontWeight->"Bold"], ", ", StyleBox["TraceScan", FontWeight->"Bold"], ", etc.) are rather hard to use effectively on anything but toy examples. \ One indication of the lack of use of these facilities is the fact that \ version 4.1 actually contains a broken version of ", StyleBox["TraceScan - ", FontWeight->"Bold"], StyleBox["the 4-argument form breaks the kernel", FontVariations->{"CompatibilityType"->0}], "!" }], "Text", FontWeight->"Plain", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}], Cell["TraceScan[F, 1, _, G]", "Text", CellLabel->"In[1]:=", Evaluatable->True], Cell[TextData[{ "A major problem with the ", StyleBox["Trace", FontWeight->"Bold"], " family of commands is that by default they generate far too much \ information and although it is possible to restrict the output by means of a \ pattern, this all too frequently hides the very information being sought. ", StyleBox["Dbg", FontWeight->"Bold"], " avoids printing steps that are unlikely to be of interest. Thus it does \ not print trivial evaluations, such as 'evaluations' of constants or symbolic \ objects which evaluate to themselves. ", StyleBox["Dbg", FontWeight->"Bold"], " also prints constructs such as ", StyleBox["While", FontWeight->"Bold"], ", ", StyleBox["Module", FontWeight->"Bold"], ", etc. in an abbreviated form which does not include the (typically large) \ body. Because ", StyleBox["Dbg", FontWeight->"Bold"], " is designed to be friendly to the beginner ", StyleBox["Mathematica", FontSlant->"Italic"], " programmer it has a default option that limits its output to 10 steps in \ the first instance to avoid overwhelming the naive user. This limit can be \ raised as required and it is also possible to specify that some number of \ steps should be executed silently before debugging begins.\n\nUnlike the \ built-in commands, ", StyleBox["Dbg", FontWeight->"Bold"], " uses the facilities of the notebook frontend to help the user interpret \ the output from a ", StyleBox["Dbg", FontWeight->"Bold"], " run. In particular, the output contains embedded button objects which \ enable the user to navigate between a (sub) calculation and its ultimate \ result. Another embedded button navigates outward to the level that invoked \ the calculation.\n\nSince debugging is often best performed in an interactive \ fashion, ", StyleBox["Dbg", FontWeight->"Bold"], " supplies a palette which enables single stepping and the setting of \ breakpoints as the calculation progresses.\n\nMany (flawed) ", StyleBox["Mathematica", FontSlant->"Italic"], " programs generate one or more error messages as they execute. ", StyleBox["Dbg", FontWeight->"Bold"], " assumes that any unsuppressed error message is a mistake and terminates \ the program at once with a traceback. This traceback is often the only \ information a programmer needs to resolve his problem.\n\nOne problem with ", StyleBox["Dbg", FontWeight->"Bold"], " is the fact that because it must perform so much work in the background, \ programs run very much more slowly under ", StyleBox["Dbg", FontWeight->"Bold"], ". One section of this paper will suggest extensions to the Kernel which \ could reduce or eliminate this overhead." }], "Text", FontWeight->"Plain"] }, Open ]], Cell[CellGroupData[{ Cell["A simple example", "Section"], Cell[TextData[{ StyleBox["Here is a naive piece of ", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}], StyleBox["Mathematica", FontWeight->"Plain", FontSlant->"Italic", FontVariations->{"CompatibilityType"->0}], StyleBox[" code. The flaw is obvious, but try to remember your first \ fumblings at ", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}], StyleBox["Mathematica", FontWeight->"Plain", FontSlant->"Italic", FontVariations->{"CompatibilityType"->0}], StyleBox[" programming!", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}] }], "Text"], Cell["\<\ test[k_]:=Module[{}, \tWhile[k>0, \tPrint[k]; \tk--; \t] \t]\ \>", "Program"], Cell[TextData[StyleBox["Here is the result of simply executing the above \ function. The program generates an error and enters an infinite loop:", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}]], "Text"], Cell["test[5]", "Text", CellLabel->"In[3]:=", Evaluatable->True], Cell[BoxData[ \(5\)], "Print", CellLabel->"From In[3]:="], Cell[BoxData[ \(Decrement::"rvalue" \(\(:\)\(\ \)\) "\!\(5\) is not a variable with a value, so its value cannot be \ changed."\)], "Message", CellLabel->"From In[3]:="], Cell[BoxData[ \(5\)], "Print", CellLabel->"From In[3]:="], Cell[BoxData[ \(5\)], "Print", CellLabel->"From In[3]:="], Cell[BoxData[ \(5\)], "Print", CellLabel->"From In[3]:="], Cell[BoxData[ \(5\)], "Print", CellLabel->"From In[3]:="], Cell[BoxData[ \(5\)], "Print", CellLabel->"From In[3]:="], Cell[BoxData[ \(5\)], "Print", CellLabel->"From In[3]:="], Cell[BoxData[ \(5\)], "Print", CellLabel->"From In[3]:="], Cell[BoxData[ \(5\)], "Print", CellLabel->"From In[3]:="], Cell[BoxData[ \($Aborted\)], "Output", CellLabel->"Out[3]="], Cell["\<\ Here is the result of using TracePrint. Obviously, the output could \ have been restricted in various ways, but if the user does not understand \ what is wrong, this is hard to do effectively. Again the process looped and \ had to be aborted.\ \>", "Text", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}], Cell["test[5]//TracePrint", "Text", CellLabel->"In[5]:=", Evaluatable->True], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox[\(test[5]\), HoldForm]}], SequenceForm[ Indent[ 1], HoldForm[ test[ 5]]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["test", HoldForm]}], SequenceForm[ Indent[ 2], HoldForm[ test]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["5", HoldForm]}], SequenceForm[ Indent[ 2], HoldForm[ 5]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox[\(Module[{}, While[5 > 0, Print[5]; \(5--\); ]]\), HoldForm]}], SequenceForm[ Indent[ 1], HoldForm[ Module[ {}, While[ Greater[ 5, 0], CompoundExpression[ Print[ 5], Decrement[ 5], Null]]]]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["Module", HoldForm]}], SequenceForm[ Indent[ 2], HoldForm[ Module]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox[\(While[5 > 0, Print[5]; \(5--\); ]\), HoldForm]}], SequenceForm[ Indent[ 2], HoldForm[ While[ Greater[ 5, 0], CompoundExpression[ Print[ 5], Decrement[ 5], Null]]]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell["<>", "Text", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["HoldForm", HoldForm]}], SequenceForm[ Indent[ 7], HoldForm[ HoldForm]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox[\(Decrement::"rvalue"\), HoldForm]}], SequenceForm[ Indent[ 6], HoldForm[ MessageName[ Decrement, "rvalue"]]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["MessageName", HoldForm]}], SequenceForm[ Indent[ 7], HoldForm[ MessageName]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["\<\"rvalue\"\>", HoldForm]}], SequenceForm[ Indent[ 7], HoldForm[ "rvalue"]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox[\(MakeBoxes[ Decrement::"rvalue" \(\(:\)\(\ \)\) "\!\(5\) is not a variable with a value, so its value cannot be \ changed.", StandardForm]\), HoldForm]}], SequenceForm[ Indent[ 6], HoldForm[ MakeBoxes[ TextForm[ ColonForm[ MessageName[ Decrement, "rvalue"], StringForm[ "`1` is not a variable with a value, so its value cannot be \ changed.", Short[ HoldForm[ 5]]]]], StandardForm]]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["MakeBoxes", HoldForm]}], SequenceForm[ Indent[ 7], HoldForm[ MakeBoxes]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox[\(RowBox[{RowBox[{"Decrement", "::", "\"rvalue\""}], ": ", "\"\\!\\(5\\) is not a variable with a value, so its value \ cannot be changed.\""}]\), HoldForm]}], SequenceForm[ Indent[ 6], HoldForm[ RowBox[ { RowBox[ {"Decrement", "::", "\"rvalue\""}], ": ", "\"\\!\\(5\\) is not a variable with a value, so its value cannot \ be changed.\""}]]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(Decrement::"rvalue" \(\(:\)\(\ \)\) "\!\(5\) is not a variable with a value, so its value cannot be \ changed."\)], "Message", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["Null", HoldForm]}], SequenceForm[ Indent[ 5], HoldForm[ Null]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["Null", HoldForm]}], SequenceForm[ Indent[ 4], HoldForm[ Null]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["Null", HoldForm]}], SequenceForm[ Indent[ 3], HoldForm[ Null]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox[\(5 > 0\), HoldForm]}], SequenceForm[ Indent[ 3], HoldForm[ Greater[ 5, 0]]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["Greater", HoldForm]}], SequenceForm[ Indent[ 4], HoldForm[ Greater]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["5", HoldForm]}], SequenceForm[ Indent[ 4], HoldForm[ 5]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["0", HoldForm]}], SequenceForm[ Indent[ 4], HoldForm[ 0]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["True", HoldForm]}], SequenceForm[ Indent[ 3], HoldForm[ True]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox[\(Print[5]; \(5--\); \), HoldForm]}], SequenceForm[ Indent[ 3], HoldForm[ CompoundExpression[ Print[ 5], Decrement[ 5], Null]]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["CompoundExpression", HoldForm]}], SequenceForm[ Indent[ 4], HoldForm[ CompoundExpression]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \(\*"\<\"\"\>"\)], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ InterpretationBox[ RowBox[{" ", "\[InvisibleSpace]", TagBox["5", HoldForm]}], SequenceForm[ Indent[ 5], HoldForm[ 5]], Editable->False]], "Print", CellLabel->"From In[5]:="], Cell[BoxData[ \($Aborted\)], "Output", CellLabel->"Out[5]="], Cell[TextData[{ StyleBox["Here is the result of using ", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}], StyleBox["Dbg", FontVariations->{"CompatibilityType"->0}], StyleBox[" with default options. Note that every step has been printed with \ buttons that help navigate the information. For example, pressing the '?' \ button on line 4 highlights lines 4 and 5, indicating that line 5 is the \ result of evaluating line 4 (obviously, an expression and its evaluation can \ be separated by many steps). Likewise, pressing the '\[UpArrow]' button will \ highlight the ", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}], StyleBox["While", FontVariations->{"CompatibilityType"->0}], StyleBox[" loop that produced step 4. Note also, that the ", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}], StyleBox["Module", FontVariations->{"CompatibilityType"->0}], StyleBox[" and ", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}], StyleBox["While", FontVariations->{"CompatibilityType"->0}], StyleBox[" constructs are printed in abbreviated form and so do not clutter \ the output. ", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}], StyleBox["Dbg", FontVariations->{"CompatibilityType"->0}], StyleBox[" output is printed in pink so as to distinguish it clearly from \ other output generated by the code. The basic fault \[Dash] that we end up \ trying to change the constant 5 \[Dash] is clearly visible, as is the fact \ that it is this line which generates the error message and terminates the \ program.", FontWeight->"Plain", FontVariations->{"CompatibilityType"->0}] }], "Text"], Cell["test[5] // Dbg[]", "Text", CellLabel->"In[4]:=", Evaluatable->True], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_16_37_20_"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(test[5]\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_16_37_20_3"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_16_37_20_"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["2", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox["Module", (Short[ #, 4]&)], TagBox["\<\"[\"\>", (Short[ #, 4]&)], TagBox[\({}\), (Short[ #, 4]&)], TagBox["\<\",...\"\>", (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_16_37_20_3"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_16_37_20_3"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["3", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox["While", (Short[ #, 4]&)], TagBox["\<\"[\"\>", (Short[ #, 4]&)], TagBox[\(5 > 0\), (Short[ #, 4]&)], TagBox["\<\",...\"\>", (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_16_37_20_4"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_16_37_20_4"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["4", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(5 > 0\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_16_37_20_5"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_16_37_20_4"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["5", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox["True", (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_16_37_20_5"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_16_37_20_5"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["6", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(Print[5]\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_16_37_20_6"], Cell[BoxData[ \(5\)], "Print", CellLabel->"From In[4]:="], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_16_37_20_5"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["7", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox["Null", (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_16_37_20_6"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_16_37_20_5"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["8", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(5--\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_16_37_20_7"], Cell[BoxData[ \(Decrement::"rvalue" \(\(:\)\(\ \)\) "\!\(5\) is not a variable with a value, so its value cannot be \ changed."\)], "Message", CellLabel->"From In[4]:="], Cell[BoxData[ StyleBox[ RowBox[{ TagBox["\<\"Dbg aborting at step \"\>", (Short[ #, 4]&)], TagBox["8", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ RowBox[{ StyleBox[ TagBox["\<\"While evaluating: \"\>", (Short[ #, 4]&)], FontColor->RGBColor[1, 0, 0]], TagBox[\(5--\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ StyleBox[ RowBox[{ TagBox["\<\"Inside \"\>", (Short[ #, 4]&)], TagBox["While", (Short[ #, 4]&)], TagBox["\<\"[\"\>", (Short[ #, 4]&)], TagBox[\(5 > 0\), (Short[ #, 4]&)], TagBox["\<\",...\"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ StyleBox[ RowBox[{ TagBox["\<\"Inside \"\>", (Short[ #, 4]&)], TagBox["Module", (Short[ #, 4]&)], TagBox["\<\"[\"\>", (Short[ #, 4]&)], TagBox[\({}\), (Short[ #, 4]&)], TagBox["\<\",...\"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ RowBox[{ StyleBox[ TagBox["\<\"While evaluating: \"\>", (Short[ #, 4]&)], FontColor->RGBColor[1, 0, 0]], TagBox[\(test[5]\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ StyleBox[ RowBox[{ TagBox["8", (Short[ #, 4]&)], TagBox["\<\" steps in all\"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ \($Aborted\)], "Output", CellLabel->"Out[4]="], Cell[TextData[{ "Examination of the above example shows that ", StyleBox["Dbg", FontWeight->"Bold"], " is actually a function which returns a debugging function! This may seem \ odd, but it means that ", StyleBox["Dbg", FontWeight->"Bold"], " can always be appended to the end of a line, even when it requires \ options, for example:" }], "Text", FontWeight->"Plain"], Cell["foo[k] // Dbg[MaxSteps->100]", "Text"], Cell[TextData[{ "This helps to separate users code from the details of debugger switches, \ and is obviously useful when debugging is complete and ", StyleBox["Dbg", FontWeight->"Bold"], " must be removed." }], "Text", FontWeight->"Plain"] }, Open ]], Cell[CellGroupData[{ Cell["Deciding what not to print", "Section"], Cell[TextData[{ "A crucial aspect of ", StyleBox["Dbg", FontWeight->"Bold"], " is that it does not print out every step. Many of the steps which ", StyleBox["TracePrint", FontWeight->"Bold"], " exposes only serve to clutter the output and confuse the beginner. What, \ for example, does it mean to evaluate the ", StyleBox["While", FontWeight->"Bold"], " symbol! A naive user might well conclude that he had used ", StyleBox["While", FontWeight->"Bold"], " as a variable by mistake.\n\n", StyleBox["Dbg", FontWeight->"Bold"], " operates using ", StyleBox["TraceScan", FontWeight->"Bold"], " and thus obtains a ", StyleBox["HoldForm", FontWeight->"Bold"], " representation of every step before it is evaluated. The following \ evaluations are considered trivial and are not printed or counted in the step \ numbering:\n\n\[FilledSmallCircle] Evaluations of numbers or number-like \ objects such as DirectedInfinity[1].\n\[FilledSmallCircle] Evaluations of any \ atom which does not have a value. This means that for example ", StyleBox["While", FontWeight->"Bold"], ", ", StyleBox["Pi", FontWeight->"Bold"], ", and ", StyleBox["X", FontWeight->"Bold"], " would not be printed (assuming ", StyleBox["X", FontWeight->"Bold"], " was being used as an algebraic variable and did not have a value).\n\ \[FilledSmallCircle] Evaluations of lists. This does not preclude the \ printing of the evaluation of individual elements of a list if these are \ non-trivial, but it prevents the repeated printing of large vectors. For \ example:" }], "Text", FontWeight->"Plain"], Cell["{1,2+3,4} // Dbg[]", "Text", CellLabel->"In[1]:=", Evaluatable->True], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_8_12_19_55_1_"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(2 + 3\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_8_12_19_55_1_3"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_8_12_19_55_1_"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["2", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox["5", (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_8_12_19_55_1_3"], Cell[BoxData[ StyleBox[ RowBox[{ TagBox["2", (Short[ #, 4]&)], TagBox["\<\" steps in all\"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ \({1, 5, 4}\)], "Output", CellLabel->"Out[1]="], Cell[TextData[{ "\[FilledSmallCircle] Evaluations of expressions whose heads are explicitly \ excluded by the ", StyleBox["ExcludeHeads", FontWeight->"Bold"], " option, or which are not explicitly included when the ", StyleBox["ShowHeads", FontWeight->"Bold"], " option is used.\n\n\[FilledSmallCircle] By default, expressions whose \ heads belong to the private parts of other packages are not shown. This can \ greatly reduce the irrelevant ", StyleBox["Dbg", FontWeight->"Bold"], " output for code that contains calls to packages (including some kernel \ functions). ", StyleBox["Dbg", FontWeight->"Bold"], " printout from within packages can be enabled if required.\n\n\ \[FilledSmallCircle] For awkward cases the ", StyleBox["FilterHeads", FontWeight->"Bold"], " option allows the user to specify a predicate which is applied to each \ head to determine whether to print the corresponding expression. For example, \ in programs involving several packages the predicate might use the ", StyleBox["Context", FontWeight->"Bold"], " function to test each head to decide if it required printing." }], "Text", FontWeight->"Plain"] }, Open ]], Cell[CellGroupData[{ Cell["Infinite loops", "Section"], Cell[TextData[{ "Many programming bugs manifest themselves as infinite loops. This is just \ as true of ", StyleBox["Mathematica ", FontSlant->"Italic"], "code. Here is a trivial loop executed under ", StyleBox["Dbg", FontWeight->"Bold"], ". Since we use the default options, ", StyleBox["Dbg", FontWeight->"Bold"], " prints 10 steps and then silently attempts to complete the calculation. \ However, when the ", StyleBox["Dbg", FontWeight->"Bold"], " package is loaded it displays a small palette of options. This includes a \ button which can be used to abort the process with a traceback:" }], "Text", FontWeight->"Plain"], Cell["\<\ k=-1; While[k != 0, foo[k]; k--; ] //Dbg[]\ \>", "Text", CellLabel->"In[9]:=", Evaluatable->True], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox["While", (Short[ #, 4]&)], TagBox["\<\"[\"\>", (Short[ #, 4]&)], TagBox[\(k \[NotEqual] 0\), (Short[ #, 4]&)], TagBox["\<\",...\"\>", (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_2703"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_2703"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["2", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(k \[NotEqual] 0\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_2704"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_2704"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["3", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox["k", (Short[ #, 4]&)], StyleBox[ TagBox["\<\" \[LongRightArrow] \"\>", (Short[ #, 4]&)], FontColor->RGBColor[0, 0, 1]], TagBox[\(-1\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_2705"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_2704"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["4", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(-1\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_2705"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_2703"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["5", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(\(-1\) \[NotEqual] 0\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_2704"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_2703"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["6", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox["True", (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_2704"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_2704"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["7", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(foo[k]\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_2706"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_2706"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["8", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox["k", (Short[ #, 4]&)], StyleBox[ TagBox["\<\" \[LongRightArrow] \"\>", (Short[ #, 4]&)], FontColor->RGBColor[0, 0, 1]], TagBox[\(-1\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_2707"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_2706"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["9", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(-1\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_2707"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_2704"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["10", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(foo[\(-1\)]\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_2706"], Cell[BoxData[ StyleBox[ TagBox["\<\"Dbg print limit exceeded - execution continuing\"\>", (Short[ #, 4]&)], FontColor->RGBColor[1, 0, 0]]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_3544"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1807", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(foo[k]\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_3546"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_3546"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1808", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox["k", (Short[ #, 4]&)], StyleBox[ TagBox["\<\" \[LongRightArrow] \"\>", (Short[ #, 4]&)], FontColor->RGBColor[0, 0, 1]], TagBox[\(-121\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_3547"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_3546"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1809", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(-121\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_3547"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_3544"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1810", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(foo[\(-121\)]\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_3546"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_3544"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1811", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(k--\), (Short[ #, 4]&)], StyleBox[ TagBox["\<\" \[LongRightArrow] \"\>", (Short[ #, 4]&)], FontColor->RGBColor[0, 0, 1]], TagBox[\(\(-1\) + \(-121\)\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_3548"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_3548"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1812", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox["k", (Short[ #, 4]&)], StyleBox[ TagBox["\<\" \[LongRightArrow] \"\>", (Short[ #, 4]&)], FontColor->RGBColor[0, 0, 1]], TagBox[\(-121\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_3549"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_3548"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1813", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(-121\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_3549"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_3548"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1814", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(k = \(-122\)\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_3550"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_3548"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1815", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(-122\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_3550"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_5_9_17_44_35_3544"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1816", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(-121\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_5_9_17_44_35_3548"], Cell[BoxData[ RowBox[{ TagBox["\<\"Dbg aborting as requested at step \"\>", (Short[ #, 4]&)], TagBox["1816", (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ StyleBox[ RowBox[{ TagBox["1816", (Short[ #, 4]&)], TagBox["\<\" steps in all\"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ \($Aborted\)], "Output", CellLabel->"Out[10]="], Cell[TextData[{ "When the 'Abort process' button is pressed, ", StyleBox["Dbg", FontWeight->"Bold"], " first allows a few steps to be printed \[Dash] which often helps to \ identify what is going on \[Dash] and then aborts with a traceback." }], "Text", FontWeight->"Plain"] }, Open ]], Cell[CellGroupData[{ Cell["More control", "Section"], Cell[TextData[{ "Debugging real examples usually involves several experiments, gradually \ zooming in on the defective code. The following options let you control the \ behaviour of ", StyleBox["Dbg", FontWeight->"Bold"], " and the output that it generates:" }], "Text", FontWeight->"Plain"], Cell[BoxData[GridBox[{ { StyleBox["MaxSteps", "FunctionName"], "10", \(Maximum\ number\ of\ intermediate\ steps\ to\ \ \(\(print\)\(.\)\)\)}, { StyleBox["ShowHeads", "FunctionName"], "All", \(Head\ or\ list\ of\ heads . \ Print\ only\ expressions\ \[IndentingNewLine] that\ match\ one\ of\ \(\(these\)\(.\)\)\)}, { StyleBox["ExcludeHeads", "FunctionName"], "None", \(List\ of\ heads\ of\ expressions\ not\ to\ \(\(print\)\(.\ \)\)\)}, { StyleBox["ContinueExecution", "FunctionName"], "True", \(Whether\ to\ continue\ execution\ after\ print\ \ \[IndentingNewLine] limit\ \(\(exceeded\)\(.\)\)\)}, { StyleBox["StartStep", "FunctionName"], "1", \(Number\ of\ step\ at\ which\ printing\ \(\(begins\)\(.\)\(\ \ \)\)\)}, { StyleBox["TriggerOn", "FunctionName"], "None", \(Start\ printing\ after\ this\ pattern\ is\ \ \(\(reached\)\(.\)\)\)}, { StyleBox["TriggerOff", "FunctionName"], "None", \(Stop\ printing\ after\ this\ pattern\ has\ \ \[IndentingNewLine] been\ \(\(reached\)\(.\)\)\)}, { StyleBox["ShowLevels", "FunctionName"], "False", \(Show\ the\ level\ on\ the\ stack\ of\ each\ expression\ \ \[IndentingNewLine] \(\((advanced\ feature)\)\(.\)\)\)}, { StyleBox["SuppressPackages", "FunctionName"], "True", \(Do\ not\ print\ steps\ inside\ \(\(packages\)\(.\)\(\ \ \)\)\)}, { StyleBox["HiddenFunctions", "FunctionName"], "None", \(List\ of\ functions\ whose\ inner\ workings\ are\ \ \[IndentingNewLine] not\ of\ \(\(interest\)\(.\)\)\)}, { StyleBox["AbortStep", "FunctionName"], "\[Infinity]", \(Abort\ with\ traceback\ after\ this\ step\ \ \(\(number\)\(.\)\)\)}, { StyleBox["Step", "FunctionName"], "False", \(Suspend\ the\ program\ at\ the\ first\ step\ so\ as\ to\ \[IndentingNewLine] use\ the\ breakpoint\ \(\(facilities\)\(.\)\)\)}, { StyleBox["BreakAt", "FunctionName"], "Null", \(Pattern\ to\ use\ as\ a\ breakpoint . \ This\ option\ is\[IndentingNewLine] usually\ supplied\ using\ the\ \[RuleDelayed] \ operator\ to\[IndentingNewLine] prevent\ the\ evaluation\ of\ the\ pattern\ \(\(itself\)\(.\)\)\)}, { StyleBox["BreakFail", "FunctionName"], "False", \(Whether\ to\ use\ the\ breakpoint\ mechanism\ if\ the\ \ \[IndentingNewLine] program\ is\ aborted\ by\ button\ or\ generates\ an\ \ \[IndentingNewLine] error\ \(\(message\)\(.\)\)\)}, { StyleBox["AbortStepCount", "FunctionName"], "10", \(Number\ of\ steps\ to\ print\ after\ \ the\ Abort\ \ \[IndentingNewLine] button\ is\ pressed\ and\ before\ the\ process\ \[IndentingNewLine] goes\ into\ traceback\ and\ aborts\)}, { StyleBox["FilterHeads", "FunctionName"], "Null", \(User - supplied\ predicate\ which\ takes\ a\ head\ as\[IndentingNewLine] argument\ and\ returns\ True\ if\ Dbg\ should\ display\ \ \[IndentingNewLine] expressions\ with\ that\ \(\(head\)\(.\)\)\)} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}, GridFrame->2, RowLines->True, ColumnLines->True]], "Text"], Cell[TextData[{ "Each of these options can be set as Dbg is used, or using ", StyleBox["SetOptions", FontWeight->"Bold"], "." }], "Text", FontWeight->"Plain"] }, Open ]], Cell[CellGroupData[{ Cell["Using colour", "Section"], Cell[TextData[{ "The ", StyleBox["Dbg", FontWeight->"Bold"], " palette provides a button to colour a selected part of a program together \ with another button to remove the colour when not required. A coloured \ expression is represented in such a way that when the ", StyleBox["Dbg", FontWeight->"Bold"], " package is not loaded the colour has no effect.\n\nIf the ", StyleBox["Dbg", FontWeight->"Bold"], " package is loaded but not actually used to execute the expression, then \ coloured expressions are printed as they are encountered (but otherwise \ behave normally) \[Dash] as illustrated below. " }], "Text", FontWeight->"Plain"], Cell[BoxData[ RowBox[{\(test[kk_]\), ":=", RowBox[{"Module", "[", RowBox[{\({k = kk, ans = 1}\), ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"While", "[", RowBox[{\(k > 0\), ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"ans", "=", TagBox[ StyleBox[\(ans \((y + k)\)\), Background->RGBColor[0, 1, 1]], Identity]}], ";", "\[IndentingNewLine]", \(k--\), ";"}]}], "\n", "]"}], ";", "\n", "ans"}]}], "\n", "]"}]}]], "Input", CellLabel->"In[7]:=", Evaluatable->True], Cell["test[4]", "Text", CellLabel->"In[6]:=", Evaluatable->True], Cell[BoxData[ RowBox[{ TagBox[ TagBox[ StyleBox[\(ans$42\ \((y + k$42)\)\), Background->RGBColor[0, 1, 1]], Identity], (Short[ #, 4]&)], StyleBox[ TagBox["\<\" \[LongRightArrow] \"\>", (Short[ #, 4]&)], FontColor->RGBColor[0, 0, 1]], TagBox[\(4 + y\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ RowBox[{ TagBox[ TagBox[ StyleBox[\(ans$42\ \((y + k$42)\)\), Background->RGBColor[0, 1, 1]], Identity], (Short[ #, 4]&)], StyleBox[ TagBox["\<\" \[LongRightArrow] \"\>", (Short[ #, 4]&)], FontColor->RGBColor[0, 0, 1]], TagBox[\(\((3 + y)\)\ \((4 + y)\)\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ RowBox[{ TagBox[ TagBox[ StyleBox[\(ans$42\ \((y + k$42)\)\), Background->RGBColor[0, 1, 1]], Identity], (Short[ #, 4]&)], StyleBox[ TagBox["\<\" \[LongRightArrow] \"\>", (Short[ #, 4]&)], FontColor->RGBColor[0, 0, 1]], TagBox[\(\((2 + y)\)\ \((3 + y)\)\ \((4 + y)\)\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ RowBox[{ TagBox[ TagBox[ StyleBox[\(ans$42\ \((y + k$42)\)\), Background->RGBColor[0, 1, 1]], Identity], (Short[ #, 4]&)], StyleBox[ TagBox["\<\" \[LongRightArrow] \"\>", (Short[ #, 4]&)], FontColor->RGBColor[0, 0, 1]], TagBox[\(\((1 + y)\)\ \((2 + y)\)\ \((3 + y)\)\ \((4 + y)\)\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ \(\((1 + y)\)\ \((2 + y)\)\ \((3 + y)\)\ \((4 + y)\)\)], "Output", CellLabel->"Out[6]="], Cell[TextData[{ StyleBox["When executed under ", FontWeight->"Plain"], "Dbg", StyleBox[", coloured expressions also print, as in the above example, but \ in addition they can form the basis for breakpoints as explained in the next \ section.", FontWeight->"Plain"] }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Stepping and breakpoint facilities", "Section"], Cell[TextData[{ "Debuggers for traditional programming languages such as C and Fortran are \ usually designed around the concept of setting breakpoints and/or single \ stepping the code. In my experience, this style of debugging becomes less and \ less useful as the code becomes more complicated and recursive. However, many \ ", StyleBox["Mathematica", FontSlant->"Italic"], " programmers have a Fortran background and like to step through code to \ discover how it works. The simplest way to proceed is to use the Step option \ on ", StyleBox["Dbg", FontWeight->"Bold"], " and then single-step the resultant code:" }], "Text", FontWeight->"Plain"], Cell["Map[Sqrt,{1,4,7+9}] // Dbg[Step->True]", "Text", CellLabel->"In[6]:=", Evaluatable->True], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_8_12_20_18_19_"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(Sqrt /@ {1, 4, 7 + 9}\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_8_12_20_18_19_20"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_8_12_20_18_19_20"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["2", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(7 + 9\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_8_12_20_18_19_21"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_8_12_20_18_19_20"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["3", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox["16", (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_8_12_20_18_19_21"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_8_12_20_18_19_"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["4", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(Sqrt /@ {1, 4, 16}\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_8_12_20_18_19_20"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_8_12_20_18_19_20"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["5", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(\@1\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_8_12_20_18_19_22"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_8_12_20_18_19_20"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["6", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(\@1\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_8_12_20_18_19_22"], Cell[BoxData[ StyleBox[ TagBox["\<\"Aborting as requested\"\>", (Short[ #, 4]&)], FontColor->RGBColor[1, 0, 0]]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ StyleBox[ RowBox[{ TagBox["6", (Short[ #, 4]&)], TagBox["\<\" steps in all\"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"], Cell[BoxData[ \($Aborted\)], "Output", CellLabel->"Out[5]="], Cell["\<\ In this example the output is generated one line at a time as the \ 'Step' palette is pressed. Eventually the 'Abort process' button is pressed \ to discard the rest of the run.\ \>", "Text", FontWeight->"Plain"], Cell[TextData[{ "Using colour it is possible to set breakpoints. Consider the ", StyleBox["test", FontWeight->"Bold"], " program from the previous section and assume that it has been entered as \ defined above with the coloured expression. Now we can set up ", StyleBox["Dbg", FontWeight->"Bold"], " in single step mode and then press the 'Colour break' palette to run the \ program until a coloured expression is encountered:" }], "Text", FontWeight->"Plain"], Cell[CellGroupData[{ Cell[BoxData[ \(test[4] // Dbg[Step \[Rule] True]\)], "Input", CellLabel->"In[11]:="], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_8_15_17_7_12_"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["1", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[\(test[4]\), (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_8_15_17_7_12_5"], Cell[BoxData[ RowBox[{ RowBox[{ ButtonBox[ StyleBox["?", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select[ ], ButtonEvaluator->Automatic, Active->True], ButtonBox[ StyleBox["\[UpArrow]", FontWeight->"Bold"], ButtonFunction:>SalfDebug`Private`Dbg\[Breve]Select\[Breve]Up[ "Dbg_2001_8_15_17_7_12_11"], ButtonEvaluator->Automatic, Active->True], StyleBox[ RowBox[{ TagBox["\<\"(\"\>", (Short[ #, 4]&)], TagBox["14", (Short[ #, 4]&)], TagBox["\<\") \"\>", (Short[ #, 4]&)]}], FontColor->RGBColor[1, 0, 0]]}], TagBox[ TagBox[ StyleBox[\(ans$70\ \((y + k$70)\)\), Background->RGBColor[0, 1, 1]], Identity], (Short[ #, 4]&)]}]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Dbg_2001_8_15_17_7_12_12"], Cell[BoxData[ StyleBox[ TagBox["\<\"Breakpoint encountered\"\>", (Short[ #, 4]&)], FontColor->RGBColor[1, 0, 0]]], "Print", Background->RGBColor[1, 0.8, 0.8], CellTags->"Info"] }, Open ]], Cell[TextData[{ "Whenever a program is suspended the user is free to execute any ", StyleBox["Mathematica", FontSlant->"Italic"], " command (except running a nested copy of ", StyleBox["Dbg", FontWeight->"Bold"], ") or to use any of the bottom set of palette buttons. These allow for \ stepping, resuming or setting break points. It is also possible to obtain a \ traceback (as if the program had aborted) without actually aborting the \ program. The 'Abort' button is used to abandon the program and return to the \ top level." }], "Text", FontWeight->"Plain"] }, Open ]], Cell[CellGroupData[{ Cell["Improving the performance of Dbg", "Section"], Cell[TextData[{ "Perhaps the only fundamental drawback to using ", StyleBox["Dbg", FontWeight->"Bold"], " is that it inevitably slows the program down many-fold. This is because \ each step in the user's code requires the execution of many steps inside ", StyleBox["Dbg", FontWeight->"Bold"], ". Clearly, when ", StyleBox["Dbg", FontWeight->"Bold"], " is generating output this overhead is totally unimportant, however when \ the program must run silently for a while this can be a problem. Clearly, if \ some or all of this silent part of ", StyleBox["Dbg", FontWeight->"Bold"], " (or equivalent facilities) were added to the ", StyleBox["Mathematica", FontSlant->"Italic"], " kernel user programs could execute at almost full speed while being \ debugged.\n\nOne particular problem concerns the 'Abort process' button. \ Clearly the ability to abort a program that has gone into a loop \[Dash] and \ get some useful information from it \[Dash] is extremely valuable. \ Unfortunately, this task has to be done very indirectly. Normally, if a \ button in a palette is pressed while a kernel task is in progress, then the \ new action is queued until the kernel is idle. The code for the 'Abort \ process' button clearly cannot do this! The 'Abort process' button therefore \ changes the state of an innocuous Frontend option \[Dash] the ", StyleBox["StartupSound", FontWeight->"Bold"], " boolean, which fortunately it can do without using the kernel. ", StyleBox["Dbg", FontWeight->"Bold"], " queries the state of this to determine if the user has requested a \ program abort. Because communication with the Frontend is quite slow, this \ check is only made every 500 steps. Usually this works quite well, however if \ the program being debugged contains some exceptionally slow steps \[Dash] \ e.g. arithmetic on very large integers \[Dash] there could be a substantial \ wait before the 'Abort process' button works. Clearly ", StyleBox["Dbg", FontWeight->"Bold"], " could read the time each step, but this too would introduce extra \ overhead at each step of the program. Note that although ", StyleBox["Dbg", FontWeight->"Bold"], " sets the state of ", StyleBox["StartupSound", FontWeight->"Bold"], " back the way it found it, the above use of ", StyleBox["StartupSound", FontWeight->"Bold"], " is rather clumsy. It would be nice if the Frontend offered a few dummy \ variables that could be set in this way.\n\nMuch of the code in ", StyleBox["Dbg", FontWeight->"Bold"], " which must be executed for each program step is of a book-keeping nature \ \[Dash] testing flags, incrementing counters, etc. \[Dash] exactly the kind \ of code which is least efficient. Again, if some of this could be embedded \ inside the kernel a substantial speed improvement could be realised." }], "Text", FontWeight->"Plain"] }, Open ]], Cell[CellGroupData[{ Cell["Summary", "Section"], Cell[TextData[{ "This paper has outlined just some of the features of ", StyleBox["Dbg", FontWeight->"Bold"], ". It is hoped that in addition to illustrating some of the features of the \ ", StyleBox["Dbg", FontWeight->"Bold"], " debugger, it will also stimulate a discussion about what sort of debug \ facilities would be useful inside ", StyleBox["Mathematica", FontSlant->"Italic"], ". It is felt that the debug facilities of ", StyleBox["Mathematica", FontSlant->"Italic"], " have not kept pace with the rest of the package and could offer the \ programmer much more help." }], "Text", FontWeight->"Plain"] }, Open ]] }, FrontEndVersion->"4.1 for Microsoft Windows", ScreenRectangle->{{0, 1024}, {0, 695}}, ScreenStyleEnvironment->"Presentation", WindowSize->{934, 639}, WindowMargins->{{-3, Automatic}, {Automatic, 12}}, ShowCellBracket->True, ShowCellLabel->False, StyleDefinitions -> Notebook[{ Cell[CellGroupData[{ Cell["Style Definitions", "Subtitle"], Cell["\<\ Modify the definitions below to change the default appearance of \ all cells in a given style. Make modifications to any definition using \ commands in the Format menu.\ \>", "Text"], Cell[CellGroupData[{ Cell["Style Environment Names", "Subsection"], Cell[StyleData[All, "Working"], CellBracketOptions->{"Thickness"->1, "Color"->RGBColor[0.500008, 0.6, 1]}, ScriptMinSize->9], Cell[StyleData[All, "Presentation"], CellMargins->{{Inherited, 120}, {Inherited, Inherited}}, ScriptMinSize->9], Cell[StyleData[All, "Markup"], ScriptMinSize->9], Cell[StyleData[All, "Printout"], PageWidth->PaperWidth, ShowCellBracket->False, Hyphenation->True, PrivateFontOptions->{"FontType"->"Outline"}] }, Closed]], Cell[CellGroupData[{ Cell["Notebook Options", "Subsection"], Cell["\<\ The options defined for the style below will be used at the \ Notebook level. \ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Notebook"], PageHeaders->{{Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], None, Cell[ TextData[ { OptionValueBox[ "FileName"]}], "Header"]}, {Cell[ TextData[ { OptionValueBox[ "FileName"]}], "Header"], None, Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"]}}, PrintingOptions->{"FirstPageHeader"->False, "FacingPages"->True}, CellLabelAutoDelete->False, CellFrameLabelMargins->6, DefaultNewCellStyle->"Text", InputAutoReplacements->{"TeX"->StyleBox[ RowBox[ {"T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "LaTeX"->StyleBox[ RowBox[ {"L", StyleBox[ AdjustmentBox[ "A", BoxMargins -> {{-0.36, -0.1}, {0, -0}}, BoxBaselineShift -> -0.2], FontSize -> Smaller], "T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "mma"->"Mathematica", "Mma"->"Mathematica", "MMA"->"Mathematica"}, StyleMenuListing->None], Cell[StyleData["Notebook", "Presentation"], PageHeaders->{{Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], None, Cell[ TextData[ { OptionValueBox[ "FileName"]}], "Header"]}, {Cell[ TextData[ { OptionValueBox[ "FileName"]}], "Header"], None, Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"]}}, PrintingOptions->{"FirstPageHeader"->False, "FacingPages"->True}, CellMargins->{{Inherited, 120}, {Inherited, Inherited}}, CellLabelAutoDelete->False, CellFrameLabelMargins->6, DefaultNewCellStyle->"Text", InputAutoReplacements->{"TeX"->StyleBox[ RowBox[ {"T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "LaTeX"->StyleBox[ RowBox[ {"L", StyleBox[ AdjustmentBox[ "A", BoxMargins -> {{-0.36, -0.1}, {0, -0}}, BoxBaselineShift -> -0.2], FontSize -> Smaller], "T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "mma"->"Mathematica", "Mma"->"Mathematica", "MMA"->"Mathematica"}, StyleMenuListing->None, Background->RGBColor[0.959991, 0.908461, 0.825605]] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Style Menu Shortcuts", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["Section"], CellMargins->{{12, 12}, {3, 24}}, CellGroupingRules->{"SectionGrouping", 10}, PageBreakBelow->False, ParagraphIndent->-25, TabSpacings->2.1, CounterIncrements->"Section", CounterAssignments->{{"Subsection", 0}}, StyleMenuListing->"Head1", FontFamily->"Helvetica", FontSize->14, FontWeight->"Bold"], Cell[StyleData["Section", "Presentation"], CellMargins->{{72, 120}, {3, 28}}, CellFrameMargins->{{8, 1}, {1, 1}}, FontFamily->"Arial", FontSize->18, FontColor->GrayLevel[1], Background->RGBColor[0.258061, 0.387091, 0.612909]], Cell[StyleData["Section", "Printout"], CellMargins->{{2, 12}, {3, 18}}, FontSize->12, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["SectionDingbat"], CellSize->{24, Inherited}, TextAlignment->Left, StyleMenuListing->None], Cell[StyleData["SectionDingbat", "Printout"], CellSize->{19, Inherited}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["SectionNumber"], StyleMenuListing->None, FontSize->12], Cell[StyleData["SectionNumber", "Printout"], StyleMenuListing->None, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsection"], CellDingbat->None, CellMargins->{{12, 12}, {3, 12}}, CellElementSpacings->{"ClosedGroupTopMargin"->12}, CellGroupingRules->{"SectionGrouping", 20}, PageBreakBelow->False, CellFrameLabelMargins->6, ParagraphIndent->-18, TabSpacings->1.7, CounterIncrements->"Subsection", CounterAssignments->{{"Subsubsection", 0}}, StyleMenuListing->"Head2", FontFamily->"Helvetica", FontSize->12, FontWeight->"Bold"], Cell[StyleData["Subsection", "Presentation"], CellMargins->{{72, 120}, {2, 15}}, FontFamily->"Arial", FontSize->18, FontColor->RGBColor[0.161288, 0.258061, 0.419348]], Cell[StyleData["Subsection", "Printout"], CellMargins->{{2, 12}, {2, 5}}, FontSize->10, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["SubsectionDingbat"], CellSize->{18, Inherited}, TextAlignment->Left, StyleMenuListing->None], Cell[StyleData["SubsectionDingbat", "Printout"], CellSize->{12, Inherited}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["SubsectionNumber"], StyleMenuListing->None, FontSize->10, CounterBoxOptions->{CounterFunction:>(Part[ CharacterRange[ "A", "Z"], #]&)}], Cell[StyleData["SubsectionNumber", "Printout"], FontSize->8] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsubsection"], CellMargins->{{12, 12}, {3, 6}}, CellElementSpacings->{"ClosedGroupTopMargin"->12}, CellGroupingRules->{"SectionGrouping", 30}, PageBreakBelow->False, CounterIncrements->"Subsubsection", CounterAssignments->{{"Subsubsubsection", 0}}, StyleMenuListing->"Head3", FontSize->12, FontWeight->"Bold", FontColor->GrayLevel[0.300008], CounterBoxOptions->{CounterFunction:>Identity}], Cell[StyleData["Subsubsection", "Printout"], CellMargins->{{2, 12}, {1, 4}}, FontSize->10, FontColor->GrayLevel[0]], Cell[StyleData["Subsubsection", "Presentation"], CellMargins->{{72, 120}, {1, 4}}, FontFamily->"Arial", FontSize->14, FontColor->RGBColor[0.3608, 0.3608, 0.439994]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsubsubsection"], CellMargins->{{12, 12}, {3, 6}}, CellGroupingRules->{"SectionGrouping", 40}, CounterIncrements->"Subsubsubsection", StyleMenuListing->"Head4", FontWeight->"Bold", FontSlant->"Italic", FontColor->GrayLevel[0.300008]], Cell[StyleData["Subsubsubsection", "Presentation"], CellMargins->{{72, 120}, {1, 4}}, FontFamily->"Arial", FontColor->RGBColor[0.500206, 0.500206, 0.609995]], Cell[StyleData["Subsubsubsection", "Printout"], CellMargins->{{2, 12}, {1, 4}}, FontSize->10, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["EquationNumbered"], CellMargins->{{36, 6}, {7, 7}}, CellHorizontalScrolling->True, CellFrameLabels->{{None, Cell[ TextData[ {"(", CounterBox[ "Equation"], ")"}]]}, {None, None}}, DefaultFormatType->DefaultInputFormatType, InputAutoReplacements->{}, ShowAutoStyles->False, CounterIncrements->"Equation", FormatTypeAutoConvert->False], Cell[StyleData["EquationNumbered", "Presentation"], CellMargins->{{72, 120}, {15, 15}}, FontSize->18], Cell[StyleData["EquationNumbered", "Printout"], CellMargins->{{21, 6}, {5, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Equation"], CellMargins->{{36, 10}, {7, 7}}, CellHorizontalScrolling->True, DefaultFormatType->DefaultInputFormatType, InputAutoReplacements->{}, ShowAutoStyles->False, CounterIncrements->"Equation"], Cell[StyleData["Equation", "Presentation"], CellMargins->{{72, 120}, {15, 15}}, FontSize->18, FontVariations->{"CompatibilityType"->0}], Cell[StyleData["Equation", "Printout"], CellMargins->{{21, 6}, {5, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Text"], CellMargins->{{12, 10}, {3, 5}}, TextAlignment->Left, LineSpacing->{1, 3}, CounterIncrements->"Text", FontFamily->"Times", FontSize->12], Cell[StyleData["Text", "Presentation"], CellMargins->{{72, 120}, {1, 4}}, FontFamily->"Arial", FontSize->15, FontWeight->"Bold"], Cell[StyleData["Text", "Printout"], CellMargins->{{2, 10}, {1, 4}}, TextJustification->1, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["InputNumbered"], CellMargins->{{36, 10}, {6, 8}}, Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, CellFrameLabels->{{None, Cell[ BoxData[ FormBox[ StyleBox[ RowBox[ {"(", CounterBox[ "Equation"], ")"}], FontWeight -> "Plain"], TraditionalForm]]]}, {None, None}}, DefaultFormatType->DefaultInputFormatType, InputAutoReplacements->{}, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, AutoItalicWords->{}, LanguageCategory->"Formula", FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, LinebreakAdjustments->{0.85, 2, 10, 0, 1}, CounterIncrements->"Input", FontWeight->"Bold"], Cell[StyleData["InputNumbered", "Presentation"], CellMargins->{{72, 120}, {10, 10}}, LinebreakAdjustments->{0.85, 2, 10, 1, 1}, FontSize->14], Cell[StyleData["InputNumbered", "Printout"], CellMargins->{{21, 6}, {3, 6}}, LinebreakAdjustments->{0.85, 2, 10, 1, 1}, FontSize->9] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Input"], CellMargins->{{36, 10}, {6, 8}}, Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, DefaultFormatType->DefaultInputFormatType, InputAutoReplacements->{}, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, AutoItalicWords->{}, LanguageCategory->"Formula", FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, LinebreakAdjustments->{0.85, 2, 10, 0, 1}, CounterIncrements->"Input", FontWeight->"Bold"], Cell[StyleData["Input", "Presentation"], CellMargins->{{108, 120}, {10, 10}}, LinebreakAdjustments->{0.85, 2, 10, 1, 1}, FontSize->16, FontVariations->{"CompatibilityType"->0}], Cell[StyleData["Input", "Printout"], CellMargins->{{21, 6}, {3, 6}}, LinebreakAdjustments->{0.85, 2, 10, 1, 1}, FontSize->9] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Miscellaneous Frontmatter", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["Author"], CellMargins->{{36, 54}, {1, 18}}, CellGroupingRules->{"SectionGrouping", 50}, ParagraphSpacing->{0, 0}, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->12, FontWeight->"Bold"], Cell[StyleData["Author", "Presentation"], ShowCellBracket->False, CellMargins->{{0, 0}, {20, 0}}, CellFrameMargins->{{73, 4}, {2, 6}}, CellFrameLabelMargins->False, FontFamily->"Arial", FontSize->18, FontColor->GrayLevel[1], Background->RGBColor[0.2, 0.4, 0.6]], Cell[StyleData["Author", "Printout"], CellMargins->{{21, 10}, {0, 18}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Address"], CellMargins->{{36, 54}, {0, 3}}, CounterIncrements->"Address", StyleMenuListing->None, FontFamily->"Times", FontSize->12, FontColor->GrayLevel[0.2]], Cell[StyleData["Address", "Printout"], CellMargins->{{21, 10}, {0, 2}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Email"], CellMargins->{{36, 54}, {0, 0}}, ParagraphSpacing->{0, 8}, StyleMenuListing->None, FontFamily->"Courier", FontSize->10, FontColor->GrayLevel[0.2]], Cell[StyleData["Email", "Printout"], CellMargins->{{21, 10}, {0, 0}}, LineSpacing->{1, 1}, FontSize->8] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["AbstractText"], CellFrame->{{0, 0}, {0.25, 0.25}}, CellMargins->{{36, 54}, {3, 24}}, CellGroupingRules->{"SectionGrouping", 50}, CellFrameMargins->5, TextAlignment->Left, LineSpacing->{1, 1}, StyleMenuListing->None, FontSize->12, FontColor->RGBColor[0, 0, 0.500008]], Cell[StyleData["AbstractText", "Printout"], CellMargins->{{21, 86}, {2, 14}}, CellFrameMargins->3, FontSize->9] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Date"], CellMargins->{{36, 54}, {6, 3}}, ParagraphSpacing->{0, 8}, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->9], Cell[StyleData["Date", "Printout"], CellMargins->{{21, 10}, {3, 2}}, LineSpacing->{1, 1}, FontSize->7] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Miscellaneous Text", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["Theorem"], CellMargins->{{12, 10}, {3, 5}}, LineSpacing->{1, 3}, CounterIncrements->"Theorem"], Cell[StyleData["Theorem", "Printout"], CellMargins->{{2, 2}, {1, 4}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Lemma"], CellMargins->{{12, 10}, {3, 5}}, LineSpacing->{1, 3}, CounterIncrements->"Lemma"], Cell[StyleData["Lemma", "Printout"], CellMargins->{{2, 2}, {1, 4}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Program"], CellFrame->{{0, 0}, {1, 1}}, CellMargins->{{36, 0}, {7, 7}}, CellFrameMargins->{{12, 10}, {7, 5}}, InputAutoReplacements->{}, FontFamily->"Courier"], Cell[StyleData["Program", "Printout"], CellMargins->{{21, 0}, {5, 5}}, FontSize->9.5] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Item1"], CellMargins->{{12, 4}, {2, 4}}, ParagraphIndent->-24, CounterIncrements->"Item1"], Cell[StyleData["Item1", "Printout"], CellMargins->{{3, 0}, {1, 3}}, ParagraphIndent->-18, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Item1Paragraph"], CellMargins->{{36, 4}, {4, 2}}], Cell[StyleData["Item1Paragraph", "Printout"], CellMargins->{{21, 0}, {3, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Item2"], CellMargins->{{21, 4}, {2, 4}}, ParagraphIndent->-24, CounterIncrements->"Item2"], Cell[StyleData["Item2", "Printout"], CellMargins->{{12, 0}, {1, 3}}, ParagraphIndent->-18, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Item2Paragraph"], CellMargins->{{45, 4}, {4, 2}}, StyleMenuListing->None], Cell[StyleData["Item2Paragraph", "Printout"], CellMargins->{{30, 0}, {3, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Item3"], CellMargins->{{31, 4}, {2, 4}}, ParagraphIndent->-24, CounterIncrements->"Item3"], Cell[StyleData["Item3", "Printout"], CellMargins->{{21, 0}, {1, 3}}, ParagraphIndent->-18, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Item3Paragraph"], CellMargins->{{55, 4}, {4, 2}}, StyleMenuListing->None], Cell[StyleData["Item3Paragraph", "Printout"], CellMargins->{{39, 0}, {3, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["ItemDingbat"], CellSize->{24, Inherited}, TextAlignment->Right, StyleMenuListing->None, FontWeight->"Bold"], Cell[StyleData["ItemDingbat", "Printout"], CellSize->{18, Inherited}, FontSize->10] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Miscellaneous Input/Output", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["Output"], CellMargins->{{36, 10}, {7, 5}}, CellEditDuplicate->True, CellGroupingRules->"OutputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, DefaultFormatType->DefaultOutputFormatType, InputAutoReplacements->{}, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, AutoItalicWords->{}, LanguageCategory->"Formula", FormatType->InputForm, CounterIncrements->"Output", StyleMenuListing->None], Cell[StyleData["Output", "Presentation"], CellMargins->{{117, 0}, {6, 3}}, FontSize->16], Cell[StyleData["Output", "Printout"], CellMargins->{{21, 0}, {6, 3}}, FontSize->9] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Graphics"], CellMargins->{{36, 0}, {8, 6}}, CellGroupingRules->"GraphicsGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, ShowCellLabel->False, DefaultFormatType->DefaultOutputFormatType, InputAutoReplacements->{}, LanguageCategory->None, FormatType->InputForm, CounterIncrements->"Graphics", ImageMargins->{{0, 0}, {0, 0}}, StyleMenuListing->None, FontSize->12], Cell[StyleData["Graphics", "Presentation"], CellMargins->{{27, 0}, {6, 3}}, ImageMargins->{{0, 0}, {0, 0}}, FontSize->14, Magnification->0.8], Cell[StyleData["Graphics", "Printout"], CellMargins->{{27, 0}, {6, 3}}, ImageMargins->{{0, 0}, {0, 0}}, Magnification->0.8] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["Figure, Picture, and Tables", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["TableHead"], PageWidth->530, CellMargins->{{38, 10}, {1, 7}}, LineSpacing->{1, 2}, CounterIncrements->"TableHead", StyleMenuListing->None, FontFamily->"Times", FontWeight->"Bold", GridBoxOptions->{ColumnWidths->40, ColumnAlignments->{Left}}], Cell[StyleData["TableHead", "Printout"], CellMargins->{{23, 10}, {1, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Table"], PageWidth->530, CellMargins->{{36, 10}, {1, 1}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.503, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["Table", "Printout"], CellMargins->{{21, 10}, {1, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["TablePlain"], PageWidth->530, CellMargins->{{36, 10}, {7, 7}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.503, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["TablePlain", "Printout"], CellMargins->{{21, 10}, {5, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["3ColumnTable"], PageWidth->530, CellMargins->{{36, 10}, {1, 1}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.336, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["3ColumnTable", "Printout"], CellMargins->{{21, 10}, {1, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["3ColumnTablePlain"], PageWidth->530, CellMargins->{{36, 10}, {7, 7}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.336, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["3ColumnTablePlain", "Printout"], CellMargins->{{21, 10}, {5, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["4ColumnTable"], PageWidth->530, CellMargins->{{36, 10}, {1, 1}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.251, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["4ColumnTable", "Printout"], CellMargins->{{21, 10}, {1, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["4ColumnTablePlain"], PageWidth->530, CellMargins->{{36, 10}, {7, 7}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.251, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["4ColumnTablePlain", "Printout"], CellMargins->{{21, 10}, {5, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["5ColumnTable"], PageWidth->530, CellMargins->{{36, 10}, {1, 1}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.201, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["5ColumnTable", "Printout"], CellMargins->{{21, 10}, {1, 1}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["5ColumnTablePlain"], PageWidth->530, CellMargins->{{36, 10}, {7, 7}}, CellHorizontalScrolling->True, CounterIncrements->"Table", StyleMenuListing->None, GridBoxOptions->{ColumnWidths->0.201, RowAlignments->Center, ColumnAlignments->{Left, Center}, GridFrame->{{0, 0}, {0.5, 2}}, RowLines->{True, False}, ColumnLines->False, GridDefaultElement:>Cell[ "Your Data", "TableText"]}], Cell[StyleData["5ColumnTablePlain", "Printout"], CellMargins->{{21, 10}, {5, 5}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["TableNote"], PageWidth->530, CellMargins->{{38, 10}, {7, 1}}, LineSpacing->{1, 1}, ParagraphSpacing->{0.3, 0}, StyleMenuListing->None, FontFamily->"Times", FontSize->10], Cell[StyleData["TableNote", "Printout"], CellMargins->{{23, 10}, {5, 1}}, FontSize->9] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Figure"], CellMargins->{{36, Inherited}, {0, 7}}, CellHorizontalScrolling->True], Cell[StyleData["Figure", "Printout"], CellMargins->{{27, Inherited}, {0, 5}}, Magnification->0.8] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Picture"], CellMargins->{{36, Inherited}, {0, 7}}, CellHorizontalScrolling->True], Cell[StyleData["Picture", "Presentation"], CellMargins->{{72, 120}, {0, 5}}, Magnification->1.5], Cell[StyleData["Picture", "Printout"], CellMargins->{{27, Inherited}, {0, 5}}, Magnification->0.8] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Caption"], CellMargins->{{36, 10}, {10, 3}}, PageBreakAbove->False, FontFamily->"Helvetica", FontSize->9], Cell[StyleData["Caption", "Printout"], CellMargins->{{21, 10}, {4, 0}}, TextJustification->1, FontSize->7] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["GraphicHeader"], ShowCellBracket->False, CellMargins->{{0, 0}, {0, 0}}, CellFrameMargins->{{55, 20}, {0, 0}}, CellFrameLabelMargins->False, StyleMenuListing->None, FontColor->GrayLevel[1], Background->GrayLevel[0]], Cell[StyleData["GraphicHeader", "Printout"], CellFrameMargins->{{5, 20}, {0, 0}}] }, Open ]], Cell[CellGroupData[{ Cell["Inline Styles for Tables", "Subsubsection"], Cell[CellGroupData[{ Cell[StyleData["TableHeadText"], CounterIncrements->"TableHead", StyleMenuListing->None, FontFamily->"Times", FontWeight->"Plain"], Cell[StyleData["TableHeadText", "Printout"], FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["ColumnHead"], CounterIncrements->"Table", StyleMenuListing->None, FontFamily->"Times", FontSlant->"Italic"], Cell[StyleData["ColumnHead", "Printout"], FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["TableText"], TextAlignment->Left, LineSpacing->{1, 1}, StyleMenuListing->None, FontFamily->"Times", FontSize->12], Cell[StyleData["TableText", "Printout"], FontSize->10] }, Closed]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Miscellaneous Endmatter", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["AcknowledgementsHead"], CellMargins->{{12, 12}, {10, 24}}, CellGroupingRules->{"SectionGrouping", 10}, PageBreakBelow->False, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->12, FontWeight->"Bold", FontColor->GrayLevel[0.300008]], Cell[StyleData["AcknowledgementsHead", "Printout"], CellMargins->{{12, 12}, {10, 18}}, FontSize->10, FontColor->GrayLevel[0]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["AppendixHead"], CellMargins->{{12, 12}, {10, 24}}, CellGroupingRules->{"SectionGrouping", 10}, PageBreakBelow->False, CounterIncrements->"Appendix", StyleMenuListing->None, FontFamily->"Helvetica", FontSize->14, FontWeight->"Bold", FontColor->GrayLevel[0.300008]], Cell[StyleData["AppendixHead", "Printout"], CellMargins->{{12, 12}, {10, 18}}, FontSize->10, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["AppendixEquation"], CellMargins->{{36, 6}, {7, 7}}, CellFrameLabels->{{None, Cell[ TextData[ {"(A", CounterBox[ "Appendix"], ".", CounterBox[ "AppendixEquation"], ")"}]]}, {None, None}}, DefaultFormatType->DefaultInputFormatType, InputAutoReplacements->{}, CounterIncrements->"AppendixEquation", FormatTypeAutoConvert->False], Cell[StyleData["AppendixEquation", "Printout"], FontSize->10] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Reference Elements", "Subsection"], Cell[StyleData["ReferencesHead"], CellFrame->{{0, 0}, {0.25, 0}}, CellMargins->{{12, 8}, {8, 24}}, CellGroupingRules->{"SectionGrouping", 10}, CounterAssignments->{{"Endnote", 0}}, StyleMenuListing->None, FontFamily->"Arial", FontSize->14, FontWeight->"Bold"], Cell[StyleData["EndNote"], CellMargins->{{24, 8}, {0, 0}}, ParagraphSpacing->{0, 0}, ParagraphIndent->-36, TabSpacings->5.5, CounterIncrements->"EndNote", StyleMenuListing->None], Cell[CellGroupData[{ Cell[StyleData["RefDingbat"], CellSize->{36, Inherited}, TextAlignment->Right, CounterIncrements->"RefDingbat", StyleMenuListing->None], Cell[StyleData["RefDingbat", "Printout"]] }, Closed]], Cell[StyleData["ReferencesEnd"], StyleMenuListing->None], Cell[CellGroupData[{ Cell[StyleData["Citation"], StyleMenuListing->None, FontColor->RGBColor[0.300008, 0, 0]], Cell[StyleData["Citation", "Markup"], CellSize->{60, 18}, FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]], Cell[StyleData["Citation", "Printout"], StyleMenuListing->None, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell["References Entity Styles", "Subsubsection"], Cell[CellGroupData[{ Cell[StyleData["RefAddressCity"], StyleMenuListing->None], Cell[StyleData["RefAddressCity", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefAddressState"], StyleMenuListing->None], Cell[StyleData["RefAddressState", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefArticleTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefArticleTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefAuthorFN"], StyleMenuListing->None], Cell[StyleData["RefAuthorFN", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefAuthorLN"], StyleMenuListing->None], Cell[StyleData["RefAuthorLN", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefAuthorMN"], StyleMenuListing->None], Cell[StyleData["RefAuthorMN", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefBookTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefBookTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefChapterTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefChapterTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefCollectionTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefCollectionTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefConferenceName"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefConferenceName", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefDay"], StyleMenuListing->None], Cell[StyleData["RefDay", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefEdition"], StyleMenuListing->None], Cell[StyleData["RefEdition", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefEditorFN"], StyleMenuListing->None], Cell[StyleData["RefEditorFN", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefEditorMN"], StyleMenuListing->None], Cell[StyleData["RefEditorMN", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefEditorLN"], StyleMenuListing->None], Cell[StyleData["RefEditorLN", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefElectronicTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefElectronicTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefEprint"], StyleMenuListing->None], Cell[StyleData["RefEprint", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefFPage"], StyleMenuListing->None], Cell[StyleData["RefFPage", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefHowPublished"], StyleMenuListing->None], Cell[StyleData["RefHowPublished", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefIssue"], StyleMenuListing->None], Cell[StyleData["RefIssue", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefInstitution"], StyleMenuListing->None], Cell[StyleData["RefInstitution", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefJournal"], StyleMenuListing->None], Cell[StyleData["RefJournal", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefLPage"], StyleMenuListing->None], Cell[StyleData["RefLPage", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefMisc"], StyleMenuListing->None], Cell[StyleData["RefMisc", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefMiscTitle"], StyleMenuListing->None], Cell[StyleData["RefMiscTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefMonth"], StyleMenuListing->None], Cell[StyleData["RefMonth", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefNote"], StyleMenuListing->None], Cell[StyleData["RefNote", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefOrganization"], StyleMenuListing->None], Cell[StyleData["RefOrganization", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefProceedingsTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefProceedingsTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefPublisher"], StyleMenuListing->None], Cell[StyleData["RefPublisher", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefReportTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefReportTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefSchool"], StyleMenuListing->None], Cell[StyleData["RefSchool", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefSchoolDept"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefSchoolDept", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefSeries"], StyleMenuListing->None], Cell[StyleData["RefSeries", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefThesisTitle"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["RefThesisTitle", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefURL"], StyleMenuListing->None], Cell[StyleData["RefURL", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefVolume"], StyleMenuListing->None, FontWeight->"Bold"], Cell[StyleData["RefVolume", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefYear"], StyleMenuListing->None], Cell[StyleData["RefYear", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefKind"], StyleMenuListing->None, FontSize->0.5, FontTracking->"Narrow"], Cell[StyleData["RefKind", "Markup"], FontSize->12, FontWeight->"Bold", FontTracking->"Plain", Background->RGBColor[0.408103, 0.769985, 0.757885]], Cell[StyleData["RefKind", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefType"], CellSize->{0, 12}, StyleMenuListing->None], Cell[StyleData["RefType", "Markup"], CellSize->{60, 18}, FontWeight->"Bold", FontColor->RGBColor[0.8, 0.2, 0.2]], Cell[StyleData["RefType", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefMarker"], CellSize->{0, 12}, StyleMenuListing->None], Cell[StyleData["RefMarker", "Markup"], CellSize->{6, 12}], Cell[StyleData["RefMarker", "Printout"], CellSize->{0, 12}] }, Closed]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Titles", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["Title"], CellMargins->{{12, 12}, {4, 36}}, CellGroupingRules->{"SectionGrouping", 10}, PageBreakBelow->False, LineSpacing->{1, 2}, FontSize->30, FontWeight->"Bold"], Cell[StyleData["Title", "Presentation"], CellFrame->False, ShowCellBracket->False, CellMargins->{{0, 0}, {0, 0}}, CellGroupingRules->{"SectionGrouping", 10}, PageBreakBelow->False, CellFrameMargins->{{73, 120}, {10, 25}}, CellFrameColor->RGBColor[0.356863, 0.529412, 0.94902], CellFrameLabelMargins->6, LineSpacing->{1, 2}, FontFamily->"Arial", FontSize->30, FontWeight->"Bold", FontColor->GrayLevel[1], Background->RGBColor[0.12903, 0.548394, 0.774197]], Cell[StyleData["Title", "Printout"], CellMargins->{{2, 10}, {2, 36}}, FontSize->24] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Subtitle"], CellMargins->{{12, 12}, {4, 6}}, PageBreakBelow->False, LineSpacing->{1, 0}, FontFamily->"Times", FontSize->20, FontSlant->"Italic", FontColor->RGBColor[0, 0, 0.500008]], Cell[StyleData["Subtitle", "Presentation"], CellFrame->False, ShowCellBracket->False, CellMargins->{{0, 0}, {0, 0}}, PageBreakBelow->False, CellFrameMargins->{{73, 0}, {15, 0}}, CellFrameColor->RGBColor[0.356863, 0.529412, 0.94902], LineSpacing->{1, 0}, FontSize->24, FontColor->GrayLevel[1], Background->RGBColor[0.12903, 0.548394, 0.774197]], Cell[StyleData["Subtitle", "Printout"], CellMargins->{{2, 10}, {2, 8}}, FontSize->16, FontWeight->"Plain", FontColor->GrayLevel[0]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Subsubtitle"], CellMargins->{{12, 12}, {2, 6}}, PageBreakBelow->False, FontFamily->"Times", FontSize->15, FontColor->RGBColor[0, 0, 0.500008]], Cell[StyleData["Subsubtitle", "Printout"], CellMargins->{{2, 10}, {2, 8}}, FontSize->13, FontColor->GrayLevel[0]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Hyperlinks", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["GoBackLink"], ConversionRules:>{"TeX" -> {"", CompoundExpression[ #, ""]&, ""}}, StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 0.8], ButtonBoxOptions->{ButtonFunction:>FrontEndExecute[ { FrontEndToken[ FrontEnd`InputNotebook[ ], "HyperlinkGoBack"]}], Active->True, ButtonFrame->"None", ButtonNote->"Jump back"}], Cell[StyleData["GoBackLink", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["GoBackLink", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Times", FontColor->RGBColor[0, 0, 0.8], ButtonBoxOptions->{ButtonFunction:>Null, Active->True, ButtonFrame->"None"}], Cell[StyleData["RefLink", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["RefLink", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["XRefLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Times", FontColor->RGBColor[0, 0, 0.8], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookLocate[ #2]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["XRefLink", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["XRefLink", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefReadEdit"], StyleMenuListing->None, FontColor->RGBColor[0, 0, 0.500008], ButtonBoxOptions->{ButtonFunction:>(CompoundExpression[ Needs[ "arXiv`arXivUtilities`"], Symbol[ "arXiv`arXivUtilities`EditCiteSuper"][ #]]&), ButtonEvaluator->Automatic, Active->True, ButtonFrame->"None"}], Cell[StyleData["RefReadEdit", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["RefReadEdit", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefReadEditInline"], StyleMenuListing->None, FontColor->RGBColor[0, 0, 0.500008], ButtonBoxOptions->{ButtonFunction:>(CompoundExpression[ Needs[ "arXiv`arXivUtilities`"], Symbol[ "arXiv`arXivUtilities`EditCiteInline"][ #]]&), ButtonEvaluator->Automatic, Active->True, ButtonFrame->"None"}], Cell[StyleData["RefReadEditInline", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["RefReadEditInline", "Printout"], FontColor->GrayLevel[0]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Conformance", "Subsection"], Cell[CellGroupData[{ Cell[StyleData["BibliographyHead"], CellMargins->{{12, 12}, {10, 24}}, CellGroupingRules->{"SectionGrouping", 10}, PageBreakBelow->False, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->12, FontWeight->"Bold"], Cell[StyleData["BibliographyHead", "Printout"], CellMargins->{{12, 12}, {10, 18}}, FontSize->10, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["ReferenceText"], CellMargins->{{12, 10}, {0, 0}}, LineSpacing->{1, 2}, ParagraphIndent->-38, CounterIncrements->"ReferenceText", StyleMenuListing->None], Cell[StyleData["ReferenceText", "Printout"], CellMargins->{{2, 2}, {0, 0}}, ParagraphIndent->-32] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Item"], CellMargins->{{18, 4}, {4, 4}}, ParagraphIndent->-24, CounterIncrements->"Item1", StyleMenuListing->None], Cell[StyleData["Item", "Printout"], CellMargins->{{12, 0}, {0, 8}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["ItemParagraph"], CellMargins->{{40, 4}, {2, 2}}, CounterIncrements->"Item1Continued", StyleMenuListing->None], Cell[StyleData["ItemParagraph", "Printout"], CellMargins->{{12, 0}, {0, 8}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["BibLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookLocate[ #2]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["BibLink", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["BibLink", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["AuthorNoteLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Helvetica", FontColor->RGBColor[0, 0, 0.700008], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookLocate[ #2]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["AuthorNoteLink", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["AuthorNoteLink", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["FootnoteLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Times", FontColor->RGBColor[0, 0, 0.8], ButtonBoxOptions->{ButtonFunction:>Null, Active->True, ButtonFrame->"None"}], Cell[StyleData["FootnoteLink", "Markup"], FontColor->RGBColor[0, 0, 1]], Cell[StyleData["FootnoteLink", "Printout"], FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Tex"], StyleMenuListing->None], Cell[StyleData["Tex", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Thanks"], CellMargins->{{54, 54}, {0, 3}}, ParagraphSpacing->{0, 8}, StyleMenuListing->None, FontFamily->"Times", FontSize->10, FontSlant->"Italic"], Cell[StyleData["Thanks", "Printout"], CellMargins->{{2, 10}, {3, 3}}, LineSpacing->{1, 1}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Homepage"], CellMargins->{{54, 54}, {0, 3}}, ParagraphSpacing->{0, 8}, StyleMenuListing->None, FontFamily->"Times", FontSize->10, FontSlant->"Italic"], Cell[StyleData["Homepage", "Printout"], CellMargins->{{2, 10}, {3, 3}}, LineSpacing->{1, 1}, FontSize->10] }, Closed]] }, Closed]] }, Open ]] }] ] (******************************************************************* Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. *******************************************************************) (*CellTagsOutline CellTagsIndex->{ "AS+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "AV+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "CT+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "ED+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "EW+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "FA+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "FF+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "FV+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "HM+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "JC+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "JS+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "KB+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "KH+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "LC+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "LS+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "PK+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "PS+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "SG+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "TH+"->{ Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}]}, "Dbg_2001_5_9_16_37_20_3"->{ Cell[31187, 873, 934, 29, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_3"], Cell[32124, 904, 1088, 35, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_3"]}, "Dbg_2001_5_9_16_37_20_4"->{ Cell[33215, 941, 1091, 35, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_4"]}, "Dbg_2001_5_9_16_37_20_5"->{ Cell[34309, 978, 933, 29, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_5"], Cell[35245, 1009, 930, 29, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_5"]}, "Dbg_2001_5_9_16_37_20_6"->{ Cell[36178, 1040, 936, 29, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_6"], Cell[37183, 1075, 930, 29, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_6"]}, "Dbg_2001_5_9_16_37_20_7"->{ Cell[38116, 1106, 931, 29, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_7"]}, "Info"->{ Cell[39235, 1143, 273, 9, 44, "Print", CellTags->"Info"], Cell[39511, 1154, 272, 9, 44, "Print", CellTags->"Info"], Cell[39786, 1165, 435, 15, 44, "Print", CellTags->"Info"], Cell[40224, 1182, 433, 15, 44, "Print", CellTags->"Info"], Cell[40660, 1199, 276, 9, 44, "Print", CellTags->"Info"], Cell[40939, 1210, 265, 9, 44, "Print", CellTags->"Info"], Cell[45649, 1367, 265, 9, 44, "Print", CellTags->"Info"], Cell[57975, 1775, 229, 6, 44, "Print", CellTags->"Info"], Cell[68214, 2111, 228, 7, 44, "Print", CellTags->"Info"], Cell[68445, 2120, 268, 9, 44, "Print", CellTags->"Info"], Cell[74927, 2322, 446, 15, 44, "Print", CellTags->"Info"], Cell[75376, 2339, 465, 15, 44, "Print", CellTags->"Info"], Cell[75844, 2356, 478, 15, 44, "Print", CellTags->"Info"], Cell[76325, 2373, 491, 15, 44, "Print", CellTags->"Info"], Cell[83744, 2616, 203, 6, 44, "Print", CellTags->"Info"], Cell[83950, 2624, 265, 9, 44, "Print", CellTags->"Info"], Cell[87107, 2731, 204, 6, 44, "Print", CellTags->"Info"]}, "Dbg_2001_8_12_19_55_1_3"->{ Cell[43785, 1305, 932, 29, 48, "Print", CellTags->"Dbg_2001_8_12_19_55_1_3"], Cell[44720, 1336, 926, 29, 48, "Print", CellTags->"Dbg_2001_8_12_19_55_1_3"]}, "Dbg_2001_5_9_17_44_35_2703"->{ Cell[48019, 1447, 1103, 35, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2703"]}, "Dbg_2001_5_9_17_44_35_2704"->{ Cell[49125, 1484, 949, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2704"], Cell[52132, 1583, 954, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2704"], Cell[53089, 1614, 936, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2704"]}, "Dbg_2001_5_9_17_44_35_2705"->{ Cell[50077, 1515, 1113, 35, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2705"], Cell[51193, 1552, 936, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2705"]}, "Dbg_2001_5_9_17_44_35_2706"->{ Cell[54028, 1645, 940, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2706"], Cell[57026, 1744, 946, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2706"]}, "Dbg_2001_5_9_17_44_35_2707"->{ Cell[54971, 1676, 1113, 35, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2707"], Cell[56087, 1713, 936, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2707"]}, "Dbg_2001_5_9_17_44_35_3546"->{ Cell[58207, 1783, 943, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3546"], Cell[61218, 1882, 950, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3546"]}, "Dbg_2001_5_9_17_44_35_3547"->{ Cell[59153, 1814, 1118, 35, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3547"], Cell[60274, 1851, 941, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3547"]}, "Dbg_2001_5_9_17_44_35_3548"->{ Cell[62171, 1913, 1135, 35, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3548"], Cell[67270, 2080, 941, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3548"]}, "Dbg_2001_5_9_17_44_35_3549"->{ Cell[63309, 1950, 1118, 35, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3549"], Cell[64430, 1987, 941, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3549"]}, "Dbg_2001_5_9_17_44_35_3550"->{ Cell[65374, 2018, 949, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3550"], Cell[66326, 2049, 941, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3550"]}, "Dbg_2001_8_12_20_18_19_20"->{ Cell[78088, 2430, 951, 29, 48, "Print", CellTags->"Dbg_2001_8_12_20_18_19_20"], Cell[80917, 2523, 948, 29, 48, "Print", CellTags->"Dbg_2001_8_12_20_18_19_20"]}, "Dbg_2001_8_12_20_18_19_21"->{ Cell[79042, 2461, 937, 29, 48, "Print", CellTags->"Dbg_2001_8_12_20_18_19_21"], Cell[79982, 2492, 932, 29, 48, "Print", CellTags->"Dbg_2001_8_12_20_18_19_21"]}, "Dbg_2001_8_12_20_18_19_22"->{ Cell[81868, 2554, 935, 29, 50, "Print", CellTags->"Dbg_2001_8_12_20_18_19_22"], Cell[82806, 2585, 935, 29, 50, "Print", CellTags->"Dbg_2001_8_12_20_18_19_22"]}, "Dbg_2001_8_15_17_7_12_5"->{ Cell[85113, 2665, 934, 29, 48, "Print", CellTags->"Dbg_2001_8_15_17_7_12_5"]}, "Dbg_2001_8_15_17_7_12_12"->{ Cell[86050, 2696, 1054, 33, 48, "Print", CellTags->"Dbg_2001_8_15_17_7_12_12"]} } *) (*CellTagsIndex CellTagsIndex->{ {"AS+", 137674, 4674}, {"AV+", 137898, 4679}, {"CT+", 138122, 4684}, {"ED+", 138346, 4689}, {"EW+", 138570, 4694}, {"FA+", 138794, 4699}, {"FF+", 139018, 4704}, {"FV+", 139242, 4709}, {"HM+", 139466, 4714}, {"JC+", 139690, 4719}, {"JS+", 139914, 4724}, {"KB+", 140138, 4729}, {"KH+", 140362, 4734}, {"LC+", 140586, 4739}, {"LS+", 140810, 4744}, {"PK+", 141034, 4749}, {"PS+", 141258, 4754}, {"SG+", 141482, 4759}, {"TH+", 141706, 4764}, {"Dbg_2001_5_9_16_37_20_3", 141950, 4769}, {"Dbg_2001_5_9_16_37_20_4", 142157, 4774}, {"Dbg_2001_5_9_16_37_20_5", 142277, 4777}, {"Dbg_2001_5_9_16_37_20_6", 142484, 4782}, {"Dbg_2001_5_9_16_37_20_7", 142692, 4787}, {"Info", 142793, 4790}, {"Dbg_2001_8_12_19_55_1_3", 143987, 4825}, {"Dbg_2001_5_9_17_44_35_2703", 144198, 4830}, {"Dbg_2001_5_9_17_44_35_2704", 144325, 4833}, {"Dbg_2001_5_9_17_44_35_2705", 144633, 4840}, {"Dbg_2001_5_9_17_44_35_2706", 144851, 4845}, {"Dbg_2001_5_9_17_44_35_2707", 145068, 4850}, {"Dbg_2001_5_9_17_44_35_3546", 145286, 4855}, {"Dbg_2001_5_9_17_44_35_3547", 145503, 4860}, {"Dbg_2001_5_9_17_44_35_3548", 145721, 4865}, {"Dbg_2001_5_9_17_44_35_3549", 145939, 4870}, {"Dbg_2001_5_9_17_44_35_3550", 146157, 4875}, {"Dbg_2001_8_12_20_18_19_20", 146373, 4880}, {"Dbg_2001_8_12_20_18_19_21", 146587, 4885}, {"Dbg_2001_8_12_20_18_19_22", 146801, 4890}, {"Dbg_2001_8_15_17_7_12_5", 147013, 4895}, {"Dbg_2001_8_15_17_7_12_12", 147134, 4898} } *) (*NotebookFileOutline Notebook[{ Cell[1705, 50, 10963, 139, 31, 10850, 135, "GraphicsData", "Bitmap", \ "GraphicHeader", Evaluatable->False], Cell[CellGroupData[{ Cell[12693, 193, 61, 3, 109, "Title"], Cell[12757, 198, 20, 0, 42, "Subtitle"], Cell[12780, 200, 120, 1, 74, "Author"] }, Open ]], Cell[CellGroupData[{ Cell[12937, 206, 31, 0, 56, "Section"], Cell[12971, 208, 1247, 36, 155, "Text", CellTags->{ "AS+", "AV+", "CT+", "ED+", "EW+", "FA+", "FF+", "FV+", "HM+", "JC+", "JS+", "KB+", "KH+", "LC+", "LS+", "PK+", "PS+", "SG+", "TH+"}], Cell[14221, 246, 82, 2, 27, "Text", Evaluatable->True], Cell[14306, 250, 2754, 64, 540, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[17097, 319, 35, 0, 56, "Section"], Cell[17135, 321, 645, 19, 47, "Text"], Cell[17783, 342, 107, 7, 178, "Program"], Cell[17893, 351, 223, 3, 47, "Text"], Cell[18119, 356, 68, 2, 27, "Text", Evaluatable->True], Cell[18190, 360, 63, 2, 28, "Print"], Cell[18256, 364, 182, 4, 51, "Message"], Cell[18441, 370, 63, 2, 28, "Print"], Cell[18507, 374, 63, 2, 28, "Print"], Cell[18573, 378, 63, 2, 28, "Print"], Cell[18639, 382, 63, 2, 28, "Print"], Cell[18705, 386, 63, 2, 28, "Print"], Cell[18771, 390, 63, 2, 28, "Print"], Cell[18837, 394, 63, 2, 28, "Print"], Cell[18903, 398, 63, 2, 28, "Print"], Cell[18969, 402, 66, 2, 29, "Output"], Cell[19038, 406, 333, 7, 68, "Text"], Cell[19374, 415, 80, 2, 27, "Text", Evaluatable->True], Cell[19457, 419, 74, 2, 28, "Print"], Cell[19534, 423, 274, 10, 28, "Print"], Cell[19811, 435, 74, 2, 28, "Print"], Cell[19888, 439, 255, 9, 28, "Print"], Cell[20146, 450, 74, 2, 28, "Print"], Cell[20223, 454, 249, 9, 28, "Print"], Cell[20475, 465, 74, 2, 28, "Print"], Cell[20552, 469, 469, 15, 28, "Print"], Cell[21024, 486, 74, 2, 28, "Print"], Cell[21101, 490, 259, 9, 28, "Print"], Cell[21363, 501, 74, 2, 28, "Print"], Cell[21440, 505, 424, 14, 28, "Print"], Cell[21867, 521, 74, 2, 28, "Print"], Cell[21944, 525, 110, 2, 26, "Text"], Cell[22057, 529, 268, 9, 28, "Print"], Cell[22328, 540, 74, 2, 28, "Print"], Cell[22405, 544, 316, 10, 28, "Print"], Cell[22724, 556, 74, 2, 28, "Print"], Cell[22801, 560, 274, 9, 28, "Print"], Cell[23078, 571, 74, 2, 28, "Print"], Cell[23155, 575, 274, 9, 28, "Print"], Cell[23432, 586, 74, 2, 28, "Print"], Cell[23509, 590, 737, 21, 74, "Print"], Cell[24249, 613, 74, 2, 28, "Print"], Cell[24326, 617, 270, 9, 28, "Print"], Cell[24599, 628, 74, 2, 28, "Print"], Cell[24676, 632, 589, 15, 74, "Print"], Cell[25268, 649, 182, 4, 51, "Message"], Cell[25453, 655, 74, 2, 28, "Print"], Cell[25530, 659, 258, 9, 28, "Print"], Cell[25791, 670, 74, 2, 28, "Print"], Cell[25868, 674, 257, 9, 28, "Print"], Cell[26128, 685, 74, 2, 28, "Print"], Cell[26205, 689, 256, 9, 28, "Print"], Cell[26464, 700, 74, 2, 28, "Print"], Cell[26541, 704, 280, 10, 28, "Print"], Cell[26824, 716, 74, 2, 28, "Print"], Cell[26901, 720, 263, 9, 28, "Print"], Cell[27167, 731, 74, 2, 28, "Print"], Cell[27244, 735, 251, 9, 28, "Print"], Cell[27498, 746, 74, 2, 28, "Print"], Cell[27575, 750, 251, 9, 28, "Print"], Cell[27829, 761, 74, 2, 28, "Print"], Cell[27906, 765, 256, 9, 28, "Print"], Cell[28165, 776, 74, 2, 28, "Print"], Cell[28242, 780, 357, 12, 28, "Print"], Cell[28602, 794, 74, 2, 28, "Print"], Cell[28679, 798, 285, 9, 28, "Print"], Cell[28967, 809, 74, 2, 28, "Print"], Cell[29044, 813, 252, 9, 28, "Print"], Cell[29299, 824, 66, 2, 29, "Output"], Cell[29368, 828, 1736, 39, 176, "Text"], Cell[31107, 869, 77, 2, 27, "Text", Evaluatable->True], Cell[31187, 873, 934, 29, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_3"], Cell[32124, 904, 1088, 35, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_3"], Cell[33215, 941, 1091, 35, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_4"], Cell[34309, 978, 933, 29, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_5"], Cell[35245, 1009, 930, 29, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_5"], Cell[36178, 1040, 936, 29, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_6"], Cell[37117, 1071, 63, 2, 28, "Print"], Cell[37183, 1075, 930, 29, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_6"], Cell[38116, 1106, 931, 29, 48, "Print", CellTags->"Dbg_2001_5_9_16_37_20_7"], Cell[39050, 1137, 182, 4, 51, "Message"], Cell[39235, 1143, 273, 9, 44, "Print", CellTags->"Info"], Cell[39511, 1154, 272, 9, 44, "Print", CellTags->"Info"], Cell[39786, 1165, 435, 15, 44, "Print", CellTags->"Info"], Cell[40224, 1182, 433, 15, 44, "Print", CellTags->"Info"], Cell[40660, 1199, 276, 9, 44, "Print", CellTags->"Info"], Cell[40939, 1210, 265, 9, 44, "Print", CellTags->"Info"], Cell[41207, 1221, 66, 2, 29, "Output"], Cell[41276, 1225, 387, 11, 70, "Text"], Cell[41666, 1238, 44, 0, 27, "Text"], Cell[41713, 1240, 251, 7, 48, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[42001, 1252, 45, 0, 56, "Section"], Cell[42049, 1254, 1651, 45, 283, "Text"], Cell[43703, 1301, 79, 2, 27, "Text", Evaluatable->True], Cell[43785, 1305, 932, 29, 48, "Print", CellTags->"Dbg_2001_8_12_19_55_1_3"], Cell[44720, 1336, 926, 29, 48, "Print", CellTags->"Dbg_2001_8_12_19_55_1_3"], Cell[45649, 1367, 265, 9, 44, "Print", CellTags->"Info"], Cell[45917, 1378, 67, 2, 29, "Output"], Cell[45987, 1382, 1181, 28, 221, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[47205, 1415, 33, 0, 56, "Section"], Cell[47241, 1417, 661, 18, 91, "Text"], Cell[47905, 1437, 111, 8, 115, "Text", Evaluatable->True], Cell[48019, 1447, 1103, 35, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2703"], Cell[49125, 1484, 949, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2704"], Cell[50077, 1515, 1113, 35, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2705"], Cell[51193, 1552, 936, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2705"], Cell[52132, 1583, 954, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2704"], Cell[53089, 1614, 936, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2704"], Cell[54028, 1645, 940, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2706"], Cell[54971, 1676, 1113, 35, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2707"], Cell[56087, 1713, 936, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2707"], Cell[57026, 1744, 946, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_2706"], Cell[57975, 1775, 229, 6, 44, "Print", CellTags->"Info"], Cell[58207, 1783, 943, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3546"], Cell[59153, 1814, 1118, 35, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3547"], Cell[60274, 1851, 941, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3547"], Cell[61218, 1882, 950, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3546"], Cell[62171, 1913, 1135, 35, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3548"], Cell[63309, 1950, 1118, 35, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3549"], Cell[64430, 1987, 941, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3549"], Cell[65374, 2018, 949, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3550"], Cell[66326, 2049, 941, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3550"], Cell[67270, 2080, 941, 29, 48, "Print", CellTags->"Dbg_2001_5_9_17_44_35_3548"], Cell[68214, 2111, 228, 7, 44, "Print", CellTags->"Info"], Cell[68445, 2120, 268, 9, 44, "Print", CellTags->"Info"], Cell[68716, 2131, 67, 2, 29, "Output"], Cell[68786, 2135, 286, 7, 48, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[69109, 2147, 31, 0, 56, "Section"], Cell[69143, 2149, 303, 8, 48, "Text"], Cell[69449, 2159, 3817, 108, 658, "Text"], Cell[73269, 2269, 170, 6, 27, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[73476, 2280, 31, 0, 56, "Section"], Cell[73510, 2282, 665, 16, 134, "Text"], Cell[74178, 2300, 675, 16, 178, "Input", Evaluatable->True], Cell[74856, 2318, 68, 2, 27, "Text", Evaluatable->True], Cell[74927, 2322, 446, 15, 44, "Print", CellTags->"Info"], Cell[75376, 2339, 465, 15, 44, "Print", CellTags->"Info"], Cell[75844, 2356, 478, 15, 44, "Print", CellTags->"Info"], Cell[76325, 2373, 491, 15, 44, "Print", CellTags->"Info"], Cell[76819, 2390, 108, 2, 29, "Output"], Cell[76930, 2394, 290, 8, 48, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[77257, 2407, 53, 0, 56, "Section"], Cell[77313, 2409, 670, 15, 111, "Text"], Cell[77986, 2426, 99, 2, 27, "Text", Evaluatable->True], Cell[78088, 2430, 951, 29, 48, "Print", CellTags->"Dbg_2001_8_12_20_18_19_20"], Cell[79042, 2461, 937, 29, 48, "Print", CellTags->"Dbg_2001_8_12_20_18_19_21"], Cell[79982, 2492, 932, 29, 48, "Print", CellTags->"Dbg_2001_8_12_20_18_19_21"], Cell[80917, 2523, 948, 29, 48, "Print", CellTags->"Dbg_2001_8_12_20_18_19_20"], Cell[81868, 2554, 935, 29, 50, "Print", CellTags->"Dbg_2001_8_12_20_18_19_22"], Cell[82806, 2585, 935, 29, 50, "Print", CellTags->"Dbg_2001_8_12_20_18_19_22"], Cell[83744, 2616, 203, 6, 44, "Print", CellTags->"Info"], Cell[83950, 2624, 265, 9, 44, "Print", CellTags->"Info"], Cell[84218, 2635, 66, 2, 29, "Output"], Cell[84287, 2639, 224, 5, 47, "Text"], Cell[84514, 2646, 480, 11, 70, "Text"], Cell[CellGroupData[{ Cell[85019, 2661, 91, 2, 40, "Input"], Cell[85113, 2665, 934, 29, 48, "Print", CellTags->"Dbg_2001_8_15_17_7_12_5"], Cell[86050, 2696, 1054, 33, 48, "Print", CellTags->"Dbg_2001_8_15_17_7_12_12"], Cell[87107, 2731, 204, 6, 44, "Print", CellTags->"Info"] }, Open ]], Cell[87326, 2740, 581, 13, 90, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[87944, 2758, 51, 0, 56, "Section"], Cell[87998, 2760, 2911, 60, 498, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[90946, 2825, 26, 0, 56, "Section"], Cell[90975, 2827, 646, 18, 91, "Text"] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)