Theory "bool"

Parents     min

Signature

Constant Type
! :('a -> bool) -> bool
? :('a -> bool) -> bool
F :bool
T :bool
~ :bool -> bool
/\ :bool -> bool -> bool
?! :('a -> bool) -> bool
RES_EXISTS :('a -> bool) -> ('a -> bool) -> bool
IN :'a -> ('a -> bool) -> bool
case_split__magic :('a -> 'b) -> ('a -> 'b) -> 'a -> 'b
\/ :bool -> bool -> bool
case__magic :'a -> ('a -> 'b) -> 'b
ONTO :('a -> 'b) -> bool
RES_EXISTS_UNIQUE :('a -> bool) -> ('a -> bool) -> bool
ONE_ONE :('a -> 'b) -> bool
TYPE_DEFINITION :('a -> bool) -> ('b -> 'a) -> bool
RES_FORALL :('a -> bool) -> ('a -> bool) -> bool
ARB :'a
UNBOUNDED :bool -> bool
LET :('a -> 'b) -> 'a -> 'b
case_arrow__magic :'a -> 'b -> 'a -> 'b
bool_case :'a -> 'a -> bool -> 'a
BOUNDED :bool -> bool -> bool
RES_SELECT :('a -> bool) -> ('a -> bool) -> 'a
COND :bool -> 'a -> 'a -> 'a
RES_ABSTRACT :('a -> bool) -> ('a -> 'b) -> 'a -> 'b

Axioms

BOOL_CASES_AX
|- !t. (t = T) \/ (t = F)
ETA_AX
|- !t. (\x. t x) = t
SELECT_AX
|- !P x. P x ==> P ($@ P)
INFINITY_AX
|- ?f. ONE_ONE f /\ ~ONTO f


Definitions

T_DEF
|- T = ((\x. x) = (\x. x))
FORALL_DEF
|- $! = (\P. P = (\x. T))
EXISTS_DEF
|- $? = (\P. P ($@ P))
AND_DEF
|- $/\ = (\t1 t2. !t. (t1 ==> t2 ==> t) ==> t)
OR_DEF
|- $\/ = (\t1 t2. !t. (t1 ==> t) ==> (t2 ==> t) ==> t)
F_DEF
|- F = !t. t
NOT_DEF
|- $~ = (\t. t ==> F)
EXISTS_UNIQUE_DEF
|- $?! = (\P. $? P /\ !x y. P x /\ P y ==> (x = y))
LET_DEF
|- LET = (\f x. f x)
COND_DEF
|- COND = (\t t1 t2. @x. ((t = T) ==> (x = t1)) /\ ((t = F) ==> (x = t2)))
ONE_ONE_DEF
|- ONE_ONE = (\f. !x1 x2. (f x1 = f x2) ==> (x1 = x2))
ONTO_DEF
|- ONTO = (\f. !y. ?x. y = f x)
TYPE_DEFINITION
|- TYPE_DEFINITION =
   (\P rep.
      (!x' x''. (rep x' = rep x'') ==> (x' = x'')) /\
      !x. P x = ?x'. x = rep x')
ARB_DEF
|- ARB = @x. T
bool_case_DEF
|- case = (\x y b. (if b then x else y))
IN_DEF
|- $IN = (\x f. f x)
RES_FORALL_DEF
|- RES_FORALL = (\p m. !x. x IN p ==> m x)
RES_EXISTS_DEF
|- RES_EXISTS = (\p m. ?x. x IN p /\ m x)
RES_EXISTS_UNIQUE_DEF
|- RES_EXISTS_UNIQUE = (\p m. (?x::p. m x) /\ !x y::p. m x /\ m y ==> (x = y))
RES_SELECT_DEF
|- RES_SELECT = (\p m. @x. x IN p /\ m x)
UNBOUNDED_DEF
|- UNBOUNDED = (\b. b)
BOUNDED_DEF
|- BOUNDED = (\b v. b)
RES_ABSTRACT_DEF
|- (!p m x. x IN p ==> (RES_ABSTRACT p m x = m x)) /\
   !p m1 m2.
     (!x. x IN p ==> (m1 x = m2 x)) ==>
     (RES_ABSTRACT p m1 = RES_ABSTRACT p m2)


Theorems

TRUTH
|- T
IMP_ANTISYM_AX
|- !t1 t2. (t1 ==> t2) ==> (t2 ==> t1) ==> (t1 = t2)
FALSITY
|- !t. F ==> t
ETA_THM
|- !M. (\x. M x) = M
EXCLUDED_MIDDLE
|- !t. t \/ ~t
BETA_THM
|- !f y. (\x. f x) y = f y
LET_THM
|- !f x. LET f x = f x
FORALL_THM
|- $! f = !x. f x
EXISTS_THM
|- $? f = ?x. f x
ABS_SIMP
|- !t1 t2. (\x. t1) t2 = t1
FORALL_SIMP
|- !t. (!x. t) = t
EXISTS_SIMP
|- !t. (?x. t) = t
AND_INTRO_THM
|- !t1 t2. t1 ==> t2 ==> t1 /\ t2
AND1_THM
|- !t1 t2. t1 /\ t2 ==> t1
AND2_THM
|- !t1 t2. t1 /\ t2 ==> t2
CONJ_SYM
|- !t1 t2. t1 /\ t2 = t2 /\ t1
CONJ_COMM
|- !t1 t2. t1 /\ t2 = t2 /\ t1
CONJ_ASSOC
|- !t1 t2 t3. t1 /\ t2 /\ t3 = (t1 /\ t2) /\ t3
OR_INTRO_THM1
|- !t1 t2. t1 ==> t1 \/ t2
OR_INTRO_THM2
|- !t1 t2. t2 ==> t1 \/ t2
OR_ELIM_THM
|- !t t1 t2. t1 \/ t2 ==> (t1 ==> t) ==> (t2 ==> t) ==> t
IMP_F
|- !t. (t ==> F) ==> ~t
F_IMP
|- !t. ~t ==> t ==> F
NOT_F
|- !t. ~t ==> (t = F)
NOT_AND
|- ~(t /\ ~t)
AND_CLAUSES
|- !t.
     (T /\ t = t) /\ (t /\ T = t) /\ (F /\ t = F) /\ (t /\ F = F) /\
     (t /\ t = t)
OR_CLAUSES
|- !t.
     (T \/ t = T) /\ (t \/ T = T) /\ (F \/ t = t) /\ (t \/ F = t) /\
     (t \/ t = t)
IMP_CLAUSES
|- !t.
     (T ==> t = t) /\ (t ==> T = T) /\ (F ==> t = T) /\ (t ==> t = T) /\
     (t ==> F = ~t)
NOT_CLAUSES
|- (!t. ~~t = t) /\ (~T = F) /\ (~F = T)
EQ_REFL
|- !x. x = x
REFL_CLAUSE
|- !x. (x = x) = T
EQ_SYM
|- !x y. (x = y) ==> (y = x)
EQ_SYM_EQ
|- !x y. (x = y) = (y = x)
EQ_EXT
|- !f g. (!x. f x = g x) ==> (f = g)
FUN_EQ_THM
|- !f g. (f = g) = !x. f x = g x
EQ_TRANS
|- !x y z. (x = y) /\ (y = z) ==> (x = z)
BOOL_EQ_DISTINCT
|- ~(T = F) /\ ~(F = T)
EQ_CLAUSES
|- !t. ((T = t) = t) /\ ((t = T) = t) /\ ((F = t) = ~t) /\ ((t = F) = ~t)
COND_CLAUSES
|- !t1 t2. ((if T then t1 else t2) = t1) /\ ((if F then t1 else t2) = t2)
COND_ID
|- !b t. (if b then t else t) = t
SELECT_THM
|- !P. P (@x. P x) = ?x. P x
SELECT_REFL
|- !x. (@y. y = x) = x
SELECT_REFL_2
|- !x. (@y. x = y) = x
SELECT_UNIQUE
|- !P x. (!y. P y = (y = x)) ==> ($@ P = x)
NOT_FORALL_THM
|- !P. ~(!x. P x) = ?x. ~P x
NOT_EXISTS_THM
|- !P. ~(?x. P x) = !x. ~P x
FORALL_AND_THM
|- !P Q. (!x. P x /\ Q x) = (!x. P x) /\ !x. Q x
LEFT_AND_FORALL_THM
|- !P Q. (!x. P x) /\ Q = !x. P x /\ Q
RIGHT_AND_FORALL_THM
|- !P Q. P /\ (!x. Q x) = !x. P /\ Q x
EXISTS_OR_THM
|- !P Q. (?x. P x \/ Q x) = (?x. P x) \/ ?x. Q x
LEFT_OR_EXISTS_THM
|- !P Q. (?x. P x) \/ Q = ?x. P x \/ Q
RIGHT_OR_EXISTS_THM
|- !P Q. P \/ (?x. Q x) = ?x. P \/ Q x
BOTH_EXISTS_AND_THM
|- !P Q. (?x. P /\ Q) = (?x. P) /\ ?x. Q
LEFT_EXISTS_AND_THM
|- !P Q. (?x. P x /\ Q) = (?x. P x) /\ Q
RIGHT_EXISTS_AND_THM
|- !P Q. (?x. P /\ Q x) = P /\ ?x. Q x
BOTH_FORALL_OR_THM
|- !P Q. (!x. P \/ Q) = (!x. P) \/ !x. Q
LEFT_FORALL_OR_THM
|- !Q P. (!x. P x \/ Q) = (!x. P x) \/ Q
RIGHT_FORALL_OR_THM
|- !P Q. (!x. P \/ Q x) = P \/ !x. Q x
BOTH_FORALL_IMP_THM
|- !P Q. (!x. P ==> Q) = (?x. P) ==> !x. Q
LEFT_FORALL_IMP_THM
|- !P Q. (!x. P x ==> Q) = (?x. P x) ==> Q
RIGHT_FORALL_IMP_THM
|- !P Q. (!x. P ==> Q x) = P ==> !x. Q x
BOTH_EXISTS_IMP_THM
|- !P Q. (?x. P ==> Q) = (!x. P) ==> ?x. Q
LEFT_EXISTS_IMP_THM
|- !P Q. (?x. P x ==> Q) = (!x. P x) ==> Q
RIGHT_EXISTS_IMP_THM
|- !P Q. (?x. P ==> Q x) = P ==> ?x. Q x
OR_IMP_THM
|- !A B. (A = B \/ A) = B ==> A
NOT_IMP
|- !A B. ~(A ==> B) = A /\ ~B
DISJ_ASSOC
|- !A B C. A \/ B \/ C = (A \/ B) \/ C
DISJ_SYM
|- !A B. A \/ B = B \/ A
DISJ_COMM
|- !A B. A \/ B = B \/ A
DE_MORGAN_THM
|- !A B. (~(A /\ B) = ~A \/ ~B) /\ (~(A \/ B) = ~A /\ ~B)
LEFT_AND_OVER_OR
|- !A B C. A /\ (B \/ C) = A /\ B \/ A /\ C
RIGHT_AND_OVER_OR
|- !A B C. (B \/ C) /\ A = B /\ A \/ C /\ A
LEFT_OR_OVER_AND
|- !A B C. A \/ B /\ C = (A \/ B) /\ (A \/ C)
RIGHT_OR_OVER_AND
|- !A B C. B /\ C \/ A = (B \/ A) /\ (C \/ A)
IMP_DISJ_THM
|- !A B. A ==> B = ~A \/ B
DISJ_IMP_THM
|- !P Q R. P \/ Q ==> R = (P ==> R) /\ (Q ==> R)
IMP_F_EQ_F
|- !t. t ==> F = (t = F)
AND_IMP_INTRO
|- !t1 t2 t3. t1 ==> t2 ==> t3 = t1 /\ t2 ==> t3
EQ_IMP_THM
|- !t1 t2. (t1 = t2) = (t1 ==> t2) /\ (t2 ==> t1)
EQ_EXPAND
|- !t1 t2. (t1 = t2) = t1 /\ t2 \/ ~t1 /\ ~t2
COND_RATOR
|- !b f g x. (if b then f else g) x = (if b then f x else g x)
COND_RAND
|- !f b x y. f (if b then x else y) = (if b then f x else f y)
COND_ABS
|- !b f g. (\x. (if b then f x else g x)) = (if b then f else g)
COND_EXPAND
|- !b t1 t2. (if b then t1 else t2) = (~b \/ t1) /\ (b \/ t2)
TYPE_DEFINITION_THM
|- !P rep.
     TYPE_DEFINITION P rep =
     (!x' x''. (rep x' = rep x'') ==> (x' = x'')) /\ !x. P x = ?x'. x = rep x'
ONTO_THM
|- !f. ONTO f = !y. ?x. y = f x
ONE_ONE_THM
|- !f. ONE_ONE f = !x1 x2. (f x1 = f x2) ==> (x1 = x2)
ABS_REP_THM
|- !P.
     (?rep. TYPE_DEFINITION P rep) ==>
     ?rep abs. (!a. abs (rep a) = a) /\ !r. P r = (rep (abs r) = r)
LET_RAND
|- P (let x = M in N x) = (let x = M in P (N x))
LET_RATOR
|- (let x = M in N x) b = (let x = M in N x b)
SWAP_FORALL_THM
|- !P. (!x y. P x y) = !y x. P x y
SWAP_EXISTS_THM
|- !P. (?x y. P x y) = ?y x. P x y
EXISTS_UNIQUE_THM
|- (?!x. P x) = (?x. P x) /\ !x y. P x /\ P y ==> (x = y)
LET_CONG
|- !f g M N. (M = N) /\ (!x. (x = N) ==> (f x = g x)) ==> (LET f M = LET g N)
IMP_CONG
|- !x x' y y'. (x = x') /\ (x' ==> (y = y')) ==> (x ==> y = x' ==> y')
AND_CONG
|- !P P' Q Q'. (Q ==> (P = P')) /\ (P' ==> (Q = Q')) ==> (P /\ Q = P' /\ Q')
OR_CONG
|- !P P' Q Q'. (~Q ==> (P = P')) /\ (~P' ==> (Q = Q')) ==> (P \/ Q = P' \/ Q')
COND_CONG
|- !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'))
MONO_AND
|- (x ==> y) /\ (z ==> w) ==> x /\ z ==> y /\ w
MONO_OR
|- (x ==> y) /\ (z ==> w) ==> x \/ z ==> y \/ w
MONO_IMP
|- (y ==> x) /\ (z ==> w) ==> (x ==> z) ==> y ==> w
MONO_NOT
|- (y ==> x) ==> ~x ==> ~y
MONO_ALL
|- (!x. P x ==> Q x) ==> (!x. P x) ==> !x. Q x
MONO_EXISTS
|- (!x. P x ==> Q x) ==> (?x. P x) ==> ?x. Q x
MONO_COND
|- (x ==> y) ==> (z ==> w) ==> (if b then x else z) ==> (if b then y else w)
EXISTS_REFL
|- !a. ?x. x = a
EXISTS_UNIQUE_REFL
|- !a. ?!x. x = a
UNWIND_THM1
|- !P a. (?x. (a = x) /\ P x) = P a
UNWIND_THM2
|- !P a. (?x. (x = a) /\ P x) = P a
UNWIND_FORALL_THM1
|- !f v. (!x. (v = x) ==> f x) = f v
UNWIND_FORALL_THM2
|- !f v. (!x. (x = v) ==> f x) = f v
SKOLEM_THM
|- !P. (!x. ?y. P x y) = ?f. !x. P x (f x)
bool_case_thm
|- (!e0 e1. (case T of T -> e0 || F -> e1) = e0) /\
   !e0 e1. (case F of T -> e0 || F -> e1) = e1
bool_case_ID
|- !x b. (case b of T -> x || F -> x) = x
boolAxiom
|- !e0 e1. ?fn. (fn T = e0) /\ (fn F = e1)
bool_INDUCT
|- !P. P T /\ P F ==> !b. P b
UEXISTS_OR_THM
|- !P Q. (?!x. P x \/ Q x) ==> (?!x. P x) \/ ?!x. Q x
UEXISTS_SIMP
|- (?!x. t) = t /\ !x y. x = y
BOOL_FUN_CASES_THM
|- !f. (f = (\b. T)) \/ (f = (\b. F)) \/ (f = (\b. b)) \/ (f = (\b. ~b))
BOOL_FUN_INDUCT
|- !P. P (\b. T) /\ P (\b. F) /\ P (\b. b) /\ P (\b. ~b) ==> !f. P f
BOUNDED_THM
|- !b v. BOUNDED b v = b
UNBOUNDED_THM
|- !b. UNBOUNDED b = b