• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
      • Gl
        • Term-level-reasoning
        • Glmc
        • Other-resources
        • Optimization
        • Reference
          • Def-gl-thm
          • Shape-specs
          • Symbolic-objects
          • Gl-aside
          • Def-gl-param-thm
          • Symbolic-arithmetic
          • Bfr
          • Def-gl-boolean-constraint
          • Gl-mbe
          • Bvec
          • Flex-bindings
          • Auto-bindings
          • Gl-interp
            • Gl-set-uninterpreted
            • Def-gl-clause-processor
            • Def-glcp-ctrex-rewrite
            • ACL2::always-equal
            • Gl-hint
            • Def-gl-rewrite
            • Def-gl-branch-merge
            • Gl-force-check
            • Gl-concretize
            • Gl-assert
            • Gl-param-thm
            • Gl-simplify-satlink-mode
            • Gl-satlink-mode
            • Gl-bdd-mode
            • Gl-aig-bddify-mode
            • Gl-fraig-satlink-mode
          • Debugging
          • Basic-tutorial
        • Witness-cp
        • Ccg
        • Install-not-normalized
        • Rewrite$
        • Removable-runes
        • Efficiency
        • Rewrite-bounds
        • Bash
        • Def-dag-measure
        • Fgl
        • Bdd
        • Remove-hyps
        • Contextual-rewriting
        • Simp
        • Rewrite$-hyps
        • Bash-term-to-dnf
        • Use-trivial-ancestors-check
        • Minimal-runes
        • Clause-processor-tools
        • Fn-is-body
        • Without-subsumption
        • Rewrite-equiv-hint
        • Def-bounds
        • Rewrite$-context
        • Try-gl-concls
        • Hint-utils
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Testing-utilities
      • Math
    • Reference

    Gl-interp

    Symbolically interpret a term using GL, with inputs generated by parametrization.

    Usage:

    (gl-interp term bindings :hyp hyp)

    The above form runs a symbolic interpretation of term on the symbolic input assignment produced by parametrizing bindings using hyp. The symbolic execution run by this form is similar to that run by

    (def-gl-thm <name> :hyp hyp :concl term :g-bindings bindings).

    bindings should be a binding list of the same kind as taken by def-gl-thm, that is, a list of elements (var val) such that var is a variable free in term, and val is a shape specifier; see shape-specs.

    Similar to def-gl-thm, term and hyp should be the (unquoted) terms of interest, whereas bindings should be something that evaluates to the binding list (the quotation of that binding list, for example.)

    In more detail: First, the input bindings are converted to an assignment of symbolic inputs to variables. The hyp term is symbolically interpreted using this variable assignment, yielding a predicate. The symbolic input assignment is parametrized using this predicate to produce a new such assignment whose coverage is restricted to the subset satisfying the hyp. The term is then symbolically interpreted using this assignment, and the result is returned.

    This macro expands to a function call taking state and the bvar-db and bvar-db1 live stobjs. It returns:

    (mv error-message hyp-bfr param-al result bvar-db bvar-db1 state)

    The symbolic interpreter used by gl-interp is the latest interpreter defined using def-gl-clause-processor (as recorded in the gl::latest-greatest-gl-clause-proc table).