src/HOL/Set_Interval.thy
changeset 70749 5d06b7bb9d22
parent 70746 cf7b5020c207
child 70817 dd675800469d
equal deleted inserted replaced
70748:b3b84b71e398 70749:5d06b7bb9d22
   243 
   243 
   244 lemma atLeastatMost_psubset_iff:
   244 lemma atLeastatMost_psubset_iff:
   245   "{a..b} < {c..d} \<longleftrightarrow>
   245   "{a..b} < {c..d} \<longleftrightarrow>
   246    ((\<not> a \<le> b) \<or> c \<le> a \<and> b \<le> d \<and> (c < a \<or> b < d)) \<and> c \<le> d"
   246    ((\<not> a \<le> b) \<or> c \<le> a \<and> b \<le> d \<and> (c < a \<or> b < d)) \<and> c \<le> d"
   247   by(simp add: psubset_eq set_eq_iff less_le_not_le)(blast intro: order_trans)
   247   by(simp add: psubset_eq set_eq_iff less_le_not_le)(blast intro: order_trans)
       
   248 
       
   249 lemma atLeastAtMost_subseteq_atLeastLessThan_iff:
       
   250   "{a..b} \<subseteq> {c ..< d} \<longleftrightarrow> (a \<le> b \<longrightarrow> c \<le> a \<and> b < d)" 
       
   251   by auto (blast intro: local.order_trans local.le_less_trans elim: )+
   248 
   252 
   249 lemma Icc_subset_Ici_iff[simp]:
   253 lemma Icc_subset_Ici_iff[simp]:
   250   "{l..h} \<subseteq> {l'..} = (\<not> l\<le>h \<or> l\<ge>l')"
   254   "{l..h} \<subseteq> {l'..} = (\<not> l\<le>h \<or> l\<ge>l')"
   251   by(auto simp: subset_eq intro: order_trans)
   255   by(auto simp: subset_eq intro: order_trans)
   252 
   256 
   406 lemma greaterThanLessThan_subseteq_atLeastAtMost_iff:
   410 lemma greaterThanLessThan_subseteq_atLeastAtMost_iff:
   407   "{a <..< b} \<subseteq> { c .. d } \<longleftrightarrow> (a < b \<longrightarrow> c \<le> a \<and> b \<le> d)"
   411   "{a <..< b} \<subseteq> { c .. d } \<longleftrightarrow> (a < b \<longrightarrow> c \<le> a \<and> b \<le> d)"
   408   using dense[of "a" "min c b"] dense[of "max a d" "b"]
   412   using dense[of "a" "min c b"] dense[of "max a d" "b"]
   409   by (force simp: subset_eq Ball_def not_less[symmetric])
   413   by (force simp: subset_eq Ball_def not_less[symmetric])
   410 
   414 
   411 lemma atLeastAtMost_subseteq_atLeastLessThan_iff:
       
   412   "{a .. b} \<subseteq> { c ..< d } \<longleftrightarrow> (a \<le> b \<longrightarrow> c \<le> a \<and> b < d)"
       
   413   using dense[of "max a d" "b"]
       
   414   by (force simp: subset_eq Ball_def not_less[symmetric])
       
   415 
       
   416 lemma greaterThanLessThan_subseteq_greaterThanLessThan:
   415 lemma greaterThanLessThan_subseteq_greaterThanLessThan:
   417   "{a <..< b} \<subseteq> {c <..< d} \<longleftrightarrow> (a < b \<longrightarrow> a \<ge> c \<and> b \<le> d)"
   416   "{a <..< b} \<subseteq> {c <..< d} \<longleftrightarrow> (a < b \<longrightarrow> a \<ge> c \<and> b \<le> d)"
   418   using dense[of "a" "min c b"] dense[of "max a d" "b"]
   417   using dense[of "a" "min c b"] dense[of "max a d" "b"]
   419   by (force simp: subset_eq Ball_def not_less[symmetric])
   418   by (force simp: subset_eq Ball_def not_less[symmetric])
   420 
   419 
   461 
   460 
   462 lemma atLeastLessThan_inj:
   461 lemma atLeastLessThan_inj:
   463   fixes a b c d :: "'a::linorder"
   462   fixes a b c d :: "'a::linorder"
   464   assumes eq: "{a ..< b} = {c ..< d}" and "a < b" "c < d"
   463   assumes eq: "{a ..< b} = {c ..< d}" and "a < b" "c < d"
   465   shows "a = c" "b = d"
   464   shows "a = c" "b = d"
   466 using assms by (metis atLeastLessThan_subset_iff eq less_le_not_le linorder_antisym_conv2 subset_refl)+
   465 using assms by (metis atLeastLessThan_subset_iff eq less_le_not_le antisym_conv2 subset_refl)+
   467 
   466 
   468 lemma atLeastLessThan_eq_iff:
   467 lemma atLeastLessThan_eq_iff:
   469   fixes a b c d :: "'a::linorder"
   468   fixes a b c d :: "'a::linorder"
   470   assumes "a < b" "c < d"
   469   assumes "a < b" "c < d"
   471   shows "{a ..< b} = {c ..< d} \<longleftrightarrow> a = c \<and> b = d"
   470   shows "{a ..< b} = {c ..< d} \<longleftrightarrow> a = c \<and> b = d"