• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
      • Zfc
      • Acre
      • Milawa
      • Smtlink
      • Abnf
        • Deftreeops
        • Defdefparse
        • Defgrammar
        • Tree-utilities
        • Notation
          • Syntax-abstraction
          • Semantics
          • Abstract-syntax
            • Convenience-constructors
            • Num-val
            • Char-val
              • Char-val-case
              • Char-val-fix
              • Char-val-equiv
              • Char-val-p
              • Char-val-insensitive
              • Char-val-sensitive
              • Char-val-kind
            • Repeat-range
            • Rulename
            • Rule
            • Rulename-option
            • Num-base
            • Rule-option
            • Prose-val
            • Rulelist
            • Char-val-set
            • Rulename-set
            • Rulename-list
            • Grammar
            • Alt/conc/rep/elem
          • Core-rules
          • Concrete-syntax
        • Grammar-parser
        • Meta-circular-validation
        • Parsing-primitives-defresult
        • Parsing-primitives-seq
        • Operations
        • Examples
        • Differences-with-paper
        • Constructor-utilities
        • Grammar-printer
        • Parsing-tools
      • Vwsim
      • Isar
      • Wp-gen
      • Dimacs-reader
      • Pfcs
      • Legacy-defrstobj
      • Proof-checker-array
      • Soft
      • C
      • Farray
      • Rp-rewriter
      • Instant-runoff-voting
      • Imp-language
      • Sidekick
      • Leftist-trees
      • Java
      • Taspi
      • Bitcoin
      • Riscv
      • Des
      • Ethereum
      • X86isa
      • Sha-2
      • Yul
      • Zcash
      • Proof-checker-itp13
      • Regex
      • ACL2-programming-language
      • Json
      • Jfkr
      • Equational
      • Cryptography
      • Poseidon
      • Where-do-i-place-my-book
      • Axe
      • Bigmems
      • Builtins
      • Execloader
      • Aleo
      • Solidity
      • Paco
      • Concurrent-programs
      • Bls12-377-curves
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Math
    • Testing-utilities
  • Abstract-syntax

Char-val

Fixtype of character value notations.

This is a tagged union type, introduced by fty::deftagsum.

Member Tags → Types
:sensitive → char-val-sensitive
:insensitive → char-val-insensitive

In the abstract syntax, we use character strings for the literal text strings described in [RFC:2.3] and by the rule char-val (and sub-rules) in [RFC:4].

We tag strings with an indication of their case sensitivity, corresponding to the %s and %i notations.

We also keep information about whether case-insensitive strings have an explicit %i prefix or not. Even though this is irrelevant semantically, we prefer to retain that information from the concrete syntax (e.g. for better pretty-printing), instead of abstracting it away.

We abstract away the restriction that quoted strings include only certain characters (which all are ACL2 characters). This restriction is captured by the notion of well-formed character value notations.

Subtopics

Char-val-case
Case macro for the different kinds of char-val structures.
Char-val-fix
Fixing function for char-val structures.
Char-val-equiv
Basic equivalence relation for char-val structures.
Char-val-p
Recognizer for char-val structures.
Char-val-insensitive
Char-val-sensitive
Char-val-kind
Get the kind (tag) of a char-val structure.