• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
      • Apt
      • Zfc
      • Acre
      • Milawa
      • Smtlink
      • Abnf
        • Deftreeops
        • Defdefparse
        • Defgrammar
        • Tree-utilities
        • Notation
        • Grammar-parser
        • Meta-circular-validation
        • Parsing-primitives-defresult
        • Parsing-primitives-seq
        • Operations
        • Examples
        • Differences-with-paper
        • Constructor-utilities
        • Grammar-printer
          • Grammar-printer-implementation
            • Pretty-print-repeat-range
            • Pretty-print-num-val-direct
            • Pretty-print-number
              • Pretty-print-num-val-range
              • Pretty-print-rulelist
              • Pretty-print-char-val
              • Pretty-print-rule
              • Pretty-print-prose-val
              • Pretty-print-num-val
              • Pretty-print-num-base
              • Pretty-print-repetition
              • Pretty-print-element
              • Pretty-print-concatenation
              • Pretty-print-alternation
          • 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
    • Grammar-printer-implementation

    Pretty-print-number

    Pretty-print a number in a given base.

    Signature
    (pretty-print-number nat base) → string
    Arguments
    nat — Guard (natp nat).
    base — Guard (num-base-p base).
    Returns
    string — Type (common-lisp::stringp string).

    We print numbers without leading zeros, except for a single zero if the number is 0. We might extend the abstract syntax to keep information about any leading zeros, in numeric value notations and in repetition prefixes.

    Definitions and Theorems

    Function: pretty-print-number

    (defun pretty-print-number (nat base)
      (declare (xargs :guard (and (natp nat) (num-base-p base))))
      (let ((__function__ 'pretty-print-number))
        (declare (ignorable __function__))
        (num-base-case base
                       :dec (str::nat-to-dec-string nat)
                       :hex (str::nat-to-hex-string nat)
                       :bin (str::nat-to-bin-string nat))))

    Theorem: stringp-of-pretty-print-number

    (defthm stringp-of-pretty-print-number
      (b* ((string (pretty-print-number nat base)))
        (common-lisp::stringp string))
      :rule-classes :rewrite)