• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • 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
        • Soft
        • C
          • Syntax-for-tools
          • Atc
            • Atc-implementation
              • Atc-abstract-syntax
              • Atc-pretty-printer
              • Atc-event-and-code-generation
              • Fty-pseudo-term-utilities
              • Atc-term-recognizers
              • Atc-input-processing
              • Atc-shallow-embedding
                • Defstruct
                • Defobject
                • Atc-let-designations
                • Pointer-types
                • Atc-conditional-expressions
              • Atc-process-inputs-and-gen-everything
              • Atc-table
              • Atc-fn
              • Atc-pretty-printing-options
              • Atc-types
              • Atc-macro-definition
            • Atc-tutorial
          • 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
  • Atc-implementation

Atc-shallow-embedding

Shallow embedding of C in ACL2 for ATC.

We are in the process of moving this shallow embedding from the atc subdirectory to the representation subdirectory. See the documentation in representation for details.

The ACL2 representation of C constructs, which ATC recognizes and translates to C, constitutes a shallow embedding of C in ACL2. In contrast, the abstract syntax, static semantics, and dynamic semantics constitute a deep embedding of C in ACL2. The two are separate but related of course, via the theorems generated by ATC, which are in fact more general than ATC in a way, because they are applicable to code lifting besides code generation.

The file where this XDOC topic appears can be included by tools, such as APT transformations, that need to operate on the ACL2 representations of the C constructs, without having to include all of ATC.

Subtopics

Defstruct
Define a shallowly embedded structure type.
Defobject
Define a shallowly embedded external object.
Atc-let-designations
Designations of let and mv-let representations for ATC.
Pointer-types
Representation of pointer types in the shallow embedding.
Atc-conditional-expressions
Representation of C conditional expressions for ATC.