• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • Proof-automation
    • ACL2
    • Macro-libraries
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
        • Crypto-hdwallet
        • Apt
        • Error-checking
        • Fty-extensions
        • Isar
        • Kestrel-utilities
        • Set
        • Soft
        • C
          • Syntax-for-tools
            • Disambiguator
            • Abstract-syntax
            • Parser
            • Validator
            • Printer
            • Formalized-subset
              • Expr-pure-formalp
              • Type-spec-list-integer-formalp
              • Stmts/blocks-formalp
              • Type-spec-list-formalp
              • Extdecl-formalp
              • Ident-formalp
              • Tyname-formalp
              • Pointers-formalp
              • Dirdeclor-obj-formalp
                • Desiniter-formalp
                • Fundef-formalp
                • Decl-obj-formalp
                • Decl-block-formalp
                • Initdeclor-obj-formalp
                • Expr-asg-formalp
                • Structdecl-formalp
                • Initdeclor-block-formalp
                • Decl-struct-formalp
                • Dirdeclor-fun-formalp
                • Dirdeclor-block-formalp
                • Initdeclor-fun-formalp
                • Transunit-ensemble-formalp
                • Param-declor-formalp
                • Initer-formalp
                • Expr-call-formalp
                • Declor-obj-formalp
                • Decl-fun-formalp
                • Param-declon-formalp
                • Struni-spec-formalp
                • Structdeclor-formalp
                • Stor-spec-list-formalp
                • Declor-fun-formalp
                • Declor-block-formalp
                • Structdecl-list-formalp
                • Param-declon-list-formalp
                • Desiniter-list-formalp
                • Extdecl-list-formalp
                • Expr-list-pure-formalp
                • Transunit-formalp
                • Const-formalp
                • Stmt-formalp
                • Block-item-list-formalp
                • Block-item-formalp
              • Mapping-to-language-definition
              • Input-files
              • Defpred
              • Output-files
              • Abstract-syntax-operations
              • Validation-information
              • Implementation-environments
              • Concrete-syntax
              • Ascii-identifiers
              • Unambiguity
              • Preprocessing
              • Abstraction-mapping
              • Standard
              • Purity
            • Atc
            • Language
            • Representation
            • Transformation-tools
            • Insertion-sort
            • Pack
          • Bv
          • Imp-language
          • Event-macros
          • Java
          • Bitcoin
          • Ethereum
          • Yul
          • Zcash
          • ACL2-programming-language
          • Prime-fields
          • Json
          • Syntheto
          • File-io-light
          • Cryptography
          • Number-theory
          • Lists-light
          • Axe
          • Builtins
          • Solidity
          • Helpers
          • Htclient
          • Typed-lists-light
          • Arithmetic-light
        • X86isa
        • Axe
        • Execloader
      • Math
      • Testing-utilities
    • Formalized-subset

    Dirdeclor-obj-formalp

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

    Signature
    (dirdeclor-obj-formalp dirdeclor) → yes/no
    Arguments
    dirdeclor — Guard (dirdeclorp dirdeclor).
    Returns
    yes/no — Type (booleanp yes/no).

    This is for direct declarators not used as part of block items; for those, we have dirdeclor-block-formalp instead.

    For all other uses of direct declarators (not as part of block items), we allow identifier declarators and array declarators, the latter without size or with an integer constant as size; also see ldm-dirdeclor-obj.

    Definitions and Theorems

    Function: dirdeclor-obj-formalp

    (defun dirdeclor-obj-formalp (dirdeclor)
      (declare (xargs :guard (dirdeclorp dirdeclor)))
      (declare (xargs :guard (dirdeclor-unambp dirdeclor)))
      (let ((__function__ 'dirdeclor-obj-formalp))
        (declare (ignorable __function__))
        (dirdeclor-case
             dirdeclor
             :ident (ident-formalp dirdeclor.ident)
             :paren nil
             :array (and (dirdeclor-obj-formalp dirdeclor.declor)
                         (endp dirdeclor.qualspecs)
                         (or (not dirdeclor.size?)
                             (and (check-expr-iconst dirdeclor.size?)
                                  t)))
             :array-static1 nil
             :array-static2 nil
             :array-star nil
             :function-params nil
             :function-names nil)))

    Theorem: booleanp-of-dirdeclor-obj-formalp

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

    Theorem: dirdeclor-obj-formalp-of-dirdeclor-fix-dirdeclor

    (defthm dirdeclor-obj-formalp-of-dirdeclor-fix-dirdeclor
      (equal (dirdeclor-obj-formalp (dirdeclor-fix dirdeclor))
             (dirdeclor-obj-formalp dirdeclor)))

    Theorem: dirdeclor-obj-formalp-dirdeclor-equiv-congruence-on-dirdeclor

    (defthm
          dirdeclor-obj-formalp-dirdeclor-equiv-congruence-on-dirdeclor
      (implies (dirdeclor-equiv dirdeclor dirdeclor-equiv)
               (equal (dirdeclor-obj-formalp dirdeclor)
                      (dirdeclor-obj-formalp dirdeclor-equiv)))
      :rule-classes :congruence)