src/HOL/Library/SetsAndFunctions.thy
changeset 19380 b808efaa5828
parent 17161 57c69627d71a
child 19656 09be06943252
equal deleted inserted replaced
19379:c8cf1544b5a7 19380:b808efaa5828
    56   "a +o B == {c. EX b:B. c = a + b}"
    56   "a +o B == {c. EX b:B. c = a + b}"
    57 
    57 
    58   elt_set_times :: "'a::times => 'a set => 'a set"  (infixl "*o" 80)
    58   elt_set_times :: "'a::times => 'a set => 'a set"  (infixl "*o" 80)
    59   "a *o B == {c. EX b:B. c = a * b}"
    59   "a *o B == {c. EX b:B. c = a * b}"
    60 
    60 
    61 syntax
    61 abbreviation (inout)
    62   "elt_set_eq" :: "'a => 'a set => bool"      (infix "=o" 50)
    62   elt_set_eq :: "'a => 'a set => bool"      (infix "=o" 50)
    63 
    63   "x =o A == x : A"
    64 translations
       
    65   "x =o A" => "x : A"
       
    66 
    64 
    67 instance fun :: (type,semigroup_add)semigroup_add
    65 instance fun :: (type,semigroup_add)semigroup_add
    68   apply intro_classes
    66   by default (auto simp add: func_plus add_assoc)
    69   apply (auto simp add: func_plus add_assoc)
       
    70 done
       
    71 
    67 
    72 instance fun :: (type,comm_monoid_add)comm_monoid_add
    68 instance fun :: (type,comm_monoid_add)comm_monoid_add
    73   apply intro_classes
    69   by default (auto simp add: func_zero func_plus add_ac)
    74   apply (auto simp add: func_zero func_plus add_ac)
       
    75 done
       
    76 
    70 
    77 instance fun :: (type,ab_group_add)ab_group_add
    71 instance fun :: (type,ab_group_add)ab_group_add
    78   apply intro_classes
    72   apply intro_classes
    79   apply (simp add: func_minus func_plus func_zero)
    73   apply (simp add: func_minus func_plus func_zero)
    80   apply (simp add: func_minus func_plus func_diff diff_minus)
    74   apply (simp add: func_minus func_plus func_diff diff_minus)
   348     elt_set_plus_def elt_set_times_def set_times 
   342     elt_set_plus_def elt_set_times_def set_times 
   349     set_plus ring_distrib)
   343     set_plus ring_distrib)
   350   apply auto
   344   apply auto
   351 done
   345 done
   352 
   346 
   353 theorems set_times_plus_distribs = set_times_plus_distrib
   347 theorems set_times_plus_distribs =
       
   348   set_times_plus_distrib
   354   set_times_plus_distrib2
   349   set_times_plus_distrib2
   355 
   350 
   356 lemma set_neg_intro: "(a::'a::ring_1) : (- 1) *o C ==> 
   351 lemma set_neg_intro: "(a::'a::ring_1) : (- 1) *o C ==> 
   357     - a : C" 
   352     - a : C" 
   358 by (auto simp add: elt_set_times_def)
   353 by (auto simp add: elt_set_times_def)