Structure optionTheory


Source File Identifier index Theory binding index

signature optionTheory =
sig
  type thm = Thm.thm
  
  (*  Definitions  *)
    val IS_NONE_DEF : thm
    val IS_SOME_DEF : thm
    val NONE_DEF : thm
    val OPTION_JOIN_DEF : thm
    val OPTION_MAP_DEF : thm
    val SOME_DEF : thm
    val THE_DEF : thm
    val option_REP_ABS_DEF : thm
    val option_TY_DEF : thm
    val option_case_def : thm
  
  (*  Theorems  *)
    val FORALL_OPTION : thm
    val IS_NONE_EQ_NONE : thm
    val NOT_IS_SOME_EQ_NONE : thm
    val NOT_NONE_SOME : thm
    val NOT_SOME_NONE : thm
    val OPTION_JOIN_EQ_SOME : thm
    val OPTION_MAP_EQ_NONE : thm
    val OPTION_MAP_EQ_NONE_both_ways : thm
    val OPTION_MAP_EQ_SOME : thm
    val SOME_11 : thm
    val option_Axiom : thm
    val option_CLAUSES : thm
    val option_case_ID : thm
    val option_case_SOME_ID : thm
    val option_case_compute : thm
    val option_case_cong : thm
    val option_induction : thm
    val option_nchotomy : thm
  
  val option_grammars : type_grammar.grammar * term_grammar.grammar
  
  val option_rwts : simpLib.ssfrag
  
  val option_Induct : thm
  val option_CASES : thm
  
(*
   [normalForms] Parent theory of "option"
   
   [one] Parent theory of "option"
   
   [sum] Parent theory of "option"
   
   [IS_NONE_DEF]  Definition
      
      |- (!x. IS_NONE (SOME x) = F) /\ (IS_NONE NONE = T)
   
   [IS_SOME_DEF]  Definition
      
      |- (!x. IS_SOME (SOME x) = T) /\ (IS_SOME NONE = F)
   
   [NONE_DEF]  Definition
      
      |- NONE = option_ABS (INR ())
   
   [OPTION_JOIN_DEF]  Definition
      
      |- (OPTION_JOIN NONE = NONE) /\ !x. OPTION_JOIN (SOME x) = x
   
   [OPTION_MAP_DEF]  Definition
      
      |- (!f x. OPTION_MAP f (SOME x) = SOME (f x)) /\ !f. OPTION_MAP f NONE = NONE
   
   [SOME_DEF]  Definition
      
      |- !x. SOME x = option_ABS (INL x)
   
   [THE_DEF]  Definition
      
      |- !x. THE (SOME x) = x
   
   [option_REP_ABS_DEF]  Definition
      
      |- (!a. option_ABS (option_REP a) = a) /\
         !r. (\x. T) r = (option_REP (option_ABS r) = r)
   
   [option_TY_DEF]  Definition
      
      |- ?rep. TYPE_DEFINITION (\x. T) rep
   
   [option_case_def]  Definition
      
      |- (!u f. option_case u f NONE = u) /\ !u f x. option_case u f (SOME x) = f x
   
   [FORALL_OPTION]  Theorem
      
      |- (!opt. P opt) = P NONE /\ !x. P (SOME x)
   
   [IS_NONE_EQ_NONE]  Theorem
      
      |- !x. IS_NONE x = (x = NONE)
   
   [NOT_IS_SOME_EQ_NONE]  Theorem
      
      |- !x. ~IS_SOME x = (x = NONE)
   
   [NOT_NONE_SOME]  Theorem
      
      |- !x. ~(NONE = SOME x)
   
   [NOT_SOME_NONE]  Theorem
      
      |- !x. ~(SOME x = NONE)
   
   [OPTION_JOIN_EQ_SOME]  Theorem
      
      |- !x y. (OPTION_JOIN x = SOME y) = (x = SOME (SOME y))
   
   [OPTION_MAP_EQ_NONE]  Theorem
      
      |- !f x. (OPTION_MAP f x = NONE) = (x = NONE)
   
   [OPTION_MAP_EQ_NONE_both_ways]  Theorem
      
      |- ((OPTION_MAP f x = NONE) = (x = NONE)) /\
         ((NONE = OPTION_MAP f x) = (x = NONE))
   
   [OPTION_MAP_EQ_SOME]  Theorem
      
      |- !f x y. (OPTION_MAP f x = SOME y) = ?z. (x = SOME z) /\ (y = f z)
   
   [SOME_11]  Theorem
      
      |- !x y. (SOME x = SOME y) = (x = y)
   
   [option_Axiom]  Theorem
      
      |- !e f. ?fn. (!x. fn (SOME x) = f x) /\ (fn NONE = e)
   
   [option_CLAUSES]  Theorem
      
      |- (!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. option_case NONE SOME x = x) /\ (!x. option_case x SOME x = x) /\
         (!x. IS_NONE x ==> (option_case e f x = e)) /\
         (!x. IS_SOME x ==> (option_case e f x = f (THE x))) /\
         (!x. IS_SOME x ==> (option_case e SOME x = x)) /\
         (!u f. option_case u f NONE = u) /\
         (!u f x. option_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_ID]  Theorem
      
      |- !x. option_case NONE SOME x = x
   
   [option_case_SOME_ID]  Theorem
      
      |- !x. option_case x SOME x = x
   
   [option_case_compute]  Theorem
      
      |- option_case e f x = (if IS_SOME x then f (THE x) else e)
   
   [option_case_cong]  Theorem
      
      |- !M M' u f.
           (M = M') /\ ((M' = NONE) ==> (u = u')) /\
           (!x. (M' = SOME x) ==> (f x = f' x)) ==>
           (option_case u f M = option_case u' f' M')
   
   [option_induction]  Theorem
      
      |- !P. P NONE /\ (!a. P (SOME a)) ==> !x. P x
   
   [option_nchotomy]  Theorem
      
      |- !opt. (opt = NONE) \/ ?x. opt = SOME x
   
   
*)
end


Source File Identifier index Theory binding index


HOL 4,   Kananaskis-3