• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
        • Crypto-hdwallet
        • Apt
        • Error-checking
        • Fty-extensions
        • Isar
        • Kestrel-utilities
        • Set
        • C
          • Syntax-for-tools
            • Formalized-subset
              • Exprs-formalp
              • Stmts-formalp
              • Type-spec-list-integer-formalp
              • Ext-declon-formalp
              • Type-spec-list-formalp
              • Ident-formalp
              • Tyname-formalp
              • Pointers-formalp
              • Dirdeclor-obj-formalp
              • Desiniter-formalp
              • Declon-obj-formalp
              • Fundef-formalp
              • Declon-block-formalp
              • Struct-declon-formalp
              • Init-declor-obj-formalp
                • Declon-struct-formalp
                • Init-declor-block-formalp
                • Dirdeclor-fun-formalp
                • Dirdeclor-block-formalp
                • Init-declor-fun-formalp
                • Declon-fun-formalp
                • Transunit-ensemble-formalp
                • Param-declor-formalp
                • Param-declon-formalp
                • Declor-obj-formalp
                • Struct-declor-formalp
                • Struct-declon-list-formalp
                • Initer-formalp
                • Struni-spec-formalp
                • Stor-spec-list-formalp
                • Declor-fun-formalp
                • Declor-block-formalp
                • Param-declon-list-formalp
                • Desiniter-list-formalp
                • Ext-declon-list-formalp
                • Transunit-formalp
                • Const-formalp
                • Stmt-formalp
                • Expr-formalp
                • Expr-list-formalp
                • Block-item-list-formalp
                • Block-item-formalp
                • Comp-stmt-formalp
              • Mapping-to-language-definition
              • Input-files
              • Compilation-database
              • Printer
              • 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
          • Soft
          • Bv
          • Imp-language
          • Ethereum
          • Event-macros
          • Java
          • Riscv
          • Bitcoin
          • Zcash
          • Yul
          • ACL2-programming-language
          • Prime-fields
          • Json
          • Syntheto
          • File-io-light
          • Cryptography
          • Number-theory
          • Axe
          • Lists-light
          • Builtins
          • Solidity
          • Helpers
          • Htclient
          • Typed-lists-light
          • Arithmetic-light
        • X86isa
        • Axe
        • Execloader
      • Math
      • Testing-utilities
    • Formalized-subset

    Init-declor-obj-formalp

    Check if an initializer declarator has formal dynamic semantics, as part of an object declaration (not in a block).

    Signature
    (init-declor-obj-formalp initdeclor) → yes/no
    Arguments
    initdeclor — Guard (init-declorp initdeclor).
    Returns
    yes/no — Type (booleanp yes/no).

    This complements declor-obj-formalp; see the documentation of that function. The initializer is optional, but if present it must be supported. There must be no assembler name specifier and no attribute specifiers.

    Definitions and Theorems

    Function: init-declor-obj-formalp

    (defun init-declor-obj-formalp (initdeclor)
      (declare (xargs :guard (init-declorp initdeclor)))
      (declare (xargs :guard (init-declor-unambp initdeclor)))
      (let ((__function__ 'init-declor-obj-formalp))
        (declare (ignorable __function__))
        (b* (((init-declor initdeclor) initdeclor))
          (and (declor-obj-formalp initdeclor.declor)
               (not initdeclor.asm?)
               (endp initdeclor.attribs)
               (or (not initdeclor.initer?)
                   (initer-formalp initdeclor.initer?))))))

    Theorem: booleanp-of-init-declor-obj-formalp

    (defthm booleanp-of-init-declor-obj-formalp
      (b* ((yes/no (init-declor-obj-formalp initdeclor)))
        (booleanp yes/no))
      :rule-classes :rewrite)

    Theorem: init-declor-obj-formalp-of-init-declor-fix-initdeclor

    (defthm init-declor-obj-formalp-of-init-declor-fix-initdeclor
      (equal (init-declor-obj-formalp (init-declor-fix initdeclor))
             (init-declor-obj-formalp initdeclor)))

    Theorem: init-declor-obj-formalp-init-declor-equiv-congruence-on-initdeclor

    (defthm
     init-declor-obj-formalp-init-declor-equiv-congruence-on-initdeclor
     (implies (init-declor-equiv initdeclor initdeclor-equiv)
              (equal (init-declor-obj-formalp initdeclor)
                     (init-declor-obj-formalp initdeclor-equiv)))
     :rule-classes :congruence)