• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
      • Zfc
      • Acre
      • Milawa
      • Smtlink
      • Abnf
      • Vwsim
      • Isar
      • Wp-gen
      • Dimacs-reader
      • Pfcs
      • Legacy-defrstobj
      • C
        • Syntax-for-tools
          • Formalized-subset
          • Mapping-to-language-definition
          • Input-files
          • Compilation-database
          • Printer
            • Print-exprs/decls/stmts
            • Print-expr
            • Pristate
            • Print-dec/oct/hex-const
            • Priopt
            • Print-fundef
            • Print-filepath-transunit-map
            • Print-s-char
            • Print-c-char
            • Print-q-char
            • Print-h-char
            • Print-fileset
            • Print-typequal/attribspec-list-list
            • Print-file
            • Print-hex-core-fconst
            • Print-dec-core-fconst
            • Print-ident-list
            • Print-fsuffix
            • Print-oct-digit-achar
            • Print-label-declaration-list
            • Print-hex-frac-const
            • Print-hex-digit-achar
            • Print-dec-frac-const
            • Print-dec-digit-achar
            • Print-asm-clobber-list
            • Print-stringlit-list
            • Print-inc/dec-op-list
            • Print-astring
            • Print-asm-name-spec
            • Print-univ-char-name
            • Print-struni-spec
            • Print-simple-escape
            • Print-label-declaration
            • Print-isuffix-option
            • Print-fsuffix-option
            • Print-extdecl-list
            • Print-eprefix-option
            • Print-dec-expo-option
            • Print-cprefix-option
            • Print-binop
            • Print-attrib-name
            • Print-type-qual
            • Print-s-char-list
            • Print-q-char-list
            • Print-indent
            • Print-ident
            • Print-h-char-list
            • Print-dec-expo-prefix
            • Print-char
            • Print-c-char-list
            • Print-bin-expo-prefix
            • Print-asm-qual-list
            • Print-stringlit
            • Print-stor-spec
            • Print-sign-option
            • Print-oct-escape
            • Print-header-name
            • Print-extdecl
            • Print-escape
              • Print-cconst
              • Print-asm-qual
              • Print-asm-clobber
              • Init-pristate
              • Dec-pristate-indent
              • Print-isuffix
              • Print-fun-spec
              • Print-fconst
              • Print-dec-expo
              • Print-bin-expo
              • Print-unop
              • Print-transunit
              • Print-new-line
              • Print-lsuffix
              • Print-inc/dec-op
              • Print-hex-quad
              • Print-eprefix
              • Print-cprefix
              • Print-usuffix
              • Print-iconst
              • Print-hprefix
              • Print-const
              • Print-comp-stmt
              • Print-hex-digit-achars
              • Print-sign
              • Print-oct-digit-achars
              • Print-dec-digit-achars
              • Print-chars
              • Inc-pristate-indent
              • Print-expr-list
              • Print-struct-declon-list
              • Print-stmt
              • Print-param-declor
              • Print-dirdeclor
              • Default-priopt
              • Print-struct-declor
              • Print-initer
              • Print-decl-inline
              • Print-struct-declon
              • Print-genassoc-list
              • Print-enum-spec
              • Print-absdeclor
              • Print-typequal/attribspec-list
              • Print-desiniter-list
              • Print-const-expr
              • Print-attrib
              • Print-tyname
              • Print-struct-declor-list
              • Print-spec/qual-list
              • Print-param-declon-list
              • Print-param-declon
              • Print-initdeclor-list
              • Print-designor-list
              • Print-decl-spec-list
              • Print-decl-list
              • Print-attrib-spec-list
              • Print-asm-output-list
              • Print-asm-input-list
              • Print-typequal/attribspec
              • Print-statassert
              • Print-spec/qual
              • Print-member-designor
              • Print-initdeclor
              • Print-enumer-list
              • Print-dirabsdeclor
              • Print-desiniter
              • Print-decl-spec
              • Print-decl
              • Print-block-item-list
              • Print-attrib-spec
              • Print-attrib-list
              • Print-asm-output
              • Print-align-spec
              • Print-type-spec
              • Print-label
              • Print-genassoc
              • Print-enumer
              • Print-designor
              • Print-declor
              • Print-block-item
              • Print-asm-stmt
              • Print-asm-input
            • Output-files
            • Abstract-syntax-operations
            • Implementation-environments
            • Abstract-syntax
            • Concrete-syntax
            • Disambiguation
            • Validation
            • Gcc-builtins
            • Preprocessing
            • Parsing
          • Atc
          • Transformation-tools
          • Language
          • Representation
          • Insertion-sort
          • Pack
        • Proof-checker-array
        • Soft
        • Farray
        • Rp-rewriter
        • Instant-runoff-voting
        • Imp-language
        • Sidekick
        • Ethereum
        • Leftist-trees
        • Java
        • Riscv
        • Taspi
        • Bitcoin
        • Zcash
        • Des
        • X86isa
        • Sha-2
        • Yul
        • Proof-checker-itp13
        • Regex
        • ACL2-programming-language
        • Json
        • Jfkr
        • Equational
        • Cryptography
        • Axe
        • Poseidon
        • Where-do-i-place-my-book
        • Aleo
        • Bigmems
        • Builtins
        • Execloader
        • Solidity
        • Paco
        • Concurrent-programs
        • Bls12-377-curves
      • Debugging
      • Community
      • Std
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • Printer

    Print-escape

    Print an escape sequence.

    Signature
    (print-escape esc pstate) → new-pstate
    Arguments
    esc — Guard (escapep esc).
    pstate — Guard (pristatep pstate).
    Returns
    new-pstate — Type (pristatep new-pstate).

    We ensure that there is at least one digit in a hexadecimal escape sequence.

    Definitions and Theorems

    Function: print-escape

    (defun print-escape (esc pstate)
     (declare (xargs :guard (and (escapep esc) (pristatep pstate))))
     (let ((__function__ 'print-escape))
      (declare (ignorable __function__))
      (escape-case
       esc :simple
       (print-simple-escape esc.escape pstate)
       :oct
       (print-oct-escape esc.escape pstate)
       :hex
       (b*
        ((pstate (print-astring "\\x" pstate))
         ((unless esc.escape)
          (raise
           "Misusage error: ~
                          hexadecimal escape sequence has no digits.")
          pstate)
         (pstate (print-hex-digit-achars esc.escape pstate)))
        pstate)
       :univ (print-univ-char-name esc.escape pstate))))

    Theorem: pristatep-of-print-escape

    (defthm pristatep-of-print-escape
      (b* ((new-pstate (print-escape esc pstate)))
        (pristatep new-pstate))
      :rule-classes :rewrite)

    Theorem: pristate->gcc-of-print-escape

    (defthm pristate->gcc-of-print-escape
      (b* ((?new-pstate (print-escape esc pstate)))
        (equal (pristate->gcc new-pstate)
               (pristate->gcc pstate))))

    Theorem: print-escape-of-escape-fix-esc

    (defthm print-escape-of-escape-fix-esc
      (equal (print-escape (escape-fix esc) pstate)
             (print-escape esc pstate)))

    Theorem: print-escape-escape-equiv-congruence-on-esc

    (defthm print-escape-escape-equiv-congruence-on-esc
      (implies (escape-equiv esc esc-equiv)
               (equal (print-escape esc pstate)
                      (print-escape esc-equiv pstate)))
      :rule-classes :congruence)

    Theorem: print-escape-of-pristate-fix-pstate

    (defthm print-escape-of-pristate-fix-pstate
      (equal (print-escape esc (pristate-fix pstate))
             (print-escape esc pstate)))

    Theorem: print-escape-pristate-equiv-congruence-on-pstate

    (defthm print-escape-pristate-equiv-congruence-on-pstate
      (implies (pristate-equiv pstate pstate-equiv)
               (equal (print-escape esc pstate)
                      (print-escape esc pstate-equiv)))
      :rule-classes :congruence)