bool_ss : simpset
STRUCTURE
SYNOPSIS
Basic simpset containing standard propositional and first order logic simplifications, plus beta conversion.
LIBRARY
boolSimps
DESCRIPTION
The bool_ss simpset is almost at the base of the system-provided simpset hierarchy. Though not very powerful, it does include the following ad hoc collection of rewrite rules for propositions and first order terms:
   |- !A B. ~(A ==> B) = A /\ ~B
   |- !A B. (~(A /\ B) = ~A \/ ~B) /\
            (~(A \/ B) = ~A /\ ~B)
   |- !P. ~(!x. P x) = ?x. ~P x
   |- !P. ~(?x. P x) = !x. ~P x
   |- (~p = ~q) = (p = q)
   |- !x. (x = x) = T
   |- !t. ((T = t) = t) /\
          ((t = T) = t) /\
          ((F = t) = ~t) /\
          ((t = F) = ~t)
   |- (!t. ~~t = t) /\ (~T = F) /\ (~F = T)
   |- !t. (T /\ t = t) /\
          (t /\ T = t) /\
          (F /\ t = F) /\
          (t /\ F = F) /\
          (t /\ t = t)
   |- !t. (T \/ t = T) /\
          (t \/ T = T) /\
          (F \/ t = t) /\
          (t \/ F = t) /\
          (t \/ t = t)
   |- !t. (T ==> t = t) /\
          (t ==> T = T) /\
          (F ==> t = T) /\
          (t ==> t = T) /\
          (t ==> F = ~t)
   |- !t1 t2. ((if T then t1 else t2) = t1) /\
              ((if F then t1 else t2) = t2)
   |- !t. (!x. t) = t
   |- !t. (?x. t) = t
   |- !b t. (if b then t else t) = t
   |- !a. ?x. x = a
   |- !a. ?x. a = x
   |- !a. ?!x. x = a,
   |- !a. ?!x. a = x,
   |- (!b e. (if b then T else e) = b \/ e) /\
      (!b t. (if b then t else T) = b ==> t) /\
      (!b e. (if b then F else e) = ~b /\ e) /\
      (!b t. (if b then t else F) = b /\ t)
   |- !t. t \/ ~t
   |- !t. ~t \/ t
   |- !t. ~(t /\ ~t)
   |- !x. (@y. y = x) = x
   |- !x. (@y. x = y) = x
   |- !f v. (!x. (x = v) ==> f x) = f v
   |- !f v. (!x. (v = x) ==> f x) = f v
   |- !P a. (?x. (x = a) /\ P x) = P a
   |- !P a. (?x. (a = x) /\ P x) = P a
Also included in bool_ss is a conversion to perform beta reduction, as well as the following congruence rules, which allow the simplifier to glean additional contextual information as it descends through implications and conditionals.
   |- !x x' y y'.
       (x = x') ==>
       (x' ==> (y = y')) ==> (x ==> y = x' ==> y')

   |- !P Q x x' y y'.
       (P = Q) ==>
       (Q ==> (x = x')) ==>
       (~Q ==> (y = y')) ==> ((if P then x else y) = (if Q then x' else y'))
FAILURE
Can’t fail, as it is not a functional value.
USES
The bool_ss simpset is an appropriate simpset from which to build new user-defined simpsets. It is also useful in its own right, for example when a delicate simplification is desired, where other more powerful simpsets might cause undue disruption to a goal. If even less system rewriting is desired, the pure_ss value can be used.
SEEALSO
HOL  Kananaskis-13