• 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-stor-spec

    Print a storage class specifier.

    Signature
    (print-stor-spec stor-spec pstate) → new-pstate
    Arguments
    stor-spec — Guard (stor-specp stor-spec).
    pstate — Guard (pristatep pstate).
    Returns
    new-pstate — Type (pristatep new-pstate).

    Definitions and Theorems

    Function: print-stor-spec

    (defun print-stor-spec (stor-spec pstate)
      (declare (xargs :guard (and (stor-specp stor-spec)
                                  (pristatep pstate))))
      (let ((__function__ 'print-stor-spec))
        (declare (ignorable __function__))
        (stor-spec-case
             stor-spec :typedef
             (print-astring "typedef" pstate)
             :extern (print-astring "extern" pstate)
             :static (print-astring "static" pstate)
             :thread
             (if stor-spec.local (print-astring "_Thread_local" pstate)
               (print-astring "__thread" pstate))
             :auto (print-astring "auto" pstate)
             :register (print-astring "register" pstate))))

    Theorem: pristatep-of-print-stor-spec

    (defthm pristatep-of-print-stor-spec
      (b* ((new-pstate (print-stor-spec stor-spec pstate)))
        (pristatep new-pstate))
      :rule-classes :rewrite)

    Theorem: pristate->gcc-of-print-stor-spec

    (defthm pristate->gcc-of-print-stor-spec
      (b* ((?new-pstate (print-stor-spec stor-spec pstate)))
        (equal (pristate->gcc new-pstate)
               (pristate->gcc pstate))))

    Theorem: print-stor-spec-of-stor-spec-fix-stor-spec

    (defthm print-stor-spec-of-stor-spec-fix-stor-spec
      (equal (print-stor-spec (stor-spec-fix stor-spec)
                              pstate)
             (print-stor-spec stor-spec pstate)))

    Theorem: print-stor-spec-stor-spec-equiv-congruence-on-stor-spec

    (defthm print-stor-spec-stor-spec-equiv-congruence-on-stor-spec
      (implies (stor-spec-equiv stor-spec stor-spec-equiv)
               (equal (print-stor-spec stor-spec pstate)
                      (print-stor-spec stor-spec-equiv pstate)))
      :rule-classes :congruence)

    Theorem: print-stor-spec-of-pristate-fix-pstate

    (defthm print-stor-spec-of-pristate-fix-pstate
      (equal (print-stor-spec stor-spec (pristate-fix pstate))
             (print-stor-spec stor-spec pstate)))

    Theorem: print-stor-spec-pristate-equiv-congruence-on-pstate

    (defthm print-stor-spec-pristate-equiv-congruence-on-pstate
      (implies (pristate-equiv pstate pstate-equiv)
               (equal (print-stor-spec stor-spec pstate)
                      (print-stor-spec stor-spec pstate-equiv)))
      :rule-classes :congruence)