src/HOL/ex/Tarski.thy
changeset 18750 91a328803c6a
parent 18705 0874fdca3748
child 19316 c04b75d482c4
equal deleted inserted replaced
18749:31c2af8b0c60 18750:91a328803c6a
    83       SIGMA cl: CompleteLattice.
    83       SIGMA cl: CompleteLattice.
    84           {S. S \<subseteq> pset cl &
    84           {S. S \<subseteq> pset cl &
    85            (| pset = S, order = induced S (order cl) |): CompleteLattice }"
    85            (| pset = S, order = induced S (order cl) |): CompleteLattice }"
    86 
    86 
    87 syntax
    87 syntax
    88   "@SL"  :: "['a set, 'a potype] => bool" ("_ <\<subseteq> _" [51,50]50)
    88   "@SL"  :: "['a set, 'a potype] => bool" ("_ <<= _" [51,50]50)
    89 
    89 
    90 translations
    90 translations
    91   "S <\<subseteq> cl" == "S : sublattice `` {cl}"
    91   "S <<= cl" == "S : sublattice `` {cl}"
    92 
    92 
    93 constdefs
    93 constdefs
    94   dual :: "'a potype => 'a potype"
    94   dual :: "'a potype => 'a potype"
    95   "dual po == (| pset = pset po, order = converse (order po) |)"
    95   "dual po == (| pset = pset po, order = converse (order po) |)"
    96 
    96 
   301 
   301 
   302 
   302 
   303 subsection {* sublattice *}
   303 subsection {* sublattice *}
   304 
   304 
   305 lemma (in PO) sublattice_imp_CL:
   305 lemma (in PO) sublattice_imp_CL:
   306      "S <\<subseteq> cl  ==> (| pset = S, order = induced S r |) \<in> CompleteLattice"
   306      "S <<= cl  ==> (| pset = S, order = induced S r |) \<in> CompleteLattice"
   307 by (simp add: sublattice_def CompleteLattice_def A_def r_def)
   307 by (simp add: sublattice_def CompleteLattice_def A_def r_def)
   308 
   308 
   309 lemma (in CL) sublatticeI:
   309 lemma (in CL) sublatticeI:
   310      "[| S \<subseteq> A; (| pset = S, order = induced S r |) \<in> CompleteLattice |]
   310      "[| S \<subseteq> A; (| pset = S, order = induced S r |) \<in> CompleteLattice |]
   311       ==> S <\<subseteq> cl"
   311       ==> S <<= cl"
   312 by (simp add: sublattice_def A_def r_def)
   312 by (simp add: sublattice_def A_def r_def)
   313 
   313 
   314 
   314 
   315 subsection {* lub *}
   315 subsection {* lub *}
   316 
   316 
   657 
   657 
   658 lemmas (in CLF) intv_CL_glb = intv_CL_lub [THEN Rdual]
   658 lemmas (in CLF) intv_CL_glb = intv_CL_lub [THEN Rdual]
   659 
   659 
   660 lemma (in CLF) interval_is_sublattice:
   660 lemma (in CLF) interval_is_sublattice:
   661      "[| a \<in> A; b \<in> A; interval r a b \<noteq> {} |]
   661      "[| a \<in> A; b \<in> A; interval r a b \<noteq> {} |]
   662         ==> interval r a b <\<subseteq> cl"
   662         ==> interval r a b <<= cl"
   663 apply (rule sublatticeI)
   663 apply (rule sublatticeI)
   664 apply (simp add: interval_subset)
   664 apply (simp add: interval_subset)
   665 apply (rule CompleteLatticeI)
   665 apply (rule CompleteLatticeI)
   666 apply (simp add: intervalPO)
   666 apply (simp add: intervalPO)
   667  apply (simp add: intv_CL_lub)
   667  apply (simp add: intv_CL_lub)
   735 apply (rule subset_trans [OF _ fix_subset])
   735 apply (rule subset_trans [OF _ fix_subset])
   736 apply (rule Y_ss [simplified P_def])
   736 apply (rule Y_ss [simplified P_def])
   737 done
   737 done
   738 
   738 
   739 lemma (in Tarski) lubY_in_A: "lub Y cl \<in> A"
   739 lemma (in Tarski) lubY_in_A: "lub Y cl \<in> A"
   740 by (simp add: Y_subset_A [THEN lub_in_lattice])
   740   by (rule Y_subset_A [THEN lub_in_lattice])
   741 
   741 
   742 lemma (in Tarski) lubY_le_flubY: "(lub Y cl, f (lub Y cl)) \<in> r"
   742 lemma (in Tarski) lubY_le_flubY: "(lub Y cl, f (lub Y cl)) \<in> r"
   743 apply (rule lub_least)
   743 apply (rule lub_least)
   744 apply (rule Y_subset_A)
   744 apply (rule Y_subset_A)
   745 apply (rule f_in_funcset [THEN funcset_mem])
   745 apply (rule f_in_funcset [THEN funcset_mem])