Filtering...

general-object-thms

books/centaur/gl/general-object-thms
other
(in-package "GL")
other
(include-book "gtype-thms")
other
(include-book "general-objects")
other
(defthm general-booleanp-booleanp
  (implies (general-booleanp x)
    (booleanp (generic-geval x env)))
  :hints (("Goal" :in-theory (enable generic-geval
       (:type-prescription bfr-eval)))))
other
(defthm general-booleanp-of-atom
  (implies (not (consp x))
    (equal (general-booleanp x) (booleanp x)))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm general-boolean-value-cases
  (and (implies (atom x)
      (equal (general-boolean-value x) x))
    (implies (and (consp x) (equal (tag x) :g-boolean))
      (equal (general-boolean-value x)
        (g-boolean->bool x)))
    (implies (and (consp x) (equal (tag x) :g-concrete))
      (equal (general-boolean-value x)
        (g-concrete->obj x))))
  :hints (("goal" :in-theory (enable g-concrete->obj
       g-boolean->bool
       general-boolean-value))))
other
(defthm general-boolean-value-correct
  (implies (general-booleanp x)
    (equal (generic-geval x env)
      (bfr-eval (general-boolean-value x)
        (car env))))
  :hints (("goal" :in-theory (enable generic-geval)))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm booleanp-of-geval
  (implies (and (not (equal (tag x) :g-apply))
      (not (equal (tag x) :g-var))
      (not (equal (tag x) :g-ite)))
    (equal (booleanp (generic-geval x env))
      (general-booleanp x)))
  :hints (("goal" :expand ((:with generic-geval (generic-geval x env)))
     :in-theory (enable general-booleanp))))
other
(defthm pbfr-depends-on-of-general-boolean-value
  (implies (and (not (gobj-depends-on k p x))
      (general-booleanp x))
    (not (pbfr-depends-on k
        p
        (general-boolean-value x))))
  :hints (("Goal" :in-theory (enable general-booleanp
       general-boolean-value
       booleanp))))
other
(in-theory (disable general-booleanp general-boolean-value))
other
(defthm general-integerp-eval-to-integerp
  (implies (general-integerp x)
    (integerp (generic-geval x env)))
  :hints (("goal" :expand (generic-geval x env))))
other
(defthm boolean-listp-i2v
  (boolean-listp (i2v n))
  :hints (("Goal" :in-theory (e/d (i2v bfr-scons) (logcar logcdr)))))
other
(defthm general-integer-bits-correct
  (implies (general-integerp a)
    (b* ((bits (general-integer-bits a)))
      (equal (generic-geval a env)
        (bfr-list->s bits (car env)))))
  :hints (("goal" :in-theory (enable generic-geval
       general-integerp
       general-integer-bits)))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm integerp-of-geval
  (implies (and (not (equal (tag x) :g-apply))
      (not (equal (tag x) :g-var))
      (not (equal (tag x) :g-ite)))
    (equal (integerp (generic-geval x env))
      (general-integerp x)))
  :hints (("goal" :expand ((:with generic-geval (generic-geval x env)))
     :in-theory (enable general-integerp))))
other
(in-theory (disable general-integer-bits general-integerp))
other
(defthm pbfr-depends-on-of-general-integer-bits
  (implies (and (general-integerp x)
      (not (gobj-depends-on k p x)))
    (not (pbfr-list-depends-on k
        p
        (general-integer-bits x))))
  :hints (("Goal" :in-theory (enable general-integer-bits)
     :expand ((gobj-depends-on k p x) (general-integerp x)))))
other
(local (defthm nth-open-when-constant-idx
    (implies (syntaxp (quotep n))
      (equal (nth n x)
        (if (zp n)
          (car x)
          (nth (1- n) (cdr x)))))))
other
(defthm general-integerp-of-atom
  (implies (not (consp x))
    (equal (general-integerp x) (integerp x)))
  :hints (("Goal" :in-theory (enable general-integerp)))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm general-consp-correct
  (implies (general-consp x)
    (equal (generic-geval x env)
      (cons (generic-geval (general-consp-car x) env)
        (generic-geval (general-consp-cdr x) env))))
  :hints (("goal" :expand ((generic-geval x env))))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm consp-of-geval
  (implies (and (not (equal (tag x) :g-apply))
      (not (equal (tag x) :g-var))
      (not (equal (tag x) :g-ite)))
    (equal (consp (generic-geval x env))
      (general-consp x)))
  :hints (("goal" :expand ((:with generic-geval (generic-geval x env)))
     :in-theory (enable general-consp g-keyword-symbolp))))
other
(defthm consp-general-consp
  (implies (general-consp x)
    (consp (generic-geval x env)))
  :hints (("goal" :expand ((generic-geval x env)))))
other
(defthm not-consp-implies-not-general-consp
  (implies (not (consp (generic-geval x env)))
    (not (general-consp x)))
  :rule-classes :forward-chaining)
other
(defthmd general-consp-car-correct
  (implies (general-consp x)
    (equal (generic-geval (general-consp-car x) env)
      (car (generic-geval x env))))
  :hints (("goal" :in-theory (enable generic-geval))))
other
(defthm general-consp-car-acl2-count
  (implies (general-consp x)
    (< (acl2-count (general-consp-car x))
      (acl2-count x)))
  :hints (("goal" :in-theory (enable mk-g-concrete
       g-concrete
       g-concrete->obj)))
  :rule-classes (:rewrite :linear))
other
(defthmd general-consp-cdr-correct
  (implies (general-consp x)
    (equal (generic-geval (general-consp-cdr x) env)
      (cdr (generic-geval x env))))
  :hints (("goal" :in-theory (enable generic-geval))))
other
(defthm general-consp-cdr-acl2-count
  (implies (general-consp x)
    (< (acl2-count (general-consp-cdr x))
      (acl2-count x)))
  :hints (("goal" :in-theory (enable mk-g-concrete
       g-concrete
       g-concrete->obj)))
  :rule-classes (:rewrite :linear))
other
(defthm gobj-depends-on-of-general-consp
  (implies (and (not (gobj-depends-on k p x))
      (general-consp x))
    (and (not (gobj-depends-on k
          p
          (general-consp-car x)))
      (not (gobj-depends-on k
          p
          (general-consp-cdr x)))))
  :hints (("Goal" :in-theory (enable general-consp
       general-consp-car
       general-consp-cdr
       g-keyword-symbolp-def))))
other
(in-theory (disable general-consp
    general-consp-car
    general-consp-cdr))
other
(defthm atom-general-concrete-atom
  (implies (general-concrete-atom x)
    (atom (generic-geval x env)))
  :hints (("goal" :in-theory (enable generic-geval))))
other
(defthm general-concrete-atom-val-correct
  (implies (general-concrete-atom x)
    (equal (generic-geval (general-concrete-atom-val x)
        env)
      (generic-geval x env)))
  :hints (("goal" :in-theory (enable generic-geval))))
other
(in-theory (disable general-concrete-atom
    general-concrete-atom-val))
general-concretep-indfunction
(defun general-concretep-ind
  (x)
  (if (atom x)
    x
    (if (or (g-concrete-p x)
        (g-boolean-p x)
        (g-integer-p x)
        (g-ite-p x)
        (g-apply-p x)
        (g-var-p x))
      t
      (list (general-concretep-ind (car x))
        (general-concretep-ind (cdr x))))))
other
(defthm general-concretep-def
  (equal (general-concretep x)
    (if (atom x)
      t
      (if (g-concrete-p x)
        t
        (and (not (g-boolean-p x))
          (not (g-integer-p x))
          (not (g-ite-p x))
          (not (g-apply-p x))
          (not (g-var-p x))
          (general-concretep (car x))
          (general-concretep (cdr x))))))
  :hints (("Goal" :in-theory (enable gobject-hierarchy-lite)))
  :rule-classes :definition)
other
(defthm general-concretep-of-atomic-constants
  (implies (and (syntaxp (quotep x)) (atom x))
    (equal (general-concretep x) t))
  :hints (("Goal" :in-theory (e/d nil (general-concretep)))))
other
(in-theory (disable general-concretep (general-concretep)))
other
(verify-guards general-concrete-obj)
other
(defthm generic-geval-when-concrete-gobjectp
  (implies (concrete-gobjectp x)
    (equal (generic-geval x env) x))
  :hints (("Goal" :in-theory (enable concrete-gobjectp
       gobject-hierarchy-lite
       generic-geval)))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm general-concrete-obj-correct
  (implies (general-concretep x)
    (equal (generic-geval x env)
      (general-concrete-obj x)))
  :hints (("Goal" :induct (general-concrete-obj x)
     :expand ((general-concretep x) (generic-geval x env)
       (concrete-gobjectp x)
       (general-concrete-obj x)))))
other
(in-theory (disable general-concretep
    general-concrete-obj
    (general-concrete-obj)))
other
(defthm general-concretep-mk-g-concrete
  (general-concretep (mk-g-concrete x))
  :hints (("Goal" :in-theory (enable general-concretep-def mk-g-concrete)) (and stable-under-simplificationp
      '(:in-theory (enable general-concretep concrete-gobjectp)))))
other
(defthm general-concrete-obj-mk-g-concrete
  (equal (general-concrete-obj (mk-g-concrete x))
    x)
  :hints (("Goal" :in-theory (enable general-concrete-obj
       concrete-gobjectp-def
       mk-g-concrete))))
other
(defthmd general-concretep-atom
  (implies (not (consp x))
    (general-concretep x))
  :hints (("Goal" :in-theory (enable general-concretep-def)))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm bool-cond-itep-eval
  (implies (bool-cond-itep x)
    (equal (generic-geval x env)
      (if (bfr-eval (bool-cond-itep-cond x) (car env))
        (generic-geval (bool-cond-itep-truebr x)
          env)
        (generic-geval (bool-cond-itep-falsebr x)
          env))))
  :hints (("goal" :in-theory (enable generic-geval)))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm acl2-count-bool-cond-itep-truebr
  (implies (bool-cond-itep x)
    (< (acl2-count (bool-cond-itep-truebr x))
      (acl2-count x)))
  :rule-classes :linear)
other
(defthm acl2-count-bool-cond-itep-falsebr
  (implies (bool-cond-itep x)
    (< (acl2-count (bool-cond-itep-falsebr x))
      (acl2-count x)))
  :rule-classes :linear)
other
(in-theory (disable bool-cond-itep
    bool-cond-itep-cond
    bool-cond-itep-truebr
    bool-cond-itep-falsebr))
other
(defthmd general-boolean-value-alt
  (equal (general-boolean-value x)
    (cond ((atom x) x)
      ((g-concrete-p x) (g-concrete->obj x))
      (t (g-boolean->bool x))))
  :hints (("Goal" :in-theory (enable g-boolean->bool
       g-concrete->obj
       general-boolean-value)))
  :rule-classes :definition)
other
(defthm generic-geval-alt-def
  (equal (generic-geval x env)
    (cond ((general-concretep x) (general-concrete-obj x))
      ((general-booleanp x) (bfr-eval (general-boolean-value x)
          (car env)))
      ((general-integerp x) (bfr-list->s (general-integer-bits x)
          (car env)))
      ((general-consp x) (cons (generic-geval (general-consp-car x) env)
          (generic-geval (general-consp-cdr x) env)))
      ((g-ite-p x) (if (generic-geval (g-ite->test x) env)
          (generic-geval (g-ite->then x) env)
          (generic-geval (g-ite->else x) env)))
      ((g-apply-p x) (and (not (eq (g-apply->fn x) 'quote))
          (generic-geval-ev (cons (g-apply->fn x)
              (kwote-lst (generic-geval-list (g-apply->args x) env)))
            nil)))
      (t (cdr (hons-assoc-equal (g-var->name x) (cdr env))))))
  :hints (("goal" :in-theory (e/d** (general-concretep-def (:induction generic-geval)
         general-integerp
         general-booleanp
         general-consp
         eq
         atom
         cons-car-cdr
         concrete-gobjectp-def
         g-keyword-symbolp-def
         member-equal
         general-boolean-value-alt
         general-integer-bits
         booleanp-compound-recognizer
         general-concrete-obj
         general-consp-car
         general-consp-cdr
         general-concrete-obj-correct
         bfr-list->s-of-list-fix
         hons-get))
     :do-not-induct t
     :expand ((generic-geval x env))))
  :rule-classes ((:definition :clique (generic-geval generic-geval-list)
     :controller-alist ((generic-geval t nil) (generic-geval-list t nil)))))
other
(in-theory (disable generic-geval-alt-def))
other
(defthm possibilities-for-x
  (and (implies (general-concretep x)
      (and (not (g-ite-p x))
        (not (g-apply-p x))
        (not (g-var-p x))))
    (implies (not (consp x))
      (and (general-concretep x)
        (not (general-consp x))))
    (implies (general-booleanp x)
      (and (not (general-integerp x))
        (not (general-consp x))
        (not (g-ite-p x))
        (not (g-apply-p x))
        (not (g-var-p x))))
    (implies (general-integerp x)
      (and (not (general-booleanp x))
        (not (general-consp x))
        (not (g-ite-p x))
        (not (g-apply-p x))
        (not (g-var-p x))))
    (implies (general-consp x)
      (and (not (general-booleanp x))
        (not (general-integerp x))
        (not (g-ite-p x))
        (not (g-apply-p x))
        (not (g-var-p x))))
    (implies (g-ite-p x)
      (and (not (general-concretep x))
        (not (general-consp x))
        (not (general-booleanp x))
        (not (general-integerp x))
        (not (g-apply-p x))
        (not (g-var-p x))))
    (implies (g-apply-p x)
      (and (not (general-concretep x))
        (not (general-consp x))
        (not (general-booleanp x))
        (not (general-integerp x))
        (not (g-ite-p x))
        (not (g-var-p x))))
    (implies (g-var-p x)
      (and (not (general-concretep x))
        (not (general-consp x))
        (not (general-booleanp x))
        (not (general-integerp x))
        (not (g-ite-p x))
        (not (g-apply-p x))))
    (implies (and (not (general-concretep x))
        (not (general-consp x))
        (not (general-booleanp x))
        (not (general-integerp x))
        (not (g-ite-p x))
        (not (g-apply-p x)))
      (g-var-p x)))
  :hints (("Goal" :in-theory (enable general-concretep-def
       general-booleanp
       general-integerp
       general-consp
       g-keyword-symbolp-def
       member-equal)
     :do-not-induct t))
  :rule-classes nil)
other
(defthm possibilities-for-x-1
  (implies (general-concretep x)
    (and (not (g-ite-p x))
      (not (g-apply-p x))
      (not (g-var-p x))))
  :hints (("Goal" :by possibilities-for-x))
  :rule-classes :forward-chaining)
other
(defthm possibilities-for-x-2
  (implies (not (consp x))
    (and (general-concretep x)
      (not (general-consp x))))
  :hints (("Goal" :by possibilities-for-x))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm possibilities-for-x-3
  (implies (general-booleanp x)
    (and (not (general-integerp x))
      (not (general-consp x))
      (not (g-ite-p x))
      (not (g-apply-p x))
      (not (g-var-p x))))
  :hints (("Goal" :by possibilities-for-x))
  :rule-classes :forward-chaining)
other
(defthm possibilities-for-x-4
  (implies (general-integerp x)
    (and (not (general-booleanp x))
      (not (general-consp x))
      (not (g-ite-p x))
      (not (g-apply-p x))
      (not (g-var-p x))))
  :hints (("Goal" :by possibilities-for-x))
  :rule-classes :forward-chaining)
other
(defthm possibilities-for-x-5
  (implies (general-consp x)
    (and (not (general-booleanp x))
      (not (general-integerp x))
      (not (g-ite-p x))
      (not (g-apply-p x))
      (not (g-var-p x))))
  :hints (("Goal" :by possibilities-for-x))
  :rule-classes :forward-chaining)
other
(defthm possibilities-for-x-6
  (implies (g-ite-p x)
    (and (not (general-concretep x))
      (not (general-consp x))
      (not (general-booleanp x))
      (not (general-integerp x))))
  :hints (("Goal" :by possibilities-for-x))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm possibilities-for-x-7
  (implies (g-apply-p x)
    (and (not (general-concretep x))
      (not (general-consp x))
      (not (general-booleanp x))
      (not (general-integerp x))))
  :hints (("Goal" :by possibilities-for-x))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm possibilities-for-x-8
  (implies (g-var-p x)
    (and (not (general-concretep x))
      (not (general-consp x))
      (not (general-booleanp x))
      (not (general-integerp x))))
  :hints (("Goal" :by possibilities-for-x))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm possibilities-for-x-9
  (implies (and (not (general-concretep x))
      (not (general-consp x))
      (not (general-booleanp x))
      (not (general-integerp x))
      (not (g-ite-p x))
      (not (g-apply-p x)))
    (g-var-p x))
  :hints (("Goal" :by possibilities-for-x))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthm possibilities-for-x-10
  (implies (and (not (general-consp x))
      (not (general-booleanp x))
      (not (general-integerp x))
      (not (equal (tag x) :g-ite))
      (not (equal (tag x) :g-apply))
      (not (equal (tag x) :g-var)))
    (general-concretep x))
  :hints (("Goal" :use possibilities-for-x))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
other
(defthmd possibilities-for-x-10-strong
  (implies (and (not (general-consp x))
      (not (general-booleanp x))
      (not (general-integerp x))
      (not (equal (tag x) :g-ite))
      (not (equal (tag x) :g-apply))
      (not (equal (tag x) :g-var)))
    (general-concretep x))
  :hints (("Goal" :use possibilities-for-x)))
other
(def-ruleset! general-object-possibilities
  '(possibilities-for-x-1 possibilities-for-x-2
    possibilities-for-x-3
    possibilities-for-x-4
    possibilities-for-x-5
    possibilities-for-x-6
    possibilities-for-x-7
    possibilities-for-x-8
    possibilities-for-x-9
    possibilities-for-x-10))
other
(in-theory (disable* (:ruleset general-object-possibilities)))
other
(defthm general-concretep-not-general-integerp
  (implies (and (general-concretep x)
      (not (general-integerp x)))
    (not (integerp (general-concrete-obj x))))
  :hints (("Goal" :in-theory (enable general-concretep-def
       general-integerp
       general-concrete-obj)
     :expand ((general-concrete-obj x))
     :do-not-induct t))
  :rule-classes (:rewrite :type-prescription))
other
(defthm general-concretep-not-general-booleanp
  (implies (and (general-concretep x)
      (not (general-booleanp x)))
    (not (booleanp (general-concrete-obj x))))
  :hints (("Goal" :in-theory (enable general-concretep-def
       general-booleanp
       general-concrete-obj)
     :expand ((general-concrete-obj x))
     :do-not-induct t))
  :rule-classes (:rewrite :type-prescription))
other
(defthm general-concretep-not-general-consp
  (implies (and (general-concretep x)
      (not (general-consp x)))
    (not (consp (general-concrete-obj x))))
  :hints (("Goal" :in-theory (enable general-concretep-def
       general-consp
       concrete-gobjectp
       g-keyword-symbolp-def
       member-equal
       general-concrete-obj)
     :expand ((general-concrete-obj x))
     :do-not-induct t))
  :rule-classes (:rewrite :type-prescription))
other
(defthm general-consp-when-general-concretep
  (implies (general-concretep x)
    (equal (general-consp x)
      (consp (general-concrete-obj x))))
  :hints (("goal" :use ((:instance general-consp-correct))
     :in-theory (disable general-consp-correct))))
other
(defthm general-booleanp-when-general-concretep
  (implies (general-concretep x)
    (equal (general-booleanp x)
      (booleanp (general-concrete-obj x))))
  :hints (("goal" :use ((:instance general-boolean-value-correct))
     :in-theory (disable general-boolean-value-correct))))
other
(defthm general-integerp-when-general-concretep
  (implies (general-concretep x)
    (equal (general-integerp x)
      (integerp (general-concrete-obj x))))
  :hints (("goal" :use ((:instance general-integer-bits-correct (a x)))
     :in-theory (disable general-integer-bits-correct))))
other
(defthm general-consp-car-when-concretep
  (implies (and (general-concretep x)
      (general-consp x))
    (equal (generic-geval (general-consp-car x) env)
      (car (general-concrete-obj x))))
  :hints (("Goal" :in-theory (enable general-consp
       general-consp-car
       general-concretep
       gobject-hierarchy-lite
       general-concrete-obj
       concrete-gobjectp))))
other
(defthm general-consp-cdr-when-concretep
  (implies (and (general-concretep x)
      (general-consp x))
    (equal (generic-geval (general-consp-cdr x) env)
      (cdr (general-concrete-obj x))))
  :hints (("Goal" :in-theory (enable general-consp
       general-consp-cdr
       general-concretep
       gobject-hierarchy-lite
       general-concrete-obj
       concrete-gobjectp))))
other
(defthm general-concrete-obj-when-numberp
  (implies (and (general-concretep x)
      (general-integerp x))
    (equal (bfr-list->s (general-integer-bits x)
        (car env))
      (general-concrete-obj x)))
  :hints (("Goal" :in-theory (enable general-integerp
       general-concrete-obj
       general-integer-bits)
     :expand ((general-concretep x))
     :do-not-induct t)))
other
(defthm general-concrete-obj-when-booleanp
  (implies (and (general-concretep x)
      (general-booleanp x))
    (equal (bfr-eval (general-boolean-value x)
        (car env))
      (general-concrete-obj x)))
  :hints (("Goal" :in-theory (enable general-booleanp
       general-concretep
       gobject-hierarchy-lite
       general-boolean-value)
     :expand ((:with general-concretep (general-concretep x)) (general-concrete-obj x))
     :do-not-induct t)))
other
(defthmd not-general-integerp-not-integerp
  (implies (and (not (general-integerp x))
      (not (g-ite-p x))
      (not (g-apply-p x))
      (not (g-var-p x)))
    (not (integerp (generic-geval x env))))
  :hints (("goal" :use possibilities-for-x
     :expand ((generic-geval x env))
     :in-theory (disable general-consp-car-correct
       general-consp-cdr-correct)
     :do-not-induct t)))
other
(defthm general-concrete-obj-when-atom
  (implies (not (consp x))
    (equal (general-concrete-obj x) x))
  :hints (("Goal" :in-theory (enable general-concrete-obj)))
  :rule-classes ((:rewrite :backchain-limit-lst 0)))
number-equivfunction
(defun number-equiv
  (x y)
  (equal (fix x) (fix y)))
other
(defequiv number-equiv)
other
(defthm general-number-fix-correct
  (implies (and (not (equal (tag x) :g-ite))
      (not (equal (tag x) :g-apply))
      (not (equal (tag x) :g-var)))
    (equal (generic-geval (general-number-fix x) env)
      (fix (generic-geval x env))))
  :hints (("Goal" :in-theory (enable general-number-fix)
     :expand (:with generic-geval (generic-geval x env)))))
other
(defthm geval-when-general-concretep-of-number-fix
  (implies (and (general-concretep (general-number-fix x))
      (not (equal (tag x) :g-ite))
      (not (equal (tag x) :g-apply))
      (not (equal (tag x) :g-var)))
    (number-equiv (generic-geval x env)
      (general-concrete-obj (general-number-fix x))))
  :hints (("goal" :use ((:instance general-number-fix-correct))
     :in-theory (e/d (generic-geval-alt-def)
       (general-number-fix-correct)))))
other
(defthm acl2-numberp-of-general-number-fix-obj
  (implies (general-concretep (general-number-fix x))
    (acl2-numberp (general-concrete-obj (general-number-fix x))))
  :hints (("Goal" :in-theory (enable general-number-fix
       (general-concrete-obj)
       general-concrete-obj-when-atom)))
  :rule-classes (:rewrite :type-prescription))
other
(defthm deps-of-general-number-fix
  (implies (not (gobj-depends-on k p x))
    (not (gobj-depends-on k
        p
        (general-number-fix x))))
  :hints (("Goal" :in-theory (enable general-number-fix))))
other
(defthm general-concretep-of-general-number-fix-when-not-general-integerp
  (b* ((x (general-number-fix x)))
    (implies (not (general-integerp x))
      (general-concretep x)))
  :hints (("Goal" :in-theory (enable general-integerp
       general-number-fix
       general-concretep))))
other
(defthm general-integerp-of-general-number-fix-when-not-general-concretep
  (b* ((x (general-number-fix x)))
    (implies (not (general-concretep x))
      (general-integerp x))))
other
(defthm general-integerp-of-general-number-fix-when-general-integerp
  (b* ((xx (general-number-fix x)))
    (implies (general-integerp x)
      (general-integerp xx)))
  :hints (("Goal" :in-theory (enable general-number-fix
       general-integerp
       mk-g-concrete))))
other
(defthm general-concretep-of-general-number-fix-when-not-g-integer
  (b* ((x (general-number-fix x)))
    (implies (not (equal (tag x) :g-integer))
      (general-concretep x)))
  :hints (("Goal" :in-theory (enable general-number-fix general-concretep))))
other
(defthm generic-geval-of-g-ite-branches
  (implies (equal (tag x) :g-ite)
    (and (implies (generic-geval (g-ite->test x) env)
        (equal (generic-geval (g-ite->then x) env)
          (generic-geval x env)))
      (implies (not (generic-geval (g-ite->test x) env))
        (equal (generic-geval (g-ite->else x) env)
          (generic-geval x env)))))
  :hints (("Goal" :expand ((:with generic-geval (generic-geval x env))))))