Library MetaRocq.Utils.ByteCompare

From Stdlib Require Import Strings.Byte NArith.BinNat.


Module ByteN.
Definition := 0%N.
Definition := 1%N.
Definition := 2%N.
Definition := 3%N.
Definition := 4%N.
Definition := 5%N.
Definition := 6%N.
Definition := 7%N.
Definition := 8%N.
Definition := 9%N.
Definition := 10%N.
Definition := 11%N.
Definition := 12%N.
Definition := 13%N.
Definition := 14%N.
Definition := 15%N.
Definition := 16%N.
Definition := 17%N.
Definition := 18%N.
Definition := 19%N.
Definition := 20%N.
Definition := 21%N.
Definition := 22%N.
Definition := 23%N.
Definition := 24%N.
Definition := 25%N.
Definition := 26%N.
Definition := 27%N.
Definition := 28%N.
Definition := 29%N.
Definition := 30%N.
Definition := 31%N.
Definition := 32%N.
Definition := 33%N.
Definition := 34%N.
Definition := 35%N.
Definition := 36%N.
Definition := 37%N.
Definition := 38%N.
Definition := 39%N.
Definition := 40%N.
Definition := 41%N.
Definition := 42%N.
Definition := 43%N.
Definition := 44%N.
Definition := 45%N.
Definition := 46%N.
Definition := 47%N.
Definition := 48%N.
Definition := 49%N.
Definition := 50%N.
Definition := 51%N.
Definition := 52%N.
Definition := 53%N.
Definition := 54%N.
Definition := 55%N.
Definition := 56%N.
Definition := 57%N.
Definition := 58%N.
Definition := 59%N.
Definition := 60%N.
Definition := 61%N.
Definition := 62%N.
Definition := 63%N.
Definition := 64%N.
Definition := 65%N.
Definition := 66%N.
Definition := 67%N.
Definition := 68%N.
Definition := 69%N.
Definition := 70%N.
Definition := 71%N.
Definition := 72%N.
Definition := 73%N.
Definition := 74%N.
Definition := 75%N.
Definition := 76%N.
Definition := 77%N.
Definition := 78%N.
Definition := 79%N.
Definition := 80%N.
Definition := 81%N.
Definition := 82%N.
Definition := 83%N.
Definition := 84%N.
Definition := 85%N.
Definition := 86%N.
Definition := 87%N.
Definition := 88%N.
Definition := 89%N.
Definition := 90%N.
Definition := 91%N.
Definition := 92%N.
Definition := 93%N.
Definition := 94%N.
Definition := 95%N.
Definition := 96%N.
Definition := 97%N.
Definition := 98%N.
Definition := 99%N.
Definition := 100%N.
Definition := 101%N.
Definition := 102%N.
Definition := 103%N.
Definition := 104%N.
Definition := 105%N.
Definition := 106%N.
Definition := 107%N.
Definition := 108%N.
Definition := 109%N.
Definition := 110%N.
Definition := 111%N.
Definition := 112%N.
Definition := 113%N.
Definition := 114%N.
Definition := 115%N.
Definition := 116%N.
Definition := 117%N.
Definition := 118%N.
Definition := 119%N.
Definition := 120%N.
Definition := 121%N.
Definition := 122%N.
Definition := 123%N.
Definition := 124%N.
Definition := 125%N.
Definition := 126%N.
Definition := 127%N.
Definition := 128%N.
Definition := 129%N.
Definition := 130%N.
Definition := 131%N.
Definition := 132%N.
Definition := 133%N.
Definition := 134%N.
Definition := 135%N.
Definition := 136%N.
Definition := 137%N.
Definition := 138%N.
Definition := 139%N.
Definition := 140%N.
Definition := 141%N.
Definition := 142%N.
Definition := 143%N.
Definition := 144%N.
Definition := 145%N.
Definition := 146%N.
Definition := 147%N.
Definition := 148%N.
Definition := 149%N.
Definition := 150%N.
Definition := 151%N.
Definition := 152%N.
Definition := 153%N.
Definition := 154%N.
Definition := 155%N.
Definition := 156%N.
Definition := 157%N.
Definition := 158%N.
Definition := 159%N.
Definition := 160%N.
Definition := 161%N.
Definition := 162%N.
Definition := 163%N.
Definition := 164%N.
Definition := 165%N.
Definition := 166%N.
Definition := 167%N.
Definition := 168%N.
Definition := 169%N.
Definition := 170%N.
Definition := 171%N.
Definition := 172%N.
Definition := 173%N.
Definition := 174%N.
Definition := 175%N.
Definition := 176%N.
Definition := 177%N.
Definition := 178%N.
Definition := 179%N.
Definition := 180%N.
Definition := 181%N.
Definition := 182%N.
Definition := 183%N.
Definition := 184%N.
Definition := 185%N.
Definition := 186%N.
Definition := 187%N.
Definition := 188%N.
Definition := 189%N.
Definition := 190%N.
Definition := 191%N.
Definition := 192%N.
Definition := 193%N.
Definition := 194%N.
Definition := 195%N.
Definition := 196%N.
Definition := 197%N.
Definition := 198%N.
Definition := 199%N.
Definition := 200%N.
Definition := 201%N.
Definition := 202%N.
Definition := 203%N.
Definition := 204%N.
Definition := 205%N.
Definition := 206%N.
Definition := 207%N.
Definition := 208%N.
Definition := 209%N.
Definition := 210%N.
Definition := 211%N.
Definition := 212%N.
Definition := 213%N.
Definition := 214%N.
Definition := 215%N.
Definition := 216%N.
Definition := 217%N.
Definition := 218%N.
Definition := 219%N.
Definition := 220%N.
Definition := 221%N.
Definition := 222%N.
Definition := 223%N.
Definition := 224%N.
Definition := 225%N.
Definition := 226%N.
Definition := 227%N.
Definition := 228%N.
Definition := 229%N.
Definition := 230%N.
Definition := 231%N.
Definition := 232%N.
Definition := 233%N.
Definition := 234%N.
Definition := 235%N.
Definition := 236%N.
Definition := 237%N.
Definition := 238%N.
Definition := 239%N.
Definition := 240%N.
Definition := 241%N.
Definition := 242%N.
Definition := 243%N.
Definition := 244%N.
Definition := 245%N.
Definition := 246%N.
Definition := 247%N.
Definition := 248%N.
Definition := 249%N.
Definition := 250%N.
Definition := 251%N.
Definition := 252%N.
Definition := 253%N.
Definition := 254%N.
Definition := 255%N.

Definition to_N (x : byte) :=
  match x with
  | "000"%byte
  | "001"%byte
  | "002"%byte
  | "003"%byte
  | "004"%byte
  | "005"%byte
  | "006"%byte
  | "007"%byte
  | "008"%byte
  | "009"%byte
  | "010"%byte
  | "011"%byte
  | "012"%byte
  | "013"%byte
  | "014"%byte
  | "015"%byte
  | "016"%byte
  | "017"%byte
  | "018"%byte
  | "019"%byte
  | "020"%byte
  | "021"%byte
  | "022"%byte
  | "023"%byte
  | "024"%byte
  | "025"%byte
  | "026"%byte
  | "027"%byte
  | "028"%byte
  | "029"%byte
  | "030"%byte
  | "031"%byte
  | "032"%byte
  | "033"%byte
  | "034"%byte
  | "035"%byte
  | "036"%byte
  | "037"%byte
  | "038"%byte
  | "039"%byte
  | "040"%byte
  | "041"%byte
  | "042"%byte
  | "043"%byte
  | "044"%byte
  | "045"%byte
  | "046"%byte
  | "047"%byte
  | "048"%byte
  | "049"%byte
  | "050"%byte
  | "051"%byte
  | "052"%byte
  | "053"%byte
  | "054"%byte
  | "055"%byte
  | "056"%byte
  | "057"%byte
  | "058"%byte
  | "059"%byte
  | "060"%byte
  | "061"%byte
  | "062"%byte
  | "063"%byte
  | "064"%byte
  | "065"%byte
  | "066"%byte
  | "067"%byte
  | "068"%byte
  | "069"%byte
  | "070"%byte
  | "071"%byte
  | "072"%byte
  | "073"%byte
  | "074"%byte
  | "075"%byte
  | "076"%byte
  | "077"%byte
  | "078"%byte
  | "079"%byte
  | "080"%byte
  | "081"%byte
  | "082"%byte
  | "083"%byte
  | "084"%byte
  | "085"%byte
  | "086"%byte
  | "087"%byte
  | "088"%byte
  | "089"%byte
  | "090"%byte
  | "091"%byte
  | "092"%byte
  | "093"%byte
  | "094"%byte
  | "095"%byte
  | "096"%byte
  | "097"%byte
  | "098"%byte
  | "099"%byte
  | "100"%byte
  | "101"%byte
  | "102"%byte
  | "103"%byte
  | "104"%byte
  | "105"%byte
  | "106"%byte
  | "107"%byte
  | "108"%byte
  | "109"%byte
  | "110"%byte
  | "111"%byte
  | "112"%byte
  | "113"%byte
  | "114"%byte
  | "115"%byte
  | "116"%byte
  | "117"%byte
  | "118"%byte
  | "119"%byte
  | "120"%byte
  | "121"%byte
  | "122"%byte
  | "123"%byte
  | "124"%byte
  | "125"%byte
  | "126"%byte
  | "127"%byte
  | "128"%byte
  | "129"%byte
  | "130"%byte
  | "131"%byte
  | "132"%byte
  | "133"%byte
  | "134"%byte
  | "135"%byte
  | "136"%byte
  | "137"%byte
  | "138"%byte
  | "139"%byte
  | "140"%byte
  | "141"%byte
  | "142"%byte
  | "143"%byte
  | "144"%byte
  | "145"%byte
  | "146"%byte
  | "147"%byte
  | "148"%byte
  | "149"%byte
  | "150"%byte
  | "151"%byte
  | "152"%byte
  | "153"%byte
  | "154"%byte
  | "155"%byte
  | "156"%byte
  | "157"%byte
  | "158"%byte
  | "159"%byte
  | "160"%byte
  | "161"%byte
  | "162"%byte
  | "163"%byte
  | "164"%byte
  | "165"%byte
  | "166"%byte
  | "167"%byte
  | "168"%byte
  | "169"%byte
  | "170"%byte
  | "171"%byte
  | "172"%byte
  | "173"%byte
  | "174"%byte
  | "175"%byte
  | "176"%byte
  | "177"%byte
  | "178"%byte
  | "179"%byte
  | "180"%byte
  | "181"%byte
  | "182"%byte
  | "183"%byte
  | "184"%byte
  | "185"%byte
  | "186"%byte
  | "187"%byte
  | "188"%byte
  | "189"%byte
  | "190"%byte
  | "191"%byte
  | "192"%byte
  | "193"%byte
  | "194"%byte
  | "195"%byte
  | "196"%byte
  | "197"%byte
  | "198"%byte
  | "199"%byte
  | "200"%byte
  | "201"%byte
  | "202"%byte
  | "203"%byte
  | "204"%byte
  | "205"%byte
  | "206"%byte
  | "207"%byte
  | "208"%byte
  | "209"%byte
  | "210"%byte
  | "211"%byte
  | "212"%byte
  | "213"%byte
  | "214"%byte
  | "215"%byte
  | "216"%byte
  | "217"%byte
  | "218"%byte
  | "219"%byte
  | "220"%byte
  | "221"%byte
  | "222"%byte
  | "223"%byte
  | "224"%byte
  | "225"%byte
  | "226"%byte
  | "227"%byte
  | "228"%byte
  | "229"%byte
  | "230"%byte
  | "231"%byte
  | "232"%byte
  | "233"%byte
  | "234"%byte
  | "235"%byte
  | "236"%byte
  | "237"%byte
  | "238"%byte
  | "239"%byte
  | "240"%byte
  | "241"%byte
  | "242"%byte
  | "243"%byte
  | "244"%byte
  | "245"%byte
  | "246"%byte
  | "247"%byte
  | "248"%byte
  | "249"%byte
  | "250"%byte
  | "251"%byte
  | "252"%byte
  | "253"%byte
  | "254"%byte
  | "255"%byte
  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).