; Copyright (C) 2016 Centaur Technology
;
; Contact:
;   Centaur Technology Formal Verification Group
;   7600-C N. Capital of Texas Highway, Suite 300, Austin, TX 78731, USA.
;   http://www.centtech.com/
;
; License: (An MIT/X11-style license)
;
;   Permission is hereby granted, free of charge, to any person obtaining a
;   copy of this software and associated documentation files (the "Software"),
;   to deal in the Software without restriction, including without limitation
;   the rights to use, copy, modify, merge, publish, distribute, sublicense,
;   and/or sell copies of the Software, and to permit persons to whom the
;   Software is furnished to do so, subject to the following conditions:
;
;   The above copyright notice and this permission notice shall be included in
;   all copies or substantial portions of the Software.
;
;   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
;   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
;   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
;   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
;   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
;   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
;   DEALINGS IN THE SOFTWARE.
;
; Original author: Sol Swords <sswords@centtech.com>



(in-package "ACL2")

(include-book "xdoc/top" :dir :system)

(program)

(define-pc-help typeset ()
  (when-goals
   (let ((conc (conc t))
         (current-addr (current-addr t)))
     (let ((ens (make-pc-ens (pc-ens t) state))
           (current-term (fetch-term conc current-addr))
           ;; (abbreviations (abbreviations t))
           (all-hyps (union-equal (hyps t) (governors conc current-addr)))
           (w (w state)))
       (mv-let (flg type-alist ttree)
         (hyps-type-alist all-hyps ens w state)
         (declare (ignore ttree))
         (if flg
             (prog2$ (cw "Contradiction in the hypotheses!~|")
                     state)
           (mv-let (ts ttree)
             (type-set current-term
                       nil ;; forcep
                       nil ;;; dwp
                       type-alist
                       ens
                       w
                       nil ;;; ttree
                       nil nil)
             (declare (ignore ttree))
             (prog2$ (cw "Typeset: ~x0~|" (decode-type-set ts))
                     state))))))))

(defxdoc acl2-pc::typeset
  :parents (proof-checker-commands)
  :short "Display the @(see type-set) derived for the current term under its hyps and governors.")
