• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
      • Io
      • Defttag
      • Sys-call
      • Save-exec
      • Quicklisp
      • Std/io
      • Oslib
      • Bridge
        • Json-encoding
          • Json-encode-main
          • Json-encode-weird-char
          • Json-encode-atom
            • Json-encode
            • Json-encode-chars
            • Json-encode-char
            • Json-encode-str
            • Json-simple-alist-p
            • Json-comma-and-maybe-newline
          • Security
          • Command
          • In-main-thread
          • Message
          • Start
          • Bindings
          • Stop
          • Try-in-main-thread
        • Clex
        • Tshell
        • Unsound-eval
        • Hacker
        • ACL2s-interface
        • Startup-banner
        • Command-line
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • Json-encoding

    Json-encode-atom

    Signature
    (json-encode-atom x acc) → new-acc
    Arguments
    x — Guard (atom x).
    Returns
    new-acc — Type (character-listp new-acc), given (character-listp acc).

    Definitions and Theorems

    Function: json-encode-atom

    (defun json-encode-atom (x acc)
     (declare (xargs :guard (atom x)))
     (let ((__function__ 'json-encode-atom))
      (declare (ignorable __function__))
      (let*
       ((acc (cons #\" acc))
        (acc
          (cond ((symbolp x)
                 (json-encode-str (symbol-name x)
                                  (if (keywordp x) (cons #\: acc) acc)))
                ((integerp x)
                 (if (< x 0)
                     (revappend (str::nat-to-dec-chars (- x))
                                (cons #\- acc))
                   (revappend (str::nat-to-dec-chars x)
                              acc)))
                ((characterp x)
                 (json-encode-char x acc))
                ((stringp x) (json-encode-str x acc))
                ((acl2-numberp x)
                 (json-encode-chars (explode-atom x 10)
                                    acc))
                (t (progn$ (raise "Bad ACL2 object: ~x0" x)
                           acc)))))
       (cons #\" acc))))

    Theorem: character-listp-of-json-encode-atom

    (defthm character-listp-of-json-encode-atom
      (implies (character-listp acc)
               (b* ((new-acc (json-encode-atom x acc)))
                 (character-listp new-acc)))
      :rule-classes :rewrite)