sig
  type cp = int
  val is_cp : int -> bool
  val is_scalar_value : int -> bool
  module Cpmap :
    sig
      type key = cp
      type +'a t
      val empty : 'a t
      val is_empty : 'a t -> bool
      val mem : key -> 'a t -> bool
      val add : key -> '-> 'a t -> 'a t
      val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
      val singleton : key -> '-> 'a t
      val remove : key -> 'a t -> 'a t
      val merge :
        (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
      val union : (key -> '-> '-> 'a option) -> 'a t -> 'a t -> 'a t
      val compare : ('-> '-> int) -> 'a t -> 'a t -> int
      val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
      val iter : (key -> '-> unit) -> 'a t -> unit
      val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b
      val for_all : (key -> '-> bool) -> 'a t -> bool
      val exists : (key -> '-> bool) -> 'a t -> bool
      val filter : (key -> '-> bool) -> 'a t -> 'a t
      val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t
      val cardinal : 'a t -> int
      val bindings : 'a t -> (key * 'a) list
      val min_binding : 'a t -> key * 'a
      val min_binding_opt : 'a t -> (key * 'a) option
      val max_binding : 'a t -> key * 'a
      val max_binding_opt : 'a t -> (key * 'a) option
      val choose : 'a t -> key * 'a
      val choose_opt : 'a t -> (key * 'a) option
      val split : key -> 'a t -> 'a t * 'a option * 'a t
      val find : key -> 'a t -> 'a
      val find_opt : key -> 'a t -> 'a option
      val find_first : (key -> bool) -> 'a t -> key * 'a
      val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
      val find_last : (key -> bool) -> 'a t -> key * 'a
      val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
      val map : ('-> 'b) -> 'a t -> 'b t
      val mapi : (key -> '-> 'b) -> 'a t -> 'b t
      val to_seq : 'a t -> (key * 'a) Seq.t
      val to_seq_from : key -> 'a t -> (key * 'a) Seq.t
      val add_seq : (key * 'a) Seq.t -> 'a t -> 'a t
      val of_seq : (key * 'a) Seq.t -> 'a t
    end
  type props
  type 'a prop
  val find : Uucd.props -> 'Uucd.prop -> 'a option
  val unknown_prop : string * string -> string Uucd.prop
  val age : [ `Unassigned | `Version of int * int ] Uucd.prop
  val alphabetic : bool Uucd.prop
  val ascii_hex_digit : bool Uucd.prop
  val bidi_class :
    [ `AL
    | `AN
    | `B
    | `BN
    | `CS
    | `EN
    | `ES
    | `ET
    | `FSI
    | `L
    | `LRE
    | `LRI
    | `LRO
    | `NSM
    | `ON
    | `PDF
    | `PDI
    | `R
    | `RLE
    | `RLI
    | `RLO
    | `S
    | `WS ] Uucd.prop
  val bidi_control : bool Uucd.prop
  val bidi_mirrored : bool Uucd.prop
  val bidi_mirroring_glyph : Uucd.cp option Uucd.prop
  val bidi_paired_bracket : [ `Cp of Uucd.cp | `Self ] Uucd.prop
  val bidi_paired_bracket_type : [ `C | `N | `O ] Uucd.prop
  val block :
    [ `ASCII
    | `Adlam
    | `Aegean_Numbers
    | `Ahom
    | `Alchemical
    | `Alphabetic_PF
    | `Anatolian_Hieroglyphs
    | `Ancient_Greek_Music
    | `Ancient_Greek_Numbers
    | `Ancient_Symbols
    | `Arabic
    | `Arabic_Ext_A
    | `Arabic_Math
    | `Arabic_PF_A
    | `Arabic_PF_B
    | `Arabic_Sup
    | `Armenian
    | `Arrows
    | `Avestan
    | `Balinese
    | `Bamum
    | `Bamum_Sup
    | `Bassa_Vah
    | `Batak
    | `Bengali
    | `Bhaiksuki
    | `Block_Elements
    | `Bopomofo
    | `Bopomofo_Ext
    | `Box_Drawing
    | `Brahmi
    | `Braille
    | `Buginese
    | `Buhid
    | `Byzantine_Music
    | `CJK
    | `CJK_Compat
    | `CJK_Compat_Forms
    | `CJK_Compat_Ideographs
    | `CJK_Compat_Ideographs_Sup
    | `CJK_Ext_A
    | `CJK_Ext_B
    | `CJK_Ext_C
    | `CJK_Ext_D
    | `CJK_Ext_E
    | `CJK_Ext_F
    | `CJK_Radicals_Sup
    | `CJK_Strokes
    | `CJK_Symbols
    | `Carian
    | `Caucasian_Albanian
    | `Chakma
    | `Cham
    | `Cherokee
    | `Cherokee_Sup
    | `Chess_Symbols
    | `Compat_Jamo
    | `Control_Pictures
    | `Coptic
    | `Coptic_Epact_Numbers
    | `Counting_Rod
    | `Cuneiform
    | `Cuneiform_Numbers
    | `Currency_Symbols
    | `Cypriot_Syllabary
    | `Cyrillic
    | `Cyrillic_Ext_A
    | `Cyrillic_Ext_B
    | `Cyrillic_Ext_C
    | `Cyrillic_Sup
    | `Deseret
    | `Devanagari
    | `Devanagari_Ext
    | `Diacriticals
    | `Diacriticals_Ext
    | `Diacriticals_For_Symbols
    | `Diacriticals_Sup
    | `Dingbats
    | `Dogra
    | `Domino
    | `Duployan
    | `Early_Dynastic_Cuneiform
    | `Egyptian_Hieroglyph_Format_Controls
    | `Egyptian_Hieroglyphs
    | `Elbasan
    | `Elymaic
    | `Emoticons
    | `Enclosed_Alphanum
    | `Enclosed_Alphanum_Sup
    | `Enclosed_CJK
    | `Enclosed_Ideographic_Sup
    | `Ethiopic
    | `Ethiopic_Ext
    | `Ethiopic_Ext_A
    | `Ethiopic_Sup
    | `Geometric_Shapes
    | `Geometric_Shapes_Ext
    | `Georgian
    | `Georgian_Ext
    | `Georgian_Sup
    | `Glagolitic
    | `Glagolitic_Sup
    | `Gothic
    | `Grantha
    | `Greek
    | `Greek_Ext
    | `Gujarati
    | `Gunjala_Gondi
    | `Gurmukhi
    | `Half_And_Full_Forms
    | `Half_Marks
    | `Hangul
    | `Hanifi_Rohingya
    | `Hanunoo
    | `Hatran
    | `Hebrew
    | `High_PU_Surrogates
    | `High_Surrogates
    | `Hiragana
    | `IDC
    | `IPA_Ext
    | `Ideographic_Symbols
    | `Imperial_Aramaic
    | `Indic_Number_Forms
    | `Indic_Siyaq_Numbers
    | `Inscriptional_Pahlavi
    | `Inscriptional_Parthian
    | `Jamo
    | `Jamo_Ext_A
    | `Jamo_Ext_B
    | `Javanese
    | `Kaithi
    | `Kana_Ext_A
    | `Kana_Sup
    | `Kanbun
    | `Kangxi
    | `Kannada
    | `Katakana
    | `Katakana_Ext
    | `Kayah_Li
    | `Kharoshthi
    | `Khmer
    | `Khmer_Symbols
    | `Khojki
    | `Khudawadi
    | `Lao
    | `Latin_1_Sup
    | `Latin_Ext_A
    | `Latin_Ext_Additional
    | `Latin_Ext_B
    | `Latin_Ext_C
    | `Latin_Ext_D
    | `Latin_Ext_E
    | `Lepcha
    | `Letterlike_Symbols
    | `Limbu
    | `Linear_A
    | `Linear_B_Ideograms
    | `Linear_B_Syllabary
    | `Lisu
    | `Low_Surrogates
    | `Lycian
    | `Lydian
    | `Mahajani
    | `Mahjong
    | `Makasar
    | `Malayalam
    | `Mandaic
    | `Manichaean
    | `Marchen
    | `Masaram_Gondi
    | `Math_Alphanum
    | `Math_Operators
    | `Mayan_Numerals
    | `Medefaidrin
    | `Meetei_Mayek
    | `Meetei_Mayek_Ext
    | `Mende_Kikakui
    | `Meroitic_Cursive
    | `Meroitic_Hieroglyphs
    | `Miao
    | `Misc_Arrows
    | `Misc_Math_Symbols_A
    | `Misc_Math_Symbols_B
    | `Misc_Pictographs
    | `Misc_Symbols
    | `Misc_Technical
    | `Modi
    | `Modifier_Letters
    | `Modifier_Tone_Letters
    | `Mongolian
    | `Mongolian_Sup
    | `Mro
    | `Multani
    | `Music
    | `Myanmar
    | `Myanmar_Ext_A
    | `Myanmar_Ext_B
    | `NB
    | `NKo
    | `Nabataean
    | `Nandinagari
    | `New_Tai_Lue
    | `Newa
    | `Number_Forms
    | `Nushu
    | `Nyiakeng_Puachue_Hmong
    | `OCR
    | `Ogham
    | `Ol_Chiki
    | `Old_Hungarian
    | `Old_Italic
    | `Old_North_Arabian
    | `Old_Permic
    | `Old_Persian
    | `Old_Sogdian
    | `Old_South_Arabian
    | `Old_Turkic
    | `Oriya
    | `Ornamental_Dingbats
    | `Osage
    | `Osmanya
    | `Ottoman_Siyaq_Numbers
    | `PUA
    | `Pahawh_Hmong
    | `Palmyrene
    | `Pau_Cin_Hau
    | `Phags_Pa
    | `Phaistos
    | `Phoenician
    | `Phonetic_Ext
    | `Phonetic_Ext_Sup
    | `Playing_Cards
    | `Psalter_Pahlavi
    | `Punctuation
    | `Rejang
    | `Rumi
    | `Runic
    | `Samaritan
    | `Saurashtra
    | `Sharada
    | `Shavian
    | `Shorthand_Format_Controls
    | `Siddham
    | `Sinhala
    | `Sinhala_Archaic_Numbers
    | `Small_Forms
    | `Small_Kana_Ext
    | `Sogdian
    | `Sora_Sompeng
    | `Soyombo
    | `Specials
    | `Sundanese
    | `Sundanese_Sup
    | `Sup_Arrows_A
    | `Sup_Arrows_B
    | `Sup_Arrows_C
    | `Sup_Math_Operators
    | `Sup_PUA_A
    | `Sup_PUA_B
    | `Sup_Punctuation
    | `Sup_Symbols_And_Pictographs
    | `Super_And_Sub
    | `Sutton_SignWriting
    | `Syloti_Nagri
    | `Symbols_And_Pictographs_Ext_A
    | `Syriac
    | `Syriac_Sup
    | `Tagalog
    | `Tagbanwa
    | `Tags
    | `Tai_Le
    | `Tai_Tham
    | `Tai_Viet
    | `Tai_Xuan_Jing
    | `Takri
    | `Tamil
    | `Tamil_Sup
    | `Tangut
    | `Tangut_Components
    | `Telugu
    | `Thaana
    | `Thai
    | `Tibetan
    | `Tifinagh
    | `Tirhuta
    | `Transport_And_Map
    | `UCAS
    | `UCAS_Ext
    | `Ugaritic
    | `VS
    | `VS_Sup
    | `Vai
    | `Vedic_Ext
    | `Vertical_Forms
    | `Wancho
    | `Warang_Citi
    | `Yi_Radicals
    | `Yi_Syllables
    | `Yijing
    | `Zanabazar_Square ] Uucd.prop
  val canonical_combining_class : int Uucd.prop
  val cased : bool Uucd.prop
  val case_folding : [ `Cps of Uucd.cp list | `Self ] Uucd.prop
  val case_ignorable : bool Uucd.prop
  val changes_when_casefolded : bool Uucd.prop
  val changes_when_casemapped : bool Uucd.prop
  val changes_when_lowercased : bool Uucd.prop
  val changes_when_nfkc_casefolded : bool Uucd.prop
  val changes_when_titlecased : bool Uucd.prop
  val changes_when_uppercased : bool Uucd.prop
  val composition_exclusion : bool Uucd.prop
  val dash : bool Uucd.prop
  val decomposition_mapping : [ `Cps of Uucd.cp list | `Self ] Uucd.prop
  val decomposition_type :
    [ `Can
    | `Com
    | `Enc
    | `Fin
    | `Font
    | `Fra
    | `Init
    | `Iso
    | `Med
    | `Nar
    | `Nb
    | `None
    | `Sml
    | `Sqr
    | `Sub
    | `Sup
    | `Vert
    | `Wide ] Uucd.prop
  val default_ignorable_code_point : bool Uucd.prop
  val deprecated : bool Uucd.prop
  val diacritic : bool Uucd.prop
  val east_asian_width : [ `A | `F | `H | `N | `Na | `W ] Uucd.prop
  val equivalent_unified_ideograph : Uucd.cp option Uucd.prop
  val expands_on_nfc : bool Uucd.prop
  val expands_on_nfd : bool Uucd.prop
  val expands_on_nfkc : bool Uucd.prop
  val expands_on_nfkd : bool Uucd.prop
  val extender : bool Uucd.prop
  val fc_nfkc_closure : [ `Cps of Uucd.cp list | `Self ] Uucd.prop
  val full_composition_exclusion : bool Uucd.prop
  val general_category :
    [ `Cc
    | `Cf
    | `Cn
    | `Co
    | `Cs
    | `Ll
    | `Lm
    | `Lo
    | `Lt
    | `Lu
    | `Mc
    | `Me
    | `Mn
    | `Nd
    | `Nl
    | `No
    | `Pc
    | `Pd
    | `Pe
    | `Pf
    | `Pi
    | `Po
    | `Ps
    | `Sc
    | `Sk
    | `Sm
    | `So
    | `Zl
    | `Zp
    | `Zs ] Uucd.prop
  val grapheme_base : bool Uucd.prop
  val grapheme_cluster_break :
    [ `CN
    | `CR
    | `EB
    | `EBG
    | `EM
    | `EX
    | `GAZ
    | `L
    | `LF
    | `LV
    | `LVT
    | `PP
    | `RI
    | `SM
    | `T
    | `V
    | `XX
    | `ZWJ ] Uucd.prop
  val grapheme_extend : bool Uucd.prop
  val grapheme_link : bool Uucd.prop
  val hangul_syllable_type : [ `L | `LV | `LVT | `NA | `T | `V ] Uucd.prop
  val hex_digit : bool Uucd.prop
  val hyphen : bool Uucd.prop
  val id_continue : bool Uucd.prop
  val id_start : bool Uucd.prop
  val ideographic : bool Uucd.prop
  val ids_binary_operator : bool Uucd.prop
  val ids_trinary_operator : bool Uucd.prop
  val indic_syllabic_category :
    [ `Avagraha
    | `Bindu
    | `Brahmi_Joining_Number
    | `Cantillation_Mark
    | `Consonant
    | `Consonant_Dead
    | `Consonant_Final
    | `Consonant_Head_Letter
    | `Consonant_Initial_Postfixed
    | `Consonant_Killer
    | `Consonant_Medial
    | `Consonant_Placeholder
    | `Consonant_Preceding_Repha
    | `Consonant_Prefixed
    | `Consonant_Repha
    | `Consonant_Subjoined
    | `Consonant_Succeeding_Repha
    | `Consonant_With_Stacker
    | `Gemination_Mark
    | `Invisible_Stacker
    | `Joiner
    | `Modifying_Letter
    | `Non_Joiner
    | `Nukta
    | `Number
    | `Number_Joiner
    | `Other
    | `Pure_Killer
    | `Register_Shifter
    | `Syllable_Modifier
    | `Tone_Letter
    | `Tone_Mark
    | `Virama
    | `Visarga
    | `Vowel
    | `Vowel_Dependent
    | `Vowel_Independent ] Uucd.prop
  val indic_matra_category :
    [ `Bottom
    | `Bottom_And_Right
    | `Invisible
    | `Left
    | `Left_And_Right
    | `NA
    | `Overstruck
    | `Right
    | `Top
    | `Top_And_Bottom
    | `Top_And_Bottom_And_Right
    | `Top_And_Left
    | `Top_And_Left_And_Right
    | `Top_And_Right
    | `Visual_Order_Left ] Uucd.prop
  val indic_positional_category :
    [ `Bottom
    | `Bottom_And_Right
    | `Left
    | `Left_And_Right
    | `NA
    | `Overstruck
    | `Right
    | `Top
    | `Top_And_Bottom
    | `Top_And_Bottom_And_Right
    | `Top_And_Left
    | `Top_And_Left_And_Right
    | `Top_And_Right
    | `Visual_Order_Left ] Uucd.prop
  val iso_comment : string Uucd.prop
  val jamo_short_name : string Uucd.prop
  val join_control : bool Uucd.prop
  val joining_group :
    [ `African_Feh
    | `African_Noon
    | `African_Qaf
    | `Ain
    | `Alaph
    | `Alef
    | `Alef_Maqsurah
    | `Beh
    | `Beth
    | `Burushaski_Yeh_Barree
    | `Dal
    | `Dalath_Rish
    | `E
    | `Farsi_Yeh
    | `Fe
    | `Feh
    | `Final_Semkath
    | `Gaf
    | `Gamal
    | `Hah
    | `Hamza_On_Heh_Goal
    | `Hanifi_Rohingya_Kinna_Ya
    | `Hanifi_Rohingya_Pa
    | `He
    | `Heh
    | `Heh_Goal
    | `Heth
    | `Kaf
    | `Kaph
    | `Khaph
    | `Knotted_Heh
    | `Lam
    | `Lamadh
    | `Malayalam_Bha
    | `Malayalam_Ja
    | `Malayalam_Lla
    | `Malayalam_Llla
    | `Malayalam_Nga
    | `Malayalam_Nna
    | `Malayalam_Nnna
    | `Malayalam_Nya
    | `Malayalam_Ra
    | `Malayalam_Ssa
    | `Malayalam_Tta
    | `Manichaean_Aleph
    | `Manichaean_Ayin
    | `Manichaean_Beth
    | `Manichaean_Daleth
    | `Manichaean_Dhamedh
    | `Manichaean_Five
    | `Manichaean_Gimel
    | `Manichaean_Heth
    | `Manichaean_Hundred
    | `Manichaean_Kaph
    | `Manichaean_Lamedh
    | `Manichaean_Mem
    | `Manichaean_Nun
    | `Manichaean_One
    | `Manichaean_Pe
    | `Manichaean_Qoph
    | `Manichaean_Resh
    | `Manichaean_Sadhe
    | `Manichaean_Samekh
    | `Manichaean_Taw
    | `Manichaean_Ten
    | `Manichaean_Teth
    | `Manichaean_Thamedh
    | `Manichaean_Twenty
    | `Manichaean_Waw
    | `Manichaean_Yodh
    | `Manichaean_Zayin
    | `Meem
    | `Mim
    | `No_Joining_Group
    | `Noon
    | `Nun
    | `Nya
    | `Pe
    | `Qaf
    | `Qaph
    | `Reh
    | `Reversed_Pe
    | `Rohingya_Yeh
    | `Sad
    | `Sadhe
    | `Seen
    | `Semkath
    | `Shin
    | `Straight_Waw
    | `Swash_Kaf
    | `Syriac_Waw
    | `Tah
    | `Taw
    | `Teh_Marbuta
    | `Teh_Marbuta_Goal
    | `Teth
    | `Waw
    | `Yeh
    | `Yeh_Barree
    | `Yeh_With_Tail
    | `Yudh
    | `Yudh_He
    | `Zain
    | `Zhain ] Uucd.prop
  val joining_type : [ `C | `D | `L | `R | `T | `U ] Uucd.prop
  val line_break :
    [ `AI
    | `AL
    | `B2
    | `BA
    | `BB
    | `BK
    | `CB
    | `CJ
    | `CL
    | `CM
    | `CP
    | `CR
    | `EB
    | `EM
    | `EX
    | `GL
    | `H2
    | `H3
    | `HL
    | `HY
    | `ID
    | `IN
    | `IS
    | `JL
    | `JT
    | `JV
    | `LF
    | `NL
    | `NS
    | `NU
    | `OP
    | `PO
    | `PR
    | `QU
    | `RI
    | `SA
    | `SG
    | `SP
    | `SY
    | `WJ
    | `XX
    | `ZW
    | `ZWJ ] Uucd.prop
  val logical_order_exception : bool Uucd.prop
  val lowercase : bool Uucd.prop
  val lowercase_mapping : [ `Cps of Uucd.cp list | `Self ] Uucd.prop
  val math : bool Uucd.prop
  val name : [ `Name of string | `Pattern of string ] Uucd.prop
  val name_alias :
    (string *
     [ `Abbreviation | `Alternate | `Control | `Correction | `Figment ])
    list Uucd.prop
  val nfc_quick_check : [ `False | `Maybe | `True ] Uucd.prop
  val nfd_quick_check : [ `False | `Maybe | `True ] Uucd.prop
  val nfkc_quick_check : [ `False | `Maybe | `True ] Uucd.prop
  val nfkc_casefold : [ `Cps of Uucd.cp list | `Self ] Uucd.prop
  val nfkd_quick_check : [ `False | `Maybe | `True ] Uucd.prop
  val noncharacter_code_point : bool Uucd.prop
  val numeric_type : [ `De | `Di | `None | `Nu ] Uucd.prop
  val numeric_value : [ `Frac of int * int | `NaN | `Num of int64 ] Uucd.prop
  val other_alphabetic : bool Uucd.prop
  val other_default_ignorable_code_point : bool Uucd.prop
  val other_grapheme_extend : bool Uucd.prop
  val other_id_continue : bool Uucd.prop
  val other_id_start : bool Uucd.prop
  val other_lowercase : bool Uucd.prop
  val other_math : bool Uucd.prop
  val other_uppercase : bool Uucd.prop
  val pattern_syntax : bool Uucd.prop
  val pattern_white_space : bool Uucd.prop
  val prepended_concatenation_mark : bool Uucd.prop
  val quotation_mark : bool Uucd.prop
  val radical : bool Uucd.prop
  val regional_indicator : bool Uucd.prop
  type script =
      [ `Adlm
      | `Aghb
      | `Ahom
      | `Arab
      | `Armi
      | `Armn
      | `Avst
      | `Bali
      | `Bamu
      | `Bass
      | `Batk
      | `Beng
      | `Bhks
      | `Bopo
      | `Brah
      | `Brai
      | `Bugi
      | `Buhd
      | `Cakm
      | `Cans
      | `Cari
      | `Cham
      | `Cher
      | `Copt
      | `Cprt
      | `Cyrl
      | `Deva
      | `Dogr
      | `Dsrt
      | `Dupl
      | `Egyp
      | `Elba
      | `Elym
      | `Ethi
      | `Geor
      | `Glag
      | `Gong
      | `Gonm
      | `Goth
      | `Gran
      | `Grek
      | `Gujr
      | `Guru
      | `Hang
      | `Hani
      | `Hano
      | `Hatr
      | `Hebr
      | `Hira
      | `Hluw
      | `Hmng
      | `Hmnp
      | `Hrkt
      | `Hung
      | `Ital
      | `Java
      | `Kali
      | `Kana
      | `Khar
      | `Khmr
      | `Khoj
      | `Knda
      | `Kthi
      | `Lana
      | `Laoo
      | `Latn
      | `Lepc
      | `Limb
      | `Lina
      | `Linb
      | `Lisu
      | `Lyci
      | `Lydi
      | `Mahj
      | `Maka
      | `Mand
      | `Mani
      | `Marc
      | `Medf
      | `Mend
      | `Merc
      | `Mero
      | `Mlym
      | `Modi
      | `Mong
      | `Mroo
      | `Mtei
      | `Mult
      | `Mymr
      | `Nand
      | `Narb
      | `Nbat
      | `Newa
      | `Nkoo
      | `Nshu
      | `Ogam
      | `Olck
      | `Orkh
      | `Orya
      | `Osge
      | `Osma
      | `Palm
      | `Pauc
      | `Perm
      | `Phag
      | `Phli
      | `Phlp
      | `Phnx
      | `Plrd
      | `Prti
      | `Qaai
      | `Rjng
      | `Rohg
      | `Runr
      | `Samr
      | `Sarb
      | `Saur
      | `Sgnw
      | `Shaw
      | `Shrd
      | `Sidd
      | `Sind
      | `Sinh
      | `Sogd
      | `Sogo
      | `Sora
      | `Soyo
      | `Sund
      | `Sylo
      | `Syrc
      | `Tagb
      | `Takr
      | `Tale
      | `Talu
      | `Taml
      | `Tang
      | `Tavt
      | `Telu
      | `Tfng
      | `Tglg
      | `Thaa
      | `Thai
      | `Tibt
      | `Tirh
      | `Ugar
      | `Vaii
      | `Wara
      | `Wcho
      | `Xpeo
      | `Xsux
      | `Yiii
      | `Zanb
      | `Zinh
      | `Zyyy
      | `Zzzz ]
  val script : Uucd.script Uucd.prop
  val script_extensions : Uucd.script list Uucd.prop
  val sentence_break :
    [ `AT
    | `CL
    | `CR
    | `EX
    | `FO
    | `LE
    | `LF
    | `LO
    | `NU
    | `SC
    | `SE
    | `SP
    | `ST
    | `UP
    | `XX ] Uucd.prop
  val simple_case_folding : [ `Cp of Uucd.cp | `Self ] Uucd.prop
  val simple_lowercase_mapping : [ `Cp of Uucd.cp | `Self ] Uucd.prop
  val simple_titlecase_mapping : [ `Cp of Uucd.cp | `Self ] Uucd.prop
  val simple_uppercase_mapping : [ `Cp of Uucd.cp | `Self ] Uucd.prop
  val soft_dotted : bool Uucd.prop
  val sterm : bool Uucd.prop
  val terminal_punctuation : bool Uucd.prop
  val titlecase_mapping : [ `Cps of Uucd.cp list | `Self ] Uucd.prop
  val uax_42_element :
    [ `Char | `Noncharacter | `Reserved | `Surrogate ] Uucd.prop
  val unicode_1_name : string Uucd.prop
  val unified_ideograph : bool Uucd.prop
  val uppercase : bool Uucd.prop
  val uppercase_mapping : [ `Cps of Uucd.cp list | `Self ] Uucd.prop
  val variation_selector : bool Uucd.prop
  val vertical_orientation : [ `R | `Tr | `Tu | `U ] Uucd.prop
  val white_space : bool Uucd.prop
  val word_break :
    [ `CR
    | `DQ
    | `EB
    | `EBG
    | `EM
    | `EX
    | `Extend
    | `FO
    | `GAZ
    | `HL
    | `KA
    | `LE
    | `LF
    | `MB
    | `ML
    | `MN
    | `NL
    | `NU
    | `RI
    | `SQ
    | `WSegSpace
    | `XX
    | `ZWJ ] Uucd.prop
  val xid_continue : bool Uucd.prop
  val xid_start : bool Uucd.prop
  val kAccountingNumeric : string Uucd.prop
  val kAlternateHanYu : string Uucd.prop
  val kAlternateJEF : string Uucd.prop
  val kAlternateKangXi : string Uucd.prop
  val kAlternateMorohashi : string Uucd.prop
  val kBigFive : string Uucd.prop
  val kCCCII : string Uucd.prop
  val kCNS1986 : string Uucd.prop
  val kCNS1992 : string Uucd.prop
  val kCangjie : string Uucd.prop
  val kCantonese : string Uucd.prop
  val kCheungBauer : string Uucd.prop
  val kCheungBauerIndex : string Uucd.prop
  val kCihaiT : string Uucd.prop
  val kCompatibilityVariant : string Uucd.prop
  val kCowles : string Uucd.prop
  val kDaeJaweon : string Uucd.prop
  val kDefinition : string Uucd.prop
  val kEACC : string Uucd.prop
  val kFenn : string Uucd.prop
  val kFennIndex : string Uucd.prop
  val kFourCornerCode : string Uucd.prop
  val kFrequency : string Uucd.prop
  val kGB0 : string Uucd.prop
  val kGB1 : string Uucd.prop
  val kGB3 : string Uucd.prop
  val kGB5 : string Uucd.prop
  val kGB7 : string Uucd.prop
  val kGB8 : string Uucd.prop
  val kGSR : string Uucd.prop
  val kGradeLevel : string Uucd.prop
  val kHDZRadBreak : string Uucd.prop
  val kHKGlyph : string Uucd.prop
  val kHKSCS : string Uucd.prop
  val kHanYu : string Uucd.prop
  val kHangul : string Uucd.prop
  val kHanyuPinlu : string Uucd.prop
  val kHanyuPinyin : string Uucd.prop
  val kIBMJapan : string Uucd.prop
  val kIICore : string Uucd.prop
  val kIRGDaeJaweon : string Uucd.prop
  val kIRGDaiKanwaZiten : string Uucd.prop
  val kIRGHanyuDaZidian : string Uucd.prop
  val kIRGKangXi : string Uucd.prop
  val kIRG_GSource : string Uucd.prop
  val kIRG_HSource : string Uucd.prop
  val kIRG_JSource : string Uucd.prop
  val kIRG_KPSource : string Uucd.prop
  val kIRG_KSource : string Uucd.prop
  val kIRG_MSource : string Uucd.prop
  val kIRG_TSource : string Uucd.prop
  val kIRG_USource : string Uucd.prop
  val kIRG_VSource : string Uucd.prop
  val kJHJ : string Uucd.prop
  val kJIS0213 : string Uucd.prop
  val kJa : string Uucd.prop
  val kJapaneseKun : string Uucd.prop
  val kJapaneseOn : string Uucd.prop
  val kJinmeiyoKanji : string Uucd.prop
  val kJis0 : string Uucd.prop
  val kJis1 : string Uucd.prop
  val kJoyoKanji : string Uucd.prop
  val kKPS0 : string Uucd.prop
  val kKPS1 : string Uucd.prop
  val kKSC0 : string Uucd.prop
  val kKSC1 : string Uucd.prop
  val kKangXi : string Uucd.prop
  val kKarlgren : string Uucd.prop
  val kKorean : string Uucd.prop
  val kKoreanEducationHanja : string Uucd.prop
  val kKoreanName : string Uucd.prop
  val kLau : string Uucd.prop
  val kMainlandTelegraph : string Uucd.prop
  val kMandarin : string Uucd.prop
  val kMatthews : string Uucd.prop
  val kMeyerWempe : string Uucd.prop
  val kMorohashi : string Uucd.prop
  val kNelson : string Uucd.prop
  val kOtherNumeric : string Uucd.prop
  val kPhonetic : string Uucd.prop
  val kPrimaryNumeric : string Uucd.prop
  val kPseudoGB1 : string Uucd.prop
  val kRSAdobe_Japan1_6 : string Uucd.prop
  val kRSJapanese : string Uucd.prop
  val kRSKanWa : string Uucd.prop
  val kRSKangXi : string Uucd.prop
  val kRSKorean : string Uucd.prop
  val kRSMerged : string Uucd.prop
  val kRSTUnicode : string Uucd.prop
  val kRSUnicode : string Uucd.prop
  val kReading : string Uucd.prop
  val kSBGY : string Uucd.prop
  val kSemanticVariant : string Uucd.prop
  val kSimplifiedVariant : string Uucd.prop
  val kSpecializedSemanticVariant : string Uucd.prop
  val kSrc_NushuDuben : string Uucd.prop
  val kTGH : string Uucd.prop
  val kTGT_MergedSrc : string Uucd.prop
  val kTaiwanTelegraph : string Uucd.prop
  val kTang : string Uucd.prop
  val kTotalStrokes : string Uucd.prop
  val kTraditionalVariant : string Uucd.prop
  val kVietnamese : string Uucd.prop
  val kWubi : string Uucd.prop
  val kXHC1983 : string Uucd.prop
  val kXerox : string Uucd.prop
  val kZVariant : string Uucd.prop
  type block = (Uucd.cp * Uucd.cp) * string
  type named_sequence = string * Uucd.cp list
  type normalization_correction =
      Uucd.cp * Uucd.cp list * Uucd.cp list * (int * int * int)
  type standardized_variant =
      Uucd.cp list * string * [ `Final | `Initial | `Isolate | `Medial ] list
  type cjk_radical = string * Uucd.cp * Uucd.cp
  type emoji_source = Uucd.cp list * int option * int option * int option
  type t = {
    description : string;
    repertoire : Uucd.props Uucd.Cpmap.t;
    blocks : Uucd.block list;
    named_sequences : Uucd.named_sequence list;
    provisional_named_sequences : Uucd.named_sequence list;
    normalization_corrections : Uucd.normalization_correction list;
    standardized_variants : Uucd.standardized_variant list;
    cjk_radicals : Uucd.cjk_radical list;
    emoji_sources : Uucd.emoji_source list;
  }
  val cp_prop : Uucd.t -> Uucd.cp -> 'Uucd.prop -> 'a option
  type src = [ `Channel of Stdlib.in_channel | `String of string ]
  type decoder
  val decoder : [< Uucd.src ] -> Uucd.decoder
  val decode : Uucd.decoder -> [ `Error of string | `Ok of Uucd.t ]
  val decoded_range : Uucd.decoder -> (int * int) * (int * int)
end