Library MetaRocq.Utils.ByteCompare
From Stdlib Require Import Strings.Byte NArith.BinNat.
(* To make byte comparison more efficient and avoid reallocating the same number
many times, we precompute the representation in N. *)
Module ByteN.
Definition N0 := 0%N.
Definition N1 := 1%N.
Definition N2 := 2%N.
Definition N3 := 3%N.
Definition N4 := 4%N.
Definition N5 := 5%N.
Definition N6 := 6%N.
Definition N7 := 7%N.
Definition N8 := 8%N.
Definition N9 := 9%N.
Definition N10 := 10%N.
Definition N11 := 11%N.
Definition N12 := 12%N.
Definition N13 := 13%N.
Definition N14 := 14%N.
Definition N15 := 15%N.
Definition N16 := 16%N.
Definition N17 := 17%N.
Definition N18 := 18%N.
Definition N19 := 19%N.
Definition N20 := 20%N.
Definition N21 := 21%N.
Definition N22 := 22%N.
Definition N23 := 23%N.
Definition N24 := 24%N.
Definition N25 := 25%N.
Definition N26 := 26%N.
Definition N27 := 27%N.
Definition N28 := 28%N.
Definition N29 := 29%N.
Definition N30 := 30%N.
Definition N31 := 31%N.
Definition N32 := 32%N.
Definition N33 := 33%N.
Definition N34 := 34%N.
Definition N35 := 35%N.
Definition N36 := 36%N.
Definition N37 := 37%N.
Definition N38 := 38%N.
Definition N39 := 39%N.
Definition N40 := 40%N.
Definition N41 := 41%N.
Definition N42 := 42%N.
Definition N43 := 43%N.
Definition N44 := 44%N.
Definition N45 := 45%N.
Definition N46 := 46%N.
Definition N47 := 47%N.
Definition N48 := 48%N.
Definition N49 := 49%N.
Definition N50 := 50%N.
Definition N51 := 51%N.
Definition N52 := 52%N.
Definition N53 := 53%N.
Definition N54 := 54%N.
Definition N55 := 55%N.
Definition N56 := 56%N.
Definition N57 := 57%N.
Definition N58 := 58%N.
Definition N59 := 59%N.
Definition N60 := 60%N.
Definition N61 := 61%N.
Definition N62 := 62%N.
Definition N63 := 63%N.
Definition N64 := 64%N.
Definition N65 := 65%N.
Definition N66 := 66%N.
Definition N67 := 67%N.
Definition N68 := 68%N.
Definition N69 := 69%N.
Definition N70 := 70%N.
Definition N71 := 71%N.
Definition N72 := 72%N.
Definition N73 := 73%N.
Definition N74 := 74%N.
Definition N75 := 75%N.
Definition N76 := 76%N.
Definition N77 := 77%N.
Definition N78 := 78%N.
Definition N79 := 79%N.
Definition N80 := 80%N.
Definition N81 := 81%N.
Definition N82 := 82%N.
Definition N83 := 83%N.
Definition N84 := 84%N.
Definition N85 := 85%N.
Definition N86 := 86%N.
Definition N87 := 87%N.
Definition N88 := 88%N.
Definition N89 := 89%N.
Definition N90 := 90%N.
Definition N91 := 91%N.
Definition N92 := 92%N.
Definition N93 := 93%N.
Definition N94 := 94%N.
Definition N95 := 95%N.
Definition N96 := 96%N.
Definition N97 := 97%N.
Definition N98 := 98%N.
Definition N99 := 99%N.
Definition N100 := 100%N.
Definition N101 := 101%N.
Definition N102 := 102%N.
Definition N103 := 103%N.
Definition N104 := 104%N.
Definition N105 := 105%N.
Definition N106 := 106%N.
Definition N107 := 107%N.
Definition N108 := 108%N.
Definition N109 := 109%N.
Definition N110 := 110%N.
Definition N111 := 111%N.
Definition N112 := 112%N.
Definition N113 := 113%N.
Definition N114 := 114%N.
Definition N115 := 115%N.
Definition N116 := 116%N.
Definition N117 := 117%N.
Definition N118 := 118%N.
Definition N119 := 119%N.
Definition N120 := 120%N.
Definition N121 := 121%N.
Definition N122 := 122%N.
Definition N123 := 123%N.
Definition N124 := 124%N.
Definition N125 := 125%N.
Definition N126 := 126%N.
Definition N127 := 127%N.
Definition N128 := 128%N.
Definition N129 := 129%N.
Definition N130 := 130%N.
Definition N131 := 131%N.
Definition N132 := 132%N.
Definition N133 := 133%N.
Definition N134 := 134%N.
Definition N135 := 135%N.
Definition N136 := 136%N.
Definition N137 := 137%N.
Definition N138 := 138%N.
Definition N139 := 139%N.
Definition N140 := 140%N.
Definition N141 := 141%N.
Definition N142 := 142%N.
Definition N143 := 143%N.
Definition N144 := 144%N.
Definition N145 := 145%N.
Definition N146 := 146%N.
Definition N147 := 147%N.
Definition N148 := 148%N.
Definition N149 := 149%N.
Definition N150 := 150%N.
Definition N151 := 151%N.
Definition N152 := 152%N.
Definition N153 := 153%N.
Definition N154 := 154%N.
Definition N155 := 155%N.
Definition N156 := 156%N.
Definition N157 := 157%N.
Definition N158 := 158%N.
Definition N159 := 159%N.
Definition N160 := 160%N.
Definition N161 := 161%N.
Definition N162 := 162%N.
Definition N163 := 163%N.
Definition N164 := 164%N.
Definition N165 := 165%N.
Definition N166 := 166%N.
Definition N167 := 167%N.
Definition N168 := 168%N.
Definition N169 := 169%N.
Definition N170 := 170%N.
Definition N171 := 171%N.
Definition N172 := 172%N.
Definition N173 := 173%N.
Definition N174 := 174%N.
Definition N175 := 175%N.
Definition N176 := 176%N.
Definition N177 := 177%N.
Definition N178 := 178%N.
Definition N179 := 179%N.
Definition N180 := 180%N.
Definition N181 := 181%N.
Definition N182 := 182%N.
Definition N183 := 183%N.
Definition N184 := 184%N.
Definition N185 := 185%N.
Definition N186 := 186%N.
Definition N187 := 187%N.
Definition N188 := 188%N.
Definition N189 := 189%N.
Definition N190 := 190%N.
Definition N191 := 191%N.
Definition N192 := 192%N.
Definition N193 := 193%N.
Definition N194 := 194%N.
Definition N195 := 195%N.
Definition N196 := 196%N.
Definition N197 := 197%N.
Definition N198 := 198%N.
Definition N199 := 199%N.
Definition N200 := 200%N.
Definition N201 := 201%N.
Definition N202 := 202%N.
Definition N203 := 203%N.
Definition N204 := 204%N.
Definition N205 := 205%N.
Definition N206 := 206%N.
Definition N207 := 207%N.
Definition N208 := 208%N.
Definition N209 := 209%N.
Definition N210 := 210%N.
Definition N211 := 211%N.
Definition N212 := 212%N.
Definition N213 := 213%N.
Definition N214 := 214%N.
Definition N215 := 215%N.
Definition N216 := 216%N.
Definition N217 := 217%N.
Definition N218 := 218%N.
Definition N219 := 219%N.
Definition N220 := 220%N.
Definition N221 := 221%N.
Definition N222 := 222%N.
Definition N223 := 223%N.
Definition N224 := 224%N.
Definition N225 := 225%N.
Definition N226 := 226%N.
Definition N227 := 227%N.
Definition N228 := 228%N.
Definition N229 := 229%N.
Definition N230 := 230%N.
Definition N231 := 231%N.
Definition N232 := 232%N.
Definition N233 := 233%N.
Definition N234 := 234%N.
Definition N235 := 235%N.
Definition N236 := 236%N.
Definition N237 := 237%N.
Definition N238 := 238%N.
Definition N239 := 239%N.
Definition N240 := 240%N.
Definition N241 := 241%N.
Definition N242 := 242%N.
Definition N243 := 243%N.
Definition N244 := 244%N.
Definition N245 := 245%N.
Definition N246 := 246%N.
Definition N247 := 247%N.
Definition N248 := 248%N.
Definition N249 := 249%N.
Definition N250 := 250%N.
Definition N251 := 251%N.
Definition N252 := 252%N.
Definition N253 := 253%N.
Definition N254 := 254%N.
Definition N255 := 255%N.
Definition to_N (x : byte) :=
match x with
| "000"%byte ⇒ N0
| "001"%byte ⇒ N1
| "002"%byte ⇒ N2
| "003"%byte ⇒ N3
| "004"%byte ⇒ N4
| "005"%byte ⇒ N5
| "006"%byte ⇒ N6
| "007"%byte ⇒ N7
| "008"%byte ⇒ N8
| "009"%byte ⇒ N9
| "010"%byte ⇒ N10
| "011"%byte ⇒ N11
| "012"%byte ⇒ N12
| "013"%byte ⇒ N13
| "014"%byte ⇒ N14
| "015"%byte ⇒ N15
| "016"%byte ⇒ N16
| "017"%byte ⇒ N17
| "018"%byte ⇒ N18
| "019"%byte ⇒ N19
| "020"%byte ⇒ N20
| "021"%byte ⇒ N21
| "022"%byte ⇒ N22
| "023"%byte ⇒ N23
| "024"%byte ⇒ N24
| "025"%byte ⇒ N25
| "026"%byte ⇒ N26
| "027"%byte ⇒ N27
| "028"%byte ⇒ N28
| "029"%byte ⇒ N29
| "030"%byte ⇒ N30
| "031"%byte ⇒ N31
| "032"%byte ⇒ N32
| "033"%byte ⇒ N33
| "034"%byte ⇒ N34
| "035"%byte ⇒ N35
| "036"%byte ⇒ N36
| "037"%byte ⇒ N37
| "038"%byte ⇒ N38
| "039"%byte ⇒ N39
| "040"%byte ⇒ N40
| "041"%byte ⇒ N41
| "042"%byte ⇒ N42
| "043"%byte ⇒ N43
| "044"%byte ⇒ N44
| "045"%byte ⇒ N45
| "046"%byte ⇒ N46
| "047"%byte ⇒ N47
| "048"%byte ⇒ N48
| "049"%byte ⇒ N49
| "050"%byte ⇒ N50
| "051"%byte ⇒ N51
| "052"%byte ⇒ N52
| "053"%byte ⇒ N53
| "054"%byte ⇒ N54
| "055"%byte ⇒ N55
| "056"%byte ⇒ N56
| "057"%byte ⇒ N57
| "058"%byte ⇒ N58
| "059"%byte ⇒ N59
| "060"%byte ⇒ N60
| "061"%byte ⇒ N61
| "062"%byte ⇒ N62
| "063"%byte ⇒ N63
| "064"%byte ⇒ N64
| "065"%byte ⇒ N65
| "066"%byte ⇒ N66
| "067"%byte ⇒ N67
| "068"%byte ⇒ N68
| "069"%byte ⇒ N69
| "070"%byte ⇒ N70
| "071"%byte ⇒ N71
| "072"%byte ⇒ N72
| "073"%byte ⇒ N73
| "074"%byte ⇒ N74
| "075"%byte ⇒ N75
| "076"%byte ⇒ N76
| "077"%byte ⇒ N77
| "078"%byte ⇒ N78
| "079"%byte ⇒ N79
| "080"%byte ⇒ N80
| "081"%byte ⇒ N81
| "082"%byte ⇒ N82
| "083"%byte ⇒ N83
| "084"%byte ⇒ N84
| "085"%byte ⇒ N85
| "086"%byte ⇒ N86
| "087"%byte ⇒ N87
| "088"%byte ⇒ N88
| "089"%byte ⇒ N89
| "090"%byte ⇒ N90
| "091"%byte ⇒ N91
| "092"%byte ⇒ N92
| "093"%byte ⇒ N93
| "094"%byte ⇒ N94
| "095"%byte ⇒ N95
| "096"%byte ⇒ N96
| "097"%byte ⇒ N97
| "098"%byte ⇒ N98
| "099"%byte ⇒ N99
| "100"%byte ⇒ N100
| "101"%byte ⇒ N101
| "102"%byte ⇒ N102
| "103"%byte ⇒ N103
| "104"%byte ⇒ N104
| "105"%byte ⇒ N105
| "106"%byte ⇒ N106
| "107"%byte ⇒ N107
| "108"%byte ⇒ N108
| "109"%byte ⇒ N109
| "110"%byte ⇒ N110
| "111"%byte ⇒ N111
| "112"%byte ⇒ N112
| "113"%byte ⇒ N113
| "114"%byte ⇒ N114
| "115"%byte ⇒ N115
| "116"%byte ⇒ N116
| "117"%byte ⇒ N117
| "118"%byte ⇒ N118
| "119"%byte ⇒ N119
| "120"%byte ⇒ N120
| "121"%byte ⇒ N121
| "122"%byte ⇒ N122
| "123"%byte ⇒ N123
| "124"%byte ⇒ N124
| "125"%byte ⇒ N125
| "126"%byte ⇒ N126
| "127"%byte ⇒ N127
| "128"%byte ⇒ N128
| "129"%byte ⇒ N129
| "130"%byte ⇒ N130
| "131"%byte ⇒ N131
| "132"%byte ⇒ N132
| "133"%byte ⇒ N133
| "134"%byte ⇒ N134
| "135"%byte ⇒ N135
| "136"%byte ⇒ N136
| "137"%byte ⇒ N137
| "138"%byte ⇒ N138
| "139"%byte ⇒ N139
| "140"%byte ⇒ N140
| "141"%byte ⇒ N141
| "142"%byte ⇒ N142
| "143"%byte ⇒ N143
| "144"%byte ⇒ N144
| "145"%byte ⇒ N145
| "146"%byte ⇒ N146
| "147"%byte ⇒ N147
| "148"%byte ⇒ N148
| "149"%byte ⇒ N149
| "150"%byte ⇒ N150
| "151"%byte ⇒ N151
| "152"%byte ⇒ N152
| "153"%byte ⇒ N153
| "154"%byte ⇒ N154
| "155"%byte ⇒ N155
| "156"%byte ⇒ N156
| "157"%byte ⇒ N157
| "158"%byte ⇒ N158
| "159"%byte ⇒ N159
| "160"%byte ⇒ N160
| "161"%byte ⇒ N161
| "162"%byte ⇒ N162
| "163"%byte ⇒ N163
| "164"%byte ⇒ N164
| "165"%byte ⇒ N165
| "166"%byte ⇒ N166
| "167"%byte ⇒ N167
| "168"%byte ⇒ N168
| "169"%byte ⇒ N169
| "170"%byte ⇒ N170
| "171"%byte ⇒ N171
| "172"%byte ⇒ N172
| "173"%byte ⇒ N173
| "174"%byte ⇒ N174
| "175"%byte ⇒ N175
| "176"%byte ⇒ N176
| "177"%byte ⇒ N177
| "178"%byte ⇒ N178
| "179"%byte ⇒ N179
| "180"%byte ⇒ N180
| "181"%byte ⇒ N181
| "182"%byte ⇒ N182
| "183"%byte ⇒ N183
| "184"%byte ⇒ N184
| "185"%byte ⇒ N185
| "186"%byte ⇒ N186
| "187"%byte ⇒ N187
| "188"%byte ⇒ N188
| "189"%byte ⇒ N189
| "190"%byte ⇒ N190
| "191"%byte ⇒ N191
| "192"%byte ⇒ N192
| "193"%byte ⇒ N193
| "194"%byte ⇒ N194
| "195"%byte ⇒ N195
| "196"%byte ⇒ N196
| "197"%byte ⇒ N197
| "198"%byte ⇒ N198
| "199"%byte ⇒ N199
| "200"%byte ⇒ N200
| "201"%byte ⇒ N201
| "202"%byte ⇒ N202
| "203"%byte ⇒ N203
| "204"%byte ⇒ N204
| "205"%byte ⇒ N205
| "206"%byte ⇒ N206
| "207"%byte ⇒ N207
| "208"%byte ⇒ N208
| "209"%byte ⇒ N209
| "210"%byte ⇒ N210
| "211"%byte ⇒ N211
| "212"%byte ⇒ N212
| "213"%byte ⇒ N213
| "214"%byte ⇒ N214
| "215"%byte ⇒ N215
| "216"%byte ⇒ N216
| "217"%byte ⇒ N217
| "218"%byte ⇒ N218
| "219"%byte ⇒ N219
| "220"%byte ⇒ N220
| "221"%byte ⇒ N221
| "222"%byte ⇒ N222
| "223"%byte ⇒ N223
| "224"%byte ⇒ N224
| "225"%byte ⇒ N225
| "226"%byte ⇒ N226
| "227"%byte ⇒ N227
| "228"%byte ⇒ N228
| "229"%byte ⇒ N229
| "230"%byte ⇒ N230
| "231"%byte ⇒ N231
| "232"%byte ⇒ N232
| "233"%byte ⇒ N233
| "234"%byte ⇒ N234
| "235"%byte ⇒ N235
| "236"%byte ⇒ N236
| "237"%byte ⇒ N237
| "238"%byte ⇒ N238
| "239"%byte ⇒ N239
| "240"%byte ⇒ N240
| "241"%byte ⇒ N241
| "242"%byte ⇒ N242
| "243"%byte ⇒ N243
| "244"%byte ⇒ N244
| "245"%byte ⇒ N245
| "246"%byte ⇒ N246
| "247"%byte ⇒ N247
| "248"%byte ⇒ N248
| "249"%byte ⇒ N249
| "250"%byte ⇒ N250
| "251"%byte ⇒ N251
| "252"%byte ⇒ N252
| "253"%byte ⇒ N253
| "254"%byte ⇒ N254
| "255"%byte ⇒ N255
end.
End ByteN.
Definition eqb (x y : byte) :=
N.eqb (ByteN.to_N x) (ByteN.to_N y).
Definition compare (x y : byte) :=
N.compare (ByteN.to_N x) (ByteN.to_N y).
(* To make byte comparison more efficient and avoid reallocating the same number
many times, we precompute the representation in N. *)
Module ByteN.
Definition N0 := 0%N.
Definition N1 := 1%N.
Definition N2 := 2%N.
Definition N3 := 3%N.
Definition N4 := 4%N.
Definition N5 := 5%N.
Definition N6 := 6%N.
Definition N7 := 7%N.
Definition N8 := 8%N.
Definition N9 := 9%N.
Definition N10 := 10%N.
Definition N11 := 11%N.
Definition N12 := 12%N.
Definition N13 := 13%N.
Definition N14 := 14%N.
Definition N15 := 15%N.
Definition N16 := 16%N.
Definition N17 := 17%N.
Definition N18 := 18%N.
Definition N19 := 19%N.
Definition N20 := 20%N.
Definition N21 := 21%N.
Definition N22 := 22%N.
Definition N23 := 23%N.
Definition N24 := 24%N.
Definition N25 := 25%N.
Definition N26 := 26%N.
Definition N27 := 27%N.
Definition N28 := 28%N.
Definition N29 := 29%N.
Definition N30 := 30%N.
Definition N31 := 31%N.
Definition N32 := 32%N.
Definition N33 := 33%N.
Definition N34 := 34%N.
Definition N35 := 35%N.
Definition N36 := 36%N.
Definition N37 := 37%N.
Definition N38 := 38%N.
Definition N39 := 39%N.
Definition N40 := 40%N.
Definition N41 := 41%N.
Definition N42 := 42%N.
Definition N43 := 43%N.
Definition N44 := 44%N.
Definition N45 := 45%N.
Definition N46 := 46%N.
Definition N47 := 47%N.
Definition N48 := 48%N.
Definition N49 := 49%N.
Definition N50 := 50%N.
Definition N51 := 51%N.
Definition N52 := 52%N.
Definition N53 := 53%N.
Definition N54 := 54%N.
Definition N55 := 55%N.
Definition N56 := 56%N.
Definition N57 := 57%N.
Definition N58 := 58%N.
Definition N59 := 59%N.
Definition N60 := 60%N.
Definition N61 := 61%N.
Definition N62 := 62%N.
Definition N63 := 63%N.
Definition N64 := 64%N.
Definition N65 := 65%N.
Definition N66 := 66%N.
Definition N67 := 67%N.
Definition N68 := 68%N.
Definition N69 := 69%N.
Definition N70 := 70%N.
Definition N71 := 71%N.
Definition N72 := 72%N.
Definition N73 := 73%N.
Definition N74 := 74%N.
Definition N75 := 75%N.
Definition N76 := 76%N.
Definition N77 := 77%N.
Definition N78 := 78%N.
Definition N79 := 79%N.
Definition N80 := 80%N.
Definition N81 := 81%N.
Definition N82 := 82%N.
Definition N83 := 83%N.
Definition N84 := 84%N.
Definition N85 := 85%N.
Definition N86 := 86%N.
Definition N87 := 87%N.
Definition N88 := 88%N.
Definition N89 := 89%N.
Definition N90 := 90%N.
Definition N91 := 91%N.
Definition N92 := 92%N.
Definition N93 := 93%N.
Definition N94 := 94%N.
Definition N95 := 95%N.
Definition N96 := 96%N.
Definition N97 := 97%N.
Definition N98 := 98%N.
Definition N99 := 99%N.
Definition N100 := 100%N.
Definition N101 := 101%N.
Definition N102 := 102%N.
Definition N103 := 103%N.
Definition N104 := 104%N.
Definition N105 := 105%N.
Definition N106 := 106%N.
Definition N107 := 107%N.
Definition N108 := 108%N.
Definition N109 := 109%N.
Definition N110 := 110%N.
Definition N111 := 111%N.
Definition N112 := 112%N.
Definition N113 := 113%N.
Definition N114 := 114%N.
Definition N115 := 115%N.
Definition N116 := 116%N.
Definition N117 := 117%N.
Definition N118 := 118%N.
Definition N119 := 119%N.
Definition N120 := 120%N.
Definition N121 := 121%N.
Definition N122 := 122%N.
Definition N123 := 123%N.
Definition N124 := 124%N.
Definition N125 := 125%N.
Definition N126 := 126%N.
Definition N127 := 127%N.
Definition N128 := 128%N.
Definition N129 := 129%N.
Definition N130 := 130%N.
Definition N131 := 131%N.
Definition N132 := 132%N.
Definition N133 := 133%N.
Definition N134 := 134%N.
Definition N135 := 135%N.
Definition N136 := 136%N.
Definition N137 := 137%N.
Definition N138 := 138%N.
Definition N139 := 139%N.
Definition N140 := 140%N.
Definition N141 := 141%N.
Definition N142 := 142%N.
Definition N143 := 143%N.
Definition N144 := 144%N.
Definition N145 := 145%N.
Definition N146 := 146%N.
Definition N147 := 147%N.
Definition N148 := 148%N.
Definition N149 := 149%N.
Definition N150 := 150%N.
Definition N151 := 151%N.
Definition N152 := 152%N.
Definition N153 := 153%N.
Definition N154 := 154%N.
Definition N155 := 155%N.
Definition N156 := 156%N.
Definition N157 := 157%N.
Definition N158 := 158%N.
Definition N159 := 159%N.
Definition N160 := 160%N.
Definition N161 := 161%N.
Definition N162 := 162%N.
Definition N163 := 163%N.
Definition N164 := 164%N.
Definition N165 := 165%N.
Definition N166 := 166%N.
Definition N167 := 167%N.
Definition N168 := 168%N.
Definition N169 := 169%N.
Definition N170 := 170%N.
Definition N171 := 171%N.
Definition N172 := 172%N.
Definition N173 := 173%N.
Definition N174 := 174%N.
Definition N175 := 175%N.
Definition N176 := 176%N.
Definition N177 := 177%N.
Definition N178 := 178%N.
Definition N179 := 179%N.
Definition N180 := 180%N.
Definition N181 := 181%N.
Definition N182 := 182%N.
Definition N183 := 183%N.
Definition N184 := 184%N.
Definition N185 := 185%N.
Definition N186 := 186%N.
Definition N187 := 187%N.
Definition N188 := 188%N.
Definition N189 := 189%N.
Definition N190 := 190%N.
Definition N191 := 191%N.
Definition N192 := 192%N.
Definition N193 := 193%N.
Definition N194 := 194%N.
Definition N195 := 195%N.
Definition N196 := 196%N.
Definition N197 := 197%N.
Definition N198 := 198%N.
Definition N199 := 199%N.
Definition N200 := 200%N.
Definition N201 := 201%N.
Definition N202 := 202%N.
Definition N203 := 203%N.
Definition N204 := 204%N.
Definition N205 := 205%N.
Definition N206 := 206%N.
Definition N207 := 207%N.
Definition N208 := 208%N.
Definition N209 := 209%N.
Definition N210 := 210%N.
Definition N211 := 211%N.
Definition N212 := 212%N.
Definition N213 := 213%N.
Definition N214 := 214%N.
Definition N215 := 215%N.
Definition N216 := 216%N.
Definition N217 := 217%N.
Definition N218 := 218%N.
Definition N219 := 219%N.
Definition N220 := 220%N.
Definition N221 := 221%N.
Definition N222 := 222%N.
Definition N223 := 223%N.
Definition N224 := 224%N.
Definition N225 := 225%N.
Definition N226 := 226%N.
Definition N227 := 227%N.
Definition N228 := 228%N.
Definition N229 := 229%N.
Definition N230 := 230%N.
Definition N231 := 231%N.
Definition N232 := 232%N.
Definition N233 := 233%N.
Definition N234 := 234%N.
Definition N235 := 235%N.
Definition N236 := 236%N.
Definition N237 := 237%N.
Definition N238 := 238%N.
Definition N239 := 239%N.
Definition N240 := 240%N.
Definition N241 := 241%N.
Definition N242 := 242%N.
Definition N243 := 243%N.
Definition N244 := 244%N.
Definition N245 := 245%N.
Definition N246 := 246%N.
Definition N247 := 247%N.
Definition N248 := 248%N.
Definition N249 := 249%N.
Definition N250 := 250%N.
Definition N251 := 251%N.
Definition N252 := 252%N.
Definition N253 := 253%N.
Definition N254 := 254%N.
Definition N255 := 255%N.
Definition to_N (x : byte) :=
match x with
| "000"%byte ⇒ N0
| "001"%byte ⇒ N1
| "002"%byte ⇒ N2
| "003"%byte ⇒ N3
| "004"%byte ⇒ N4
| "005"%byte ⇒ N5
| "006"%byte ⇒ N6
| "007"%byte ⇒ N7
| "008"%byte ⇒ N8
| "009"%byte ⇒ N9
| "010"%byte ⇒ N10
| "011"%byte ⇒ N11
| "012"%byte ⇒ N12
| "013"%byte ⇒ N13
| "014"%byte ⇒ N14
| "015"%byte ⇒ N15
| "016"%byte ⇒ N16
| "017"%byte ⇒ N17
| "018"%byte ⇒ N18
| "019"%byte ⇒ N19
| "020"%byte ⇒ N20
| "021"%byte ⇒ N21
| "022"%byte ⇒ N22
| "023"%byte ⇒ N23
| "024"%byte ⇒ N24
| "025"%byte ⇒ N25
| "026"%byte ⇒ N26
| "027"%byte ⇒ N27
| "028"%byte ⇒ N28
| "029"%byte ⇒ N29
| "030"%byte ⇒ N30
| "031"%byte ⇒ N31
| "032"%byte ⇒ N32
| "033"%byte ⇒ N33
| "034"%byte ⇒ N34
| "035"%byte ⇒ N35
| "036"%byte ⇒ N36
| "037"%byte ⇒ N37
| "038"%byte ⇒ N38
| "039"%byte ⇒ N39
| "040"%byte ⇒ N40
| "041"%byte ⇒ N41
| "042"%byte ⇒ N42
| "043"%byte ⇒ N43
| "044"%byte ⇒ N44
| "045"%byte ⇒ N45
| "046"%byte ⇒ N46
| "047"%byte ⇒ N47
| "048"%byte ⇒ N48
| "049"%byte ⇒ N49
| "050"%byte ⇒ N50
| "051"%byte ⇒ N51
| "052"%byte ⇒ N52
| "053"%byte ⇒ N53
| "054"%byte ⇒ N54
| "055"%byte ⇒ N55
| "056"%byte ⇒ N56
| "057"%byte ⇒ N57
| "058"%byte ⇒ N58
| "059"%byte ⇒ N59
| "060"%byte ⇒ N60
| "061"%byte ⇒ N61
| "062"%byte ⇒ N62
| "063"%byte ⇒ N63
| "064"%byte ⇒ N64
| "065"%byte ⇒ N65
| "066"%byte ⇒ N66
| "067"%byte ⇒ N67
| "068"%byte ⇒ N68
| "069"%byte ⇒ N69
| "070"%byte ⇒ N70
| "071"%byte ⇒ N71
| "072"%byte ⇒ N72
| "073"%byte ⇒ N73
| "074"%byte ⇒ N74
| "075"%byte ⇒ N75
| "076"%byte ⇒ N76
| "077"%byte ⇒ N77
| "078"%byte ⇒ N78
| "079"%byte ⇒ N79
| "080"%byte ⇒ N80
| "081"%byte ⇒ N81
| "082"%byte ⇒ N82
| "083"%byte ⇒ N83
| "084"%byte ⇒ N84
| "085"%byte ⇒ N85
| "086"%byte ⇒ N86
| "087"%byte ⇒ N87
| "088"%byte ⇒ N88
| "089"%byte ⇒ N89
| "090"%byte ⇒ N90
| "091"%byte ⇒ N91
| "092"%byte ⇒ N92
| "093"%byte ⇒ N93
| "094"%byte ⇒ N94
| "095"%byte ⇒ N95
| "096"%byte ⇒ N96
| "097"%byte ⇒ N97
| "098"%byte ⇒ N98
| "099"%byte ⇒ N99
| "100"%byte ⇒ N100
| "101"%byte ⇒ N101
| "102"%byte ⇒ N102
| "103"%byte ⇒ N103
| "104"%byte ⇒ N104
| "105"%byte ⇒ N105
| "106"%byte ⇒ N106
| "107"%byte ⇒ N107
| "108"%byte ⇒ N108
| "109"%byte ⇒ N109
| "110"%byte ⇒ N110
| "111"%byte ⇒ N111
| "112"%byte ⇒ N112
| "113"%byte ⇒ N113
| "114"%byte ⇒ N114
| "115"%byte ⇒ N115
| "116"%byte ⇒ N116
| "117"%byte ⇒ N117
| "118"%byte ⇒ N118
| "119"%byte ⇒ N119
| "120"%byte ⇒ N120
| "121"%byte ⇒ N121
| "122"%byte ⇒ N122
| "123"%byte ⇒ N123
| "124"%byte ⇒ N124
| "125"%byte ⇒ N125
| "126"%byte ⇒ N126
| "127"%byte ⇒ N127
| "128"%byte ⇒ N128
| "129"%byte ⇒ N129
| "130"%byte ⇒ N130
| "131"%byte ⇒ N131
| "132"%byte ⇒ N132
| "133"%byte ⇒ N133
| "134"%byte ⇒ N134
| "135"%byte ⇒ N135
| "136"%byte ⇒ N136
| "137"%byte ⇒ N137
| "138"%byte ⇒ N138
| "139"%byte ⇒ N139
| "140"%byte ⇒ N140
| "141"%byte ⇒ N141
| "142"%byte ⇒ N142
| "143"%byte ⇒ N143
| "144"%byte ⇒ N144
| "145"%byte ⇒ N145
| "146"%byte ⇒ N146
| "147"%byte ⇒ N147
| "148"%byte ⇒ N148
| "149"%byte ⇒ N149
| "150"%byte ⇒ N150
| "151"%byte ⇒ N151
| "152"%byte ⇒ N152
| "153"%byte ⇒ N153
| "154"%byte ⇒ N154
| "155"%byte ⇒ N155
| "156"%byte ⇒ N156
| "157"%byte ⇒ N157
| "158"%byte ⇒ N158
| "159"%byte ⇒ N159
| "160"%byte ⇒ N160
| "161"%byte ⇒ N161
| "162"%byte ⇒ N162
| "163"%byte ⇒ N163
| "164"%byte ⇒ N164
| "165"%byte ⇒ N165
| "166"%byte ⇒ N166
| "167"%byte ⇒ N167
| "168"%byte ⇒ N168
| "169"%byte ⇒ N169
| "170"%byte ⇒ N170
| "171"%byte ⇒ N171
| "172"%byte ⇒ N172
| "173"%byte ⇒ N173
| "174"%byte ⇒ N174
| "175"%byte ⇒ N175
| "176"%byte ⇒ N176
| "177"%byte ⇒ N177
| "178"%byte ⇒ N178
| "179"%byte ⇒ N179
| "180"%byte ⇒ N180
| "181"%byte ⇒ N181
| "182"%byte ⇒ N182
| "183"%byte ⇒ N183
| "184"%byte ⇒ N184
| "185"%byte ⇒ N185
| "186"%byte ⇒ N186
| "187"%byte ⇒ N187
| "188"%byte ⇒ N188
| "189"%byte ⇒ N189
| "190"%byte ⇒ N190
| "191"%byte ⇒ N191
| "192"%byte ⇒ N192
| "193"%byte ⇒ N193
| "194"%byte ⇒ N194
| "195"%byte ⇒ N195
| "196"%byte ⇒ N196
| "197"%byte ⇒ N197
| "198"%byte ⇒ N198
| "199"%byte ⇒ N199
| "200"%byte ⇒ N200
| "201"%byte ⇒ N201
| "202"%byte ⇒ N202
| "203"%byte ⇒ N203
| "204"%byte ⇒ N204
| "205"%byte ⇒ N205
| "206"%byte ⇒ N206
| "207"%byte ⇒ N207
| "208"%byte ⇒ N208
| "209"%byte ⇒ N209
| "210"%byte ⇒ N210
| "211"%byte ⇒ N211
| "212"%byte ⇒ N212
| "213"%byte ⇒ N213
| "214"%byte ⇒ N214
| "215"%byte ⇒ N215
| "216"%byte ⇒ N216
| "217"%byte ⇒ N217
| "218"%byte ⇒ N218
| "219"%byte ⇒ N219
| "220"%byte ⇒ N220
| "221"%byte ⇒ N221
| "222"%byte ⇒ N222
| "223"%byte ⇒ N223
| "224"%byte ⇒ N224
| "225"%byte ⇒ N225
| "226"%byte ⇒ N226
| "227"%byte ⇒ N227
| "228"%byte ⇒ N228
| "229"%byte ⇒ N229
| "230"%byte ⇒ N230
| "231"%byte ⇒ N231
| "232"%byte ⇒ N232
| "233"%byte ⇒ N233
| "234"%byte ⇒ N234
| "235"%byte ⇒ N235
| "236"%byte ⇒ N236
| "237"%byte ⇒ N237
| "238"%byte ⇒ N238
| "239"%byte ⇒ N239
| "240"%byte ⇒ N240
| "241"%byte ⇒ N241
| "242"%byte ⇒ N242
| "243"%byte ⇒ N243
| "244"%byte ⇒ N244
| "245"%byte ⇒ N245
| "246"%byte ⇒ N246
| "247"%byte ⇒ N247
| "248"%byte ⇒ N248
| "249"%byte ⇒ N249
| "250"%byte ⇒ N250
| "251"%byte ⇒ N251
| "252"%byte ⇒ N252
| "253"%byte ⇒ N253
| "254"%byte ⇒ N254
| "255"%byte ⇒ N255
end.
End ByteN.
Definition eqb (x y : byte) :=
N.eqb (ByteN.to_N x) (ByteN.to_N y).
Definition compare (x y : byte) :=
N.compare (ByteN.to_N x) (ByteN.to_N y).