Structure fsetsTheory


Source File Identifier index Theory binding index

signature fsetsTheory =
sig
  type thm = Thm.thm
  
  (*  Definitions  *)
    val FSET_def : thm
  
  (*  Theorems  *)
    val KT_FINITE : thm
    val RDOM_FSET_EQ : thm
    val RRANGE_FSET : thm
    val RRANGE_FSET_EQ : thm
    val bi_unique_FSET : thm
    val fDELETE_DELETE : thm
    val fEMPTY_EMPTY : thm
    val fINSERT_INSERT : thm
    val fIN_IN : thm
    val fUNION_UNION : thm
    val fset_ext : thm
    val fupdate_correct : thm
    val left_unique_FSET : thm
    val right_unique_FSET : thm
    val toSet_correct : thm
    val total_FSET : thm
  
  val fsets_grammars : type_grammar.grammar * term_grammar.grammar
(*
   [finite_map] Parent theory of "fsets"
   
   [transfer] Parent theory of "fsets"
   
   [FSET_def]  Definition
      
      ⊢ ∀AB fs s. FSET AB fs s ⇔ ∀a b. AB a b ⇒ (fIN a fs ⇔ b ∈ s)
   
   [KT_FINITE]  Theorem
      
      ⊢ surj AB ∧ right_unique AB ⇒ (FSET AB |==> $<=>) (K T) FINITE
   
   [RDOM_FSET_EQ]  Theorem
      
      ⊢ RDOM (FSET $=) = 𝕌(:α fset)
   
   [RRANGE_FSET]  Theorem
      
      ⊢ RRANGE (FSET AB) =
        {bset |
         FINITE {a | (∃b. AB a b ∧ b ∈ bset)} ∧
         ∀a b b'. b ∈ bset ∧ AB a b ∧ AB a b' ⇒ b' ∈ bset}
   
   [RRANGE_FSET_EQ]  Theorem
      
      ⊢ RRANGE (FSET $=) = FINITE
   
   [bi_unique_FSET]  Theorem
      
      ⊢ bi_unique AB ∧ bitotal AB ⇒ bi_unique (FSET AB)
   
   [fDELETE_DELETE]  Theorem
      
      ⊢ bi_unique AB ⇒ (FSET AB |==> AB |==> FSET AB) fDELETE $DELETE
   
   [fEMPTY_EMPTY]  Theorem
      
      ⊢ FSET AB FEMPTY ∅
   
   [fINSERT_INSERT]  Theorem
      
      ⊢ bi_unique AB ⇒
        (AB |==> FSET AB |==> FSET AB) (λe fs. fINSERT e fs) $INSERT
   
   [fIN_IN]  Theorem
      
      ⊢ (AB |==> FSET AB |==> $<=>) (λe fs. fIN e fs) $IN
   
   [fUNION_UNION]  Theorem
      
      ⊢ (FSET AB |==> FSET AB |==> FSET AB) fUNION $UNION
   
   [fset_ext]  Theorem
      
      ⊢ fm1 = fm2 ⇔ toSet fm1 = toSet fm2
   
   [fupdate_correct]  Theorem
      
      ⊢ bi_unique AB ⇒
        (FSET AB |==> PAIRU AB |==> FSET AB) $|+ (flip $INSERT)
   
   [left_unique_FSET]  Theorem
      
      ⊢ total AB ⇒ left_unique (FSET AB)
   
   [right_unique_FSET]  Theorem
      
      ⊢ surj AB ⇒ right_unique (FSET AB)
   
   [toSet_correct]  Theorem
      
      ⊢ (FSET AB |==> AB |==> $<=>) toSet I
   
   [total_FSET]  Theorem
      
      ⊢ left_unique AB ⇒ total (FSET AB)
   
   
*)
end


Source File Identifier index Theory binding index

HOL 4, Kananaskis-14