Perform a bit of spec hygiene.

Change-Id: Iabb7fa8ff20155a018d40bd2e23b21f19d14de1e
diff --git a/docs/dex-format.html b/docs/dex-format.html
index ea92c67..5a71b59 100644
--- a/docs/dex-format.html
+++ b/docs/dex-format.html
@@ -176,7 +176,7 @@
     used by this file, either for internal naming (e.g., type descriptors)
     or as constant objects referred to by code. This list must be sorted
     by string contents, using UTF-16 code point values (not in a
-    locale-sensitive manner).
+    locale-sensitive manner), and it must not contain any duplicate entries.
   </td>
 </tr>
 <tr>
@@ -185,7 +185,7 @@
   <td>type identifiers list. These are identifiers for all types (classes,
     arrays, or primitive types) referred to by this file, whether defined
     in the file or not. This list must be sorted by <code>string_id</code>
-    index.
+    index, and it must not contain any duplicate entries.
   </td>
 </tr>
 <tr>
@@ -194,7 +194,8 @@
   <td>method prototype identifiers list. These are identifiers for all
     prototypes referred to by this file. This list must be sorted in
     return-type (by <code>type_id</code> index) major order, and then
-    by arguments (also by <code>type_id</code> index).
+    by arguments (also by <code>type_id</code> index). The list must not
+    contain any duplicate entries.
   </td>
 </tr>
 <tr>
@@ -205,7 +206,7 @@
     list must be sorted, where the defining type (by <code>type_id</code>
     index) is the major order, field name (by <code>string_id</code> index)
     is the intermediate order, and type (by <code>type_id</code> index)
-    is the minor order.
+    is the minor order. The list must not contain any duplicate entries.
   </td>
 </tr>
 <tr>
@@ -215,8 +216,9 @@
     referred to by this file, whether defined in the file or not. This
     list must be sorted, where the defining type (by <code>type_id</code>
     index) is the major order, method name (by <code>string_id</code>
-    index) is the intermediate order, and method
-    prototype (by <code>proto_id</code> index) is the minor order.
+    index) is the intermediate order, and method prototype (by
+    <code>proto_id</code> index) is the minor order.  The list must not
+    contain any duplicate entries.
   </td>
 </tr>
 <tr>
@@ -224,7 +226,9 @@
   <td>class_def_item[]</td>
   <td>class definitions list. The classes must be ordered such that a given
     class's superclass and implemented interfaces appear in the
-    list earlier than the referring class.
+    list earlier than the referring class. Furthermore, it is invalid for
+    a definition for the same-named class to appear more than once in
+    the list.
   </td>
 </tr>
 <tr>
@@ -240,8 +244,8 @@
   <td>link_data</td>
   <td>ubyte[]</td>
   <td>data used in statically linked files. The format of the data in
-    this section is left unspecified by this document;
-    this section is empty in unlinked files, and runtime implementations
+    this section is left unspecified by this document.
+    This section is empty in unlinked files, and runtime implementations
     may use it as they see fit.
   </td>
 </tr>
@@ -270,10 +274,10 @@
 <p><b>Note:</b> At least a couple earlier versions of the format have
 been used in widely-available public software releases. For example,
 version <code>009</code> was used for the M3 releases of the
-Android platform (November-December 2007),
+Android platform (November&ndash;December 2007),
 and version <code>013</code> was used for the M5 releases of the Android
-platform (February-March 2008). In several respects, these earlier versions
-of the format differ significantly from the version described in this
+platform (February&ndash;March 2008). In several respects, these earlier
+versions of the format differ significantly from the version described in this
 document.</p>
 
 <h2><code>ENDIAN_CONSTANT</code> and <code>REVERSE_ENDIAN_CONSTANT</code></h2>
@@ -827,7 +831,7 @@
 <p>A <i>SimpleName</i> is the basis for the syntax of the names of other
 things. The <code>.dex</code> format allows a fair amount of latitude
 here (much more than most common source languages). In brief, a simple
-name may consist of any low-ASCII alphabetic character or digit, a few
+name consists of any low-ASCII alphabetic character or digit, a few
 specific low-ASCII symbols, and most non-ASCII code points that are not
 control, space, or special characters. Note that surrogate code points
 (in the range <code>U+d800</code> &hellip; <code>U+dfff</code>) are not
@@ -1320,7 +1324,7 @@
 <p>This is a list of the entire contents of a file, in order. It
 contains some redundancy with respect to the <code>header_item</code>
 but is intended to be an easy form to use to iterate over an entire
-file. A given type may appear at most once in a map, but there is no
+file. A given type must appear at most once in a map, but there is no
 restriction on what order types may appear in, other than the
 restrictions implied by the rest of the format (e.g., a
 <code>header</code> section must appear first, followed by a
@@ -2091,7 +2095,7 @@
 <tr>
   <td>tries</td>
   <td>try_item[tries_size] <i>(optional)</i></td>
-  <td>array indicating where in the code exceptions may be caught and
+  <td>array indicating where in the code exceptions are caught and
     how to handle them. Elements of the array must be non-overlapping in
     range and in order from low to high address. This element is only
     present if <code>tries_size</code> is non-zero.
@@ -2255,7 +2259,7 @@
 <code>address</code> register represents the instruction offset in the
 associated <code>insns_item</code> in 16-bit code units. The
 <code>address</code> register starts at <code>0</code> at the beginning of each
-<code>debug_info</code> sequence and may only monotonically increase.
+<code>debug_info</code> sequence and must only monotonically increase.
 The <code>line</code> register represents what source line number
 should be associated with the next positions table entry emitted by
 the state machine. It is initialized in the sequence header, and may
@@ -2867,7 +2871,7 @@
 which is either defined as a member of another class, per se, or is
 anonymous but not defined within a method body (e.g., a synthetic
 inner class). Every class that has this annotation must also have an
-<code>InnerClass</code> annotation. Additionally, a class may not have
+<code>InnerClass</code> annotation. Additionally, a class must not have
 both an <code>EnclosingClass</code> and an
 <code>EnclosingMethod</code> annotation.</p>
 
@@ -2894,7 +2898,7 @@
 <p>An <code>EnclosingMethod</code> annotation is attached to each class
 which is defined inside a method body. Every class that has this
 annotation must also have an <code>InnerClass</code> annotation.
-Additionally, a class may not have both an <code>EnclosingClass</code>
+Additionally, a class must not have both an <code>EnclosingClass</code>
 and an <code>EnclosingMethod</code> annotation.</p>
 
 <table class="format">