dest_theory : string -> theory
THEORY(s,{types, consts, parents, axioms, definitions, theorems})
The call dest_theory "-" may be used to access the contents of the current theory.
- dest_theory "option"; > val it = Theory: option Parents: sum one Type constants: option 1 Term constants: option_case :'b -> ('a -> 'b) -> 'a option -> 'b NONE :'a option SOME :'a -> 'a option IS_NONE :'a option -> bool option_ABS :'a + one -> 'a option IS_SOME :'a option -> bool option_REP :'a option -> 'a + one THE :'a option -> 'a OPTION_JOIN :'a option option -> 'a option OPTION_MAP :('a -> 'b) -> 'a option -> 'b option Definitions: option_TY_DEF |- ?rep. TYPE_DEFINITION (\x. T) rep option_REP_ABS_DEF |- (!a. option_ABS (option_REP a) = a) /\ !r. (\x. T) r = (option_REP (option_ABS r) = r) SOME_DEF |- !x. SOME x = option_ABS (INL x) NONE_DEF |- NONE = option_ABS (INR ()) option_case_def |- (!u f. case u f NONE = u) /\ !u f x. case u f (SOME x) = f x OPTION_MAP_DEF |- (!f x. OPTION_MAP f (SOME x) = SOME (f x)) /\ !f. OPTION_MAP f NONE = NONE IS_SOME_DEF |- (!x. IS_SOME (SOME x) = T) /\ (IS_SOME NONE = F) IS_NONE_DEF |- (!x. IS_NONE (SOME x) = F) /\ (IS_NONE NONE = T) THE_DEF |- !x. THE (SOME x) = x OPTION_JOIN_DEF |- (OPTION_JOIN NONE = NONE) /\ !x. OPTION_JOIN (SOME x) = x Theorems: option_Axiom |- !e f. ?fn. (!x. fn (SOME x) = f x) /\ (fn NONE = e) option_induction |- !P. P NONE /\ (!a. P (SOME a)) ==> !x. P x SOME_11 |- !x y. (SOME x = SOME y) = (x = y) NOT_NONE_SOME |- !x. ~(NONE = SOME x) NOT_SOME_NONE |- !x. ~(SOME x = NONE) option_nchotomy |- !opt. (opt = NONE) \/ ?x. opt = SOME x option_CLAUSES |- (!x y. (SOME x = SOME y) = (x = y)) /\ (!x. THE (SOME x) = x) /\ (!x. ~(NONE = SOME x)) /\ (!x. ~(SOME x = NONE)) /\ (!x. IS_SOME (SOME x) = T) /\ (IS_SOME NONE = F) /\ (!x. IS_NONE x = (x = NONE)) /\ (!x. ~IS_SOME x = (x = NONE)) /\ (!x. IS_SOME x ==> (SOME (THE x) = x)) /\ (!x. case NONE SOME x = x) /\ (!x. case x SOME x = x) /\ (!x. IS_NONE x ==> (case e f x = e)) /\ (!x. IS_SOME x ==> (case e f x = f (THE x))) /\ (!x. IS_SOME x ==> (case e SOME x = x)) /\ (!u f. case u f NONE = u) /\ (!u f x. case u f (SOME x) = f x) /\ (!f x. OPTION_MAP f (SOME x) = SOME (f x)) /\ (!f. OPTION_MAP f NONE = NONE) /\ (OPTION_JOIN NONE = NONE) /\ !x. OPTION_JOIN (SOME x) = x option_case_compute |- case e f x = (if IS_SOME x then f (THE x) else e) OPTION_MAP_EQ_SOME |- !f x y. (OPTION_MAP f x = SOME y) = ?z. (x = SOME z) /\ (y = f z) OPTION_MAP_EQ_NONE |- !f x. (OPTION_MAP f x = NONE) = (x = NONE) OPTION_JOIN_EQ_SOME |- !x y. (OPTION_JOIN x = SOME y) = (x = SOME (SOME y)) option_case_cong |- !M M' u f. (M = M') /\ ((M' = NONE) ==> (u = u')) /\ (!x. (M' = SOME x) ==> (f x = f' x)) ==> (case u f M = case u' f' M') : theory