Added cddlib-094h from http://www.inf.ethz.ch/personal/fukudak/cdd_home/

Change-Id: I64519509269e434b1b9ea87c3fe0805e711c0ac9
diff --git a/third_party/cddlib/examples-ml/cddml-notebook.nb b/third_party/cddlib/examples-ml/cddml-notebook.nb
new file mode 100644
index 0000000..0f5cb7c
--- /dev/null
+++ b/third_party/cddlib/examples-ml/cddml-notebook.nb
@@ -0,0 +1,663 @@
+(************** 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[     14720,        468]*)
+(*NotebookOutlinePosition[     16078,        512]*)
+(*  CellTagsIndexPosition[     15906,        504]*)
+(*WindowFrame->Normal*)
+
+
+
+Notebook[{
+Cell[TextData[{
+  StyleBox["cddmathlink",
+    FontColor->RGBColor[0.0557107, 0.137819, 0.517113]],
+  "\nConvex Hull and Vertex Enumeration by ",
+  StyleBox["MathLink",
+    FontSlant->"Italic",
+    FontColor->RGBColor[0.0146487, 0.461387, 0.0967727]],
+  " to ",
+  StyleBox["cddlib",
+    FontColor->RGBColor[0.517113, 0.0273594, 0.0273594]],
+  "\nby Komei Fukuda\nApril 17, 2001"
+}], "Title",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["Connecting  cddmathlink", "Subsection",
+  InitializationCell->True,
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell[TextData[{
+  "You just put the compiled cddmathlink for your computer in some directory. \
+ In this example, the name of the directory is ",
+  StyleBox["\"~/Math\".",
+    FontFamily->"Courier",
+    FontWeight->"Bold"]
+}], "Text",
+  InitializationCell->True,
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell["Off[General::spell1]; Off[General::spell];", "Input",
+  InitializationCell->True,
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["\<\
+cddml=
+Install[\"~/Math/cddmathlink\"]\
+\>", "Input",
+  InitializationCell->True,
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \(LinkObject["/Users/fukuda/Math/cddmathlink", 9, 8]\)], "Output"]
+}, Open  ]]
+}, Open  ]]
+}, Closed]],
+
+Cell[CellGroupData[{
+
+Cell["Generating All Vertices ", "Subsection",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["?AllVertices", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \("AllVertices[m,d+1,A] generates all extreme points (vertices) and \
+extreme rays of the convex polyhedron in R^(d+1) given as the solution set to \
+an inequality system  A x >= 0 where  A is an m*(d+1) matrix  and  \
+x=(1,x1,...,xd).  The output is {{extlist, linearity}, ecdlist} where extlist \
+is  the extreme point list and ecdlist is the incidence list.  Each vertex \
+(ray) has the first component 1 (0).  If the convex polyhedron is nonempty \
+and has no vertices, extlist is a (nonunique) set of generators of the \
+polyhedron where those generators in the linearity list are considered as \
+linearity space (of points satisfying A (0, x1, x2, ...., xd) = 0)  \
+generators."\)], "Print",
+  CellTags->"Info3249106863-2654627"],
+
+Cell["\<\
+Let's try this function with a 3-dimenstional cube defined by 6 \
+inequalities (facets);  
+x1  >= 0, x2 >=0, x3 >= 0, 1 - x1 >= 0,   1 - x2 >= 0 and  1 - x3 >= 0.  We \
+write these six inequalities  as   A  x  >=  0  and  x=(1, x1, x2, x3).\
+\>", \
+"Text",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["\<\
+MatrixForm[a={{0,1,0,0},{0,0,1,0},{0,0,0,1},
+\t{1,-1,0,0},{1,0,-1,0},{1,0,0,-1}}]\
+\>", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    TagBox[
+      RowBox[{"(", "\[NoBreak]", GridBox[{
+            {"0", "1", "0", "0"},
+            {"0", "0", "1", "0"},
+            {"0", "0", "0", "1"},
+            {"1", \(-1\), "0", "0"},
+            {"1", "0", \(-1\), "0"},
+            {"1", "0", "0", \(-1\)}
+            }], "\[NoBreak]", ")"}],
+      Function[ BoxForm`e$, 
+        MatrixForm[ BoxForm`e$]]]], "Output"],
+
+Cell[CellGroupData[{
+
+Cell["{m,d1}=Dimensions[a]", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \({6, 4}\)], "Output"]
+}, Open  ]],
+
+Cell[CellGroupData[{
+
+Cell["\<\
+{{vertices, linearity}, \
+incidences}=AllVertices[m,d1,Flatten[a]]\
+\>", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \({{{{1.`, 1.`, 1.`, 0.`}, {1.`, 0.`, 1.`, 0.`}, {1.`, 0.`, 0.`, 
+            0.`}, {1.`, 1.`, 0.`, 0.`}, {1.`, 0.`, 0.`, 1.`}, {1.`, 1.`, 0.`, 
+            1.`}, {1.`, 0.`, 1.`, 1.`}, {1.`, 1.`, 1.`, 1.`}}, {}}, {{3, 4, 
+          5}, {1, 3, 5}, {1, 2, 3}, {2, 3, 4}, {1, 2, 6}, {2, 4, 6}, {1, 5, 
+          6}, {4, 5, 6}}}\)], "Output"]
+}, Open  ]]
+}, Open  ]]
+}, Open  ]]
+}, Closed]],
+
+Cell[CellGroupData[{
+
+Cell["Generating the Graph Structure", "Subsection",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["?AllVerticesWithAdjacency", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \("AllVerticesWithAdjacency[m,d+1,A] generates all extreme points \
+(vertices) and extreme rays of the convex polyhedron in R^(d+1) given as the \
+solution set to an inequality system  A x >= 0 where   A is an m*(d+1) matrix \
+ and x=(1,x1,...,xd). The output is {{extlist, linearity}, ecdlist, eadlist, \
+icdlist, iadlist} where extlist, ecdlist, eadlist are the extreme point list, \
+the incidence list, the adjacency list (of extreme points and rays), and \
+icdlist, iadlist are the incidence list, the adjacency list (of \
+inequalities).  Each vertex (ray) has the first component 1 (0). If the \
+convex polyhedron is nonempty and has no vertices, extlist is a (nonunique) \
+set of generators of the polyhedron where those generators in the linearity \
+list are considered as linearity space (of points satisfying A (0, x1, x2, \
+...., xd) = 0) generators."\)], "Print",
+  CellTags->"Info3249106869-2272285"],
+
+Cell[CellGroupData[{
+
+Cell["\<\
+{{vertices,linearity},ecd,ead,icd,iad}=
+\tAllVerticesWithAdjacency[m,d1,Flatten[a]]\
+\>", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \({{{{1.`, 1.`, 1.`, 0.`}, {1.`, 0.`, 1.`, 0.`}, {1.`, 0.`, 0.`, 
+            0.`}, {1.`, 1.`, 0.`, 0.`}, {1.`, 0.`, 0.`, 1.`}, {1.`, 1.`, 0.`, 
+            1.`}, {1.`, 0.`, 1.`, 1.`}, {1.`, 1.`, 1.`, 1.`}}, {}}, {{3, 4, 
+          5}, {1, 3, 5}, {1, 2, 3}, {2, 3, 4}, {1, 2, 6}, {2, 4, 6}, {1, 5, 
+          6}, {4, 5, 6}}, {{2, 4, 8}, {1, 3, 7}, {2, 4, 5}, {1, 3, 6}, {3, 6, 
+          7}, {4, 5, 8}, {2, 5, 8}, {1, 6, 7}}, {{2, 3, 5, 7}, {3, 4, 5, 
+          6}, {1, 2, 3, 4}, {1, 4, 6, 8}, {1, 2, 7, 8}, {5, 6, 7, 
+          8}, {}}, {{2, 3, 5, 6}, {1, 3, 4, 6}, {1, 2, 4, 5}, {2, 3, 5, 
+          6}, {1, 3, 4, 6}, {1, 2, 4, 5}, {}}}\)], "Output"]
+}, Open  ]]
+}, Open  ]],
+
+Cell[TextData[{
+  "The graph structure is output as the adjacency  list  ",
+  StyleBox["ead. ",
+    FontFamily->"Courier",
+    FontWeight->"Bold"],
+  "For example, the first list {2, 4 ,8} represents the neighbour vertices of \
+the first vertex 1.  The adjacency of input is given by\nthe list  ",
+  StyleBox["iad.",
+    FontFamily->"Courier",
+    FontWeight->"Bold"]
+}], "Text",
+  ImageRegion->{{0, 1}, {0, 1}}]
+}, Closed]],
+
+Cell[CellGroupData[{
+
+Cell["Convex Hull (Facet Generation)", "Subsection",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["?AllFacets", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \("AllFacets[n,d+1,G] generates all facet inequalities of the convex \
+polyhedron in R^(d+1) generated by points and rays given in the rows of an \
+n*(d+1) matrix G.  Each point (ray) must have 1 (0) in the first coordinate.  \
+The output is {{faclist, equalities}, icdlist} where faclist is  the facet  \
+list and icdlist is the incidence list.  If the convex polyhedron is not \
+full-dimensional, extlist is a (nonunique) set of inequalities of the \
+polyhedron where those inequalities in the equalities list are considered as \
+equalities."\)], "Print",
+  CellTags->"Info3249106877-5554290"],
+
+Cell["\<\
+We have computed all the vertices of a 3-cube.  Let's try the \
+reverse operation.  First check the size of the list of vertics.   It should \
+reconstruct the facets we have started with.\
+\>", "Text",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["{n, d1}=Dimensions[vertices]", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \({8, 4}\)], "Output"]
+}, Open  ]],
+
+Cell[CellGroupData[{
+
+Cell["\<\
+
+{{facets,equalities}, fincidences}= AllFacets[n,d1,Flatten[vertices]]\
+\>", \
+"Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \({{{{0.`, 0.`, 0.`, 1.`}, {0.`, 1.`, 0.`, 0.`}, {0.`, 0.`, 1.`, 
+            0.`}, {1.`, 0.`, 0.`, \(-1.`\)}, {1.`, 0.`, \(-1.`\), 
+            0.`}, {1.`, \(-1.`\), 0.`, 0.`}}, {}}, {{1, 2, 3, 4}, {2, 3, 5, 
+          7}, {3, 4, 5, 6}, {5, 6, 7, 8}, {1, 2, 7, 8}, {1, 4, 6, 
+          8}}}\)], "Output"]
+}, Open  ]],
+
+Cell[TextData[{
+  "We can compute how the facets are connected by using ",
+  StyleBox["AllFacetsWithAdjacency",
+    FontWeight->"Bold"],
+  " function."
+}], "Text",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["\<\
+
+{{facets,equalities}, icd,iad, ecd,ead}= 
+\tAllFacetsWithAdjacency[n,d1,Flatten[vertices]]\
+\>", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \({{{{0.`, 0.`, 0.`, 1.`}, {0.`, 1.`, 0.`, 0.`}, {0.`, 0.`, 1.`, 
+            0.`}, {1.`, 0.`, 0.`, \(-1.`\)}, {1.`, 0.`, \(-1.`\), 
+            0.`}, {1.`, \(-1.`\), 0.`, 0.`}}, {}}, {{1, 2, 3, 4}, {2, 3, 5, 
+          7}, {3, 4, 5, 6}, {5, 6, 7, 8}, {1, 2, 7, 8}, {1, 4, 6, 8}}, {{2, 
+          3, 5, 6}, {1, 3, 4, 5}, {1, 2, 4, 6}, {2, 3, 5, 6}, {1, 2, 4, 
+          6}, {1, 3, 4, 5}}, {{1, 5, 6}, {1, 2, 5}, {1, 2, 3}, {1, 3, 6}, {2, 
+          3, 4}, {3, 4, 6}, {2, 4, 5}, {4, 5, 6}}, {{2, 4, 8}, {1, 3, 7}, {2, 
+          4, 5}, {1, 3, 6}, {3, 6, 7}, {4, 5, 8}, {2, 5, 8}, {1, 6, 
+          7}}}\)], "Output"]
+}, Open  ]]
+}, Open  ]],
+
+Cell[CellGroupData[{
+
+Cell["\<\
+If you want to compute an inequality description of the \
+one-dimensional cone in R^3 with a vertex at origin and containing the \
+direction (1,1,1), you must set up the input (generator) data as:\
+\>", "Text",\
+
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["coneGenerators={{1,0,0,0},{0,1,1,1}}", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \({{1, 0, 0, 0}, {0, 1, 1, 1}}\)], "Output"]
+}, Open  ]],
+
+Cell[CellGroupData[{
+
+Cell["\<\
+{{cfacets,cequalities}, cfincidences}= 
+\tAllFacets[2,4,Flatten[coneGenerators]]\
+\>", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \({{{{1.`, 0.`, 0.`, 0.`}, {0.`, 1.`, 0.`, 0.`}, {0.`, \(-1.`\), 1.`, 
+            0.`}, {0.`, \(-1.`\), 0.`, 1.`}}, {3, 4}}, {{2}, {1}, {1, 2}, {1, 
+          2}}}\)], "Output"]
+}, Open  ]],
+
+Cell["\<\
+Since the equalities list contains 3 and 4, of the four output \
+inequalities , the third and the forth must be considered as equalities.  It \
+is important to note that this cone can have infinitely many different \
+minimal inequality descriptions, since it is not full-dimensional.\
+\>", \
+"Text",
+  ImageRegion->{{0, 1}, {0, 1}}]
+}, Open  ]]
+}, Closed]],
+
+Cell[CellGroupData[{
+
+Cell["A Larger Example (Random 0/1 Polytopes)", "Subsection",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell["\<\
+Let's compute the convex hull of 0/1 points in R^d.  First generate \
+0/1 points.  Below each point with the first component 0 is considered as a \
+direction that must be included in the convex hull.\
+\>", "Text",
+  ImageRegion->{{0, 1}, {0, 1}},
+  FontSize->13],
+
+Cell["n=30; d1=8;", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["\<\
+points=Table[Prepend[Table[Random[Integer,{0,1}],{d1-1}],0],{n}]\
+\>\
+", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \({{0, 0, 1, 1, 0, 1, 1, 1}, {0, 1, 0, 0, 1, 1, 0, 0}, {0, 1, 0, 1, 0, 0, 
+        0, 0}, {0, 0, 0, 0, 1, 1, 1, 1}, {0, 0, 1, 1, 0, 1, 1, 1}, {0, 1, 0, 
+        1, 0, 1, 1, 1}, {0, 0, 1, 1, 0, 0, 0, 0}, {0, 1, 0, 0, 1, 1, 0, 
+        1}, {0, 0, 0, 0, 1, 0, 1, 1}, {0, 0, 1, 0, 0, 0, 1, 1}, {0, 0, 1, 0, 
+        0, 0, 1, 0}, {0, 0, 0, 0, 1, 0, 1, 0}, {0, 0, 0, 0, 0, 1, 0, 0}, {0, 
+        0, 0, 0, 1, 0, 0, 0}, {0, 1, 0, 0, 1, 1, 0, 1}, {0, 0, 0, 1, 1, 1, 0, 
+        0}, {0, 0, 1, 1, 1, 0, 0, 1}, {0, 1, 1, 0, 0, 1, 1, 0}, {0, 0, 1, 1, 
+        0, 0, 0, 1}, {0, 1, 0, 1, 1, 0, 1, 0}, {0, 1, 1, 1, 0, 1, 0, 1}, {0, 
+        1, 1, 1, 1, 0, 1, 1}, {0, 0, 0, 0, 1, 0, 0, 1}, {0, 1, 1, 0, 0, 0, 1, 
+        1}, {0, 0, 1, 0, 1, 1, 0, 1}, {0, 1, 0, 0, 0, 1, 1, 1}, {0, 1, 0, 0, 
+        0, 1, 1, 1}, {0, 0, 0, 1, 0, 0, 0, 1}, {0, 0, 1, 0, 1, 1, 0, 0}, {0, 
+        0, 0, 0, 1, 0, 1, 1}}\)], "Output"]
+}, Open  ]],
+
+Cell[CellGroupData[{
+
+Cell["Dimensions[points]", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \({30, 8}\)], "Output"]
+}, Open  ]],
+
+Cell["\<\
+
+{CPUtime, {{facets,equalities}, inc}}= 
+\tTiming[AllFacets[n,d1,Flatten[points]]];\
+\>", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["{CPUtime,Length[facets]}", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \({0.`\ Second, 33}\)], "Output"]
+}, Open  ]],
+
+Cell["\<\
+Usually facets of 0/1 polytopes are very pretty and their \
+coefficients are small integers.\
+\>", "Text",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["Take[facets,5]", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \({{0.`, 0.`, 0.`, 1.`, 0.`, 0.`, 0.`, 0.`}, {0.`, \(-1.`\), 0.`, 1.`, 
+        0.`, 1.`, 0.`, 1.`}, {0.`, \(-1.`\), \(-1.`\), 1.`, 0.`, 1.`, 1.`, 
+        1.`}, {0.`, 0.`, 0.`, 0.`, 0.`, 0.`, 0.`, 1.`}, {0.`, 0.`, 1.`, 0.`, 
+        1.`, 0.`, \(-1.`\), 1.`}}\)], "Output"]
+}, Open  ]]
+}, Closed]],
+
+Cell[CellGroupData[{
+
+Cell["Disconnecting  cddmathlink", "Subsection",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[CellGroupData[{
+
+Cell["Uninstall[cddml]", "Input",
+  ImageRegion->{{0, 1}, {0, 1}}],
+
+Cell[BoxData[
+    \("/Users/fukuda/Math/cddmathlink"\)], "Output"]
+}, Open  ]]
+}, Closed]]
+},
+FrontEndVersion->"4.1 for Macintosh",
+ScreenRectangle->{{0, 1152}, {0, 746}},
+AutoGeneratedPackage->None,
+WindowToolbars->{},
+CellGrouping->Manual,
+WindowSize->{583, 634},
+WindowMargins->{{17, Automatic}, {Automatic, 41}},
+PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}},
+ShowCellLabel->True,
+ShowCellTags->False,
+RenderingOptions->{"ObjectDithering"->True,
+"RasterDithering"->False}
+]
+
+(*******************************************************************
+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->{
+  "Info3249106863-2654627"->{
+    Cell[3168, 111, 753, 11, 183, "Print",
+      CellTags->"Info3249106863-2654627"]},
+  "Info3249106869-2272285"->{
+    Cell[5701, 192, 930, 13, 231, "Print",
+      CellTags->"Info3249106869-2272285"]},
+  "Info3249106877-5554290"->{
+    Cell[8119, 252, 613, 9, 151, "Print",
+      CellTags->"Info3249106877-5554290"]}
+  }
+*)
+
+(*CellTagsIndex
+CellTagsIndex->{
+  {"Info3249106863-2654627", 15561, 491},
+  {"Info3249106869-2272285", 15678, 494},
+  {"Info3249106877-5554290", 15795, 497}
+  }
+*)
+
+(*NotebookFileOutline
+Notebook[{
+Cell[1705, 50, 423, 12, 348, "Title"],
+
+Cell[CellGroupData[{
+Cell[2153, 66, 106, 2, 46, "Subsection",
+  InitializationCell->True],
+
+Cell[CellGroupData[{
+Cell[2284, 72, 295, 8, 50, "Text",
+  InitializationCell->True],
+Cell[2582, 82, 120, 2, 27, "Input",
+  InitializationCell->True],
+
+Cell[CellGroupData[{
+Cell[2727, 88, 124, 5, 42, "Input",
+  InitializationCell->True],
+Cell[2854, 95, 84, 1, 27, "Output"]
+}, Open  ]]
+}, Open  ]]
+}, Closed]],
+
+Cell[CellGroupData[{
+Cell[2999, 103, 79, 1, 30, "Subsection"],
+
+Cell[CellGroupData[{
+Cell[3103, 108, 62, 1, 27, "Input"],
+Cell[3168, 111, 753, 11, 183, "Print",
+  CellTags->"Info3249106863-2654627"],
+Cell[3924, 124, 299, 7, 68, "Text"],
+
+Cell[CellGroupData[{
+Cell[4248, 135, 139, 4, 42, "Input"],
+Cell[4390, 141, 392, 11, 117, "Output"],
+
+Cell[CellGroupData[{
+Cell[4807, 156, 70, 1, 27, "Input"],
+Cell[4880, 159, 40, 1, 27, "Output"]
+}, Open  ]],
+
+Cell[CellGroupData[{
+Cell[4957, 165, 124, 4, 42, "Input"],
+Cell[5084, 171, 356, 5, 91, "Output"]
+}, Open  ]]
+}, Open  ]]
+}, Open  ]]
+}, Closed]],
+
+Cell[CellGroupData[{
+Cell[5513, 184, 85, 1, 30, "Subsection"],
+
+Cell[CellGroupData[{
+Cell[5623, 189, 75, 1, 27, "Input"],
+Cell[5701, 192, 930, 13, 231, "Print",
+  CellTags->"Info3249106869-2272285"],
+
+Cell[CellGroupData[{
+Cell[6656, 209, 141, 4, 42, "Input"],
+Cell[6800, 215, 670, 9, 155, "Output"]
+}, Open  ]]
+}, Open  ]],
+Cell[7497, 228, 412, 11, 68, "Text"]
+}, Closed]],
+
+Cell[CellGroupData[{
+Cell[7946, 244, 85, 1, 30, "Subsection"],
+
+Cell[CellGroupData[{
+Cell[8056, 249, 60, 1, 27, "Input"],
+Cell[8119, 252, 613, 9, 151, "Print",
+  CellTags->"Info3249106877-5554290"],
+Cell[8735, 263, 244, 5, 50, "Text"],
+
+Cell[CellGroupData[{
+Cell[9004, 272, 78, 1, 27, "Input"],
+Cell[9085, 275, 40, 1, 27, "Output"]
+}, Open  ]],
+
+Cell[CellGroupData[{
+Cell[9162, 281, 130, 5, 57, "Input"],
+Cell[9295, 288, 323, 5, 75, "Output"]
+}, Open  ]],
+Cell[9633, 296, 196, 6, 32, "Text"],
+
+Cell[CellGroupData[{
+Cell[9854, 306, 149, 5, 57, "Input"],
+Cell[10006, 313, 633, 9, 139, "Output"]
+}, Open  ]]
+}, Open  ]],
+
+Cell[CellGroupData[{
+Cell[10688, 328, 255, 6, 50, "Text"],
+
+Cell[CellGroupData[{
+Cell[10968, 338, 86, 1, 27, "Input"],
+Cell[11057, 341, 62, 1, 27, "Output"]
+}, Open  ]],
+
+Cell[CellGroupData[{
+Cell[11156, 347, 138, 4, 42, "Input"],
+Cell[11297, 353, 196, 3, 43, "Output"]
+}, Open  ]],
+Cell[11508, 359, 342, 7, 68, "Text"]
+}, Open  ]]
+}, Closed]],
+
+Cell[CellGroupData[{
+Cell[11899, 372, 94, 1, 30, "Subsection"],
+Cell[11996, 375, 272, 6, 48, "Text"],
+Cell[12271, 383, 61, 1, 27, "Input"],
+
+Cell[CellGroupData[{
+Cell[12357, 388, 124, 4, 42, "Input"],
+Cell[12484, 394, 913, 12, 171, "Output"]
+}, Open  ]],
+
+Cell[CellGroupData[{
+Cell[13434, 411, 68, 1, 27, "Input"],
+Cell[13505, 414, 41, 1, 27, "Output"]
+}, Open  ]],
+Cell[13561, 418, 141, 5, 57, "Input"],
+
+Cell[CellGroupData[{
+Cell[13727, 427, 74, 1, 27, "Input"],
+Cell[13804, 430, 51, 1, 27, "Output"]
+}, Open  ]],
+Cell[13870, 434, 149, 4, 32, "Text"],
+
+Cell[CellGroupData[{
+Cell[14044, 442, 64, 1, 27, "Input"],
+Cell[14111, 445, 291, 4, 59, "Output"]
+}, Open  ]]
+}, Closed]],
+
+Cell[CellGroupData[{
+Cell[14451, 455, 81, 1, 30, "Subsection"],
+
+Cell[CellGroupData[{
+Cell[14557, 460, 66, 1, 27, "Input"],
+Cell[14626, 463, 66, 1, 27, "Output"]
+}, Open  ]]
+}, Closed]]
+}
+]
+*)
+
+
+
+(*******************************************************************
+End of Mathematica Notebook file.
+*******************************************************************)
+