src/HOL/IMP/Abs_Int2_ivl.thy
changeset 67399 eab6ce8368fa
parent 61890 f6ded81f5690
child 67406 23307fd33906
equal deleted inserted replaced
67398:5eb932e604a2 67399:eab6ce8368fa
   301 lemma add_mono_Fin_le:
   301 lemma add_mono_Fin_le:
   302   "\<lbrakk>Fin y1 \<le> x1; Fin y2 \<le> x2\<rbrakk> \<Longrightarrow> Fin(y1 + y2::'a::ordered_ab_group_add) \<le> x1 + x2"
   302   "\<lbrakk>Fin y1 \<le> x1; Fin y2 \<le> x2\<rbrakk> \<Longrightarrow> Fin(y1 + y2::'a::ordered_ab_group_add) \<le> x1 + x2"
   303 by(drule (1) add_mono) simp
   303 by(drule (1) add_mono) simp
   304 
   304 
   305 global_interpretation Val_semilattice
   305 global_interpretation Val_semilattice
   306 where \<gamma> = \<gamma>_ivl and num' = num_ivl and plus' = "op +"
   306 where \<gamma> = \<gamma>_ivl and num' = num_ivl and plus' = "(+)"
   307 proof (standard, goal_cases)
   307 proof (standard, goal_cases)
   308   case 1 thus ?case by transfer (simp add: le_iff_subset)
   308   case 1 thus ?case by transfer (simp add: le_iff_subset)
   309 next
   309 next
   310   case 2 show ?case by transfer (simp add: \<gamma>_rep_def)
   310   case 2 show ?case by transfer (simp add: \<gamma>_rep_def)
   311 next
   311 next
   317     by(auto simp: empty_rep_def is_empty_rep_def)
   317     by(auto simp: empty_rep_def is_empty_rep_def)
   318 qed
   318 qed
   319 
   319 
   320 
   320 
   321 global_interpretation Val_lattice_gamma
   321 global_interpretation Val_lattice_gamma
   322 where \<gamma> = \<gamma>_ivl and num' = num_ivl and plus' = "op +"
   322 where \<gamma> = \<gamma>_ivl and num' = num_ivl and plus' = "(+)"
   323 defines aval_ivl = aval'
   323 defines aval_ivl = aval'
   324 proof (standard, goal_cases)
   324 proof (standard, goal_cases)
   325   case 1 show ?case by(simp add: \<gamma>_inf)
   325   case 1 show ?case by(simp add: \<gamma>_inf)
   326 next
   326 next
   327   case 2 show ?case unfolding bot_ivl_def by transfer simp
   327   case 2 show ?case unfolding bot_ivl_def by transfer simp
   328 qed
   328 qed
   329 
   329 
   330 global_interpretation Val_inv
   330 global_interpretation Val_inv
   331 where \<gamma> = \<gamma>_ivl and num' = num_ivl and plus' = "op +"
   331 where \<gamma> = \<gamma>_ivl and num' = num_ivl and plus' = "(+)"
   332 and test_num' = in_ivl
   332 and test_num' = in_ivl
   333 and inv_plus' = inv_plus_ivl and inv_less' = inv_less_ivl
   333 and inv_plus' = inv_plus_ivl and inv_less' = inv_less_ivl
   334 proof (standard, goal_cases)
   334 proof (standard, goal_cases)
   335   case 1 thus ?case by transfer (auto simp: \<gamma>_rep_def)
   335   case 1 thus ?case by transfer (auto simp: \<gamma>_rep_def)
   336 next
   336 next
   349     apply(simp add: \<gamma>_aboveI[of i2] \<gamma>_belowI[of i1])
   349     apply(simp add: \<gamma>_aboveI[of i2] \<gamma>_belowI[of i1])
   350     done
   350     done
   351 qed
   351 qed
   352 
   352 
   353 global_interpretation Abs_Int_inv
   353 global_interpretation Abs_Int_inv
   354 where \<gamma> = \<gamma>_ivl and num' = num_ivl and plus' = "op +"
   354 where \<gamma> = \<gamma>_ivl and num' = num_ivl and plus' = "(+)"
   355 and test_num' = in_ivl
   355 and test_num' = in_ivl
   356 and inv_plus' = inv_plus_ivl and inv_less' = inv_less_ivl
   356 and inv_plus' = inv_plus_ivl and inv_less' = inv_less_ivl
   357 defines inv_aval_ivl = inv_aval'
   357 defines inv_aval_ivl = inv_aval'
   358 and inv_bval_ivl = inv_bval'
   358 and inv_bval_ivl = inv_bval'
   359 and step_ivl = step'
   359 and step_ivl = step'
   383 apply transfer
   383 apply transfer
   384 apply(auto simp: below_rep_def le_iff_subset split: if_splits prod.split)
   384 apply(auto simp: below_rep_def le_iff_subset split: if_splits prod.split)
   385 by(auto simp: is_empty_rep_iff \<gamma>_rep_cases split: extended.splits)
   385 by(auto simp: is_empty_rep_iff \<gamma>_rep_cases split: extended.splits)
   386 
   386 
   387 global_interpretation Abs_Int_inv_mono
   387 global_interpretation Abs_Int_inv_mono
   388 where \<gamma> = \<gamma>_ivl and num' = num_ivl and plus' = "op +"
   388 where \<gamma> = \<gamma>_ivl and num' = num_ivl and plus' = "(+)"
   389 and test_num' = in_ivl
   389 and test_num' = in_ivl
   390 and inv_plus' = inv_plus_ivl and inv_less' = inv_less_ivl
   390 and inv_plus' = inv_plus_ivl and inv_less' = inv_less_ivl
   391 proof (standard, goal_cases)
   391 proof (standard, goal_cases)
   392   case 1 thus ?case by (rule mono_plus_ivl)
   392   case 1 thus ?case by (rule mono_plus_ivl)
   393 next
   393 next