• Top
    • Documentation
    • Books
    • 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$
        • Fgl
        • Removable-runes
        • Efficiency
        • Rewrite-bounds
        • Bash
        • Def-dag-measure
        • 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
      • Math
      • Testing-utilities
    • Reference

    Gl-hint

    Try to prove a goal using GL symbolic simulation.

    Usage, as a computed hint:

    (gl-hint my-gl-clause-processor
            :bindings `((a ,(g-number (list (mk-number-list 1 1 9))))
                        (b ,(g-boolean 0)))
            :hyp '(bvecp a 8)
            :coverage-hints ('(:expand ((bvecp a 8)))))

    The above hint causes an attempt to apply the clause processor my-gl-clause-processor to the current clause. Such a clause processor must be created using def-gl-clause-processor. One such clause processor, glcp, is predefined in the GL system. Various keyword arguments control the symbolic simulation and auxilliary proofs.

    The full interface is as follows, with default values and brief descriptions of each keyword argument:

    (gl-hint clause-processor-name
    
             ;; bindings of variables to symbolic object specs
             :bindings                <required>
    
             ;; maximum recursion depth
             :clk                     1000000
    
             ;; hypothesis of the theorem
             :hyp                     t
    
             ;; conclusion of the theorem
             :concl                   nil
    
             ;; hints for proving coverage
             :cov-hints               nil
             :cov-hints-position      nil
             :cov-theory-add          nil
             :do-not-expand           nil
    
             ;; number of counterexamples to print
             :n-counterexamples       3
    
             ;; abort if symbolic simulation yields a result with
             ;; indeterminate truth value.
             :abort-indeterminate     t
    
             ;; abort as soon as a counterexample is discovered.
             :abort-ctrex             t
    
             ;; execute the conclusion on each counterexample (turn off if non-executable)
             :exec-ctrex              t
    
             ;; abort if a hypothesis is discovered to be unsatisfiable.
             :abort-vacuous           t
    
             ;; enable accumulated-persistence-like rule profiling
             :prof-enabledp           nil
    
             ;; To perform case-splitting, set this argument:
             :param-bindings          nil
    
             ;; Ignored unless case-splitting:
             :param-hyp               nil
             :run-before-cases        nil
             :run-after-cases         nil)

    The keyword arguments to gl-hint are similar to ones for the macros def-gl-thm and def-gl-param-thm, and are documented there.