src/HOL/UNITY/Extend.thy
changeset 7482 7badd511844d
parent 7399 cf780c2bcccf
child 7537 875754b599df
equal deleted inserted replaced
7481:d44c77be268c 7482:7badd511844d
    10 
    10 
    11 Extend = Guar +
    11 Extend = Guar +
    12 
    12 
    13 constdefs
    13 constdefs
    14 
    14 
       
    15   good_map :: "['a*'b => 'c] => bool"
       
    16     "good_map h == surj h & (ALL x y. fst (inv h (h (x,y))) = x)"
       
    17      (*Using the locale constant "f", this is  f (h (x,y))) = x*)
       
    18   
    15   extend_set :: "['a*'b => 'c, 'a set] => 'c set"
    19   extend_set :: "['a*'b => 'c, 'a set] => 'c set"
    16     "extend_set h A == h `` (A Times UNIV)"
    20     "extend_set h A == h `` (A Times UNIV)"
    17 
    21 
    18   project_set :: "['a*'b => 'c, 'c set] => 'a set"
    22   project_set :: "['a*'b => 'c, 'c set] => 'a set"
    19     "project_set h C == {x. EX y. h(x,y) : C}"
    23     "project_set h C == {x. EX y. h(x,y) : C}"
    36   fixes 
    40   fixes 
    37     f       :: 'c => 'a
    41     f       :: 'c => 'a
    38     g       :: 'c => 'b
    42     g       :: 'c => 'b
    39     h       :: "'a*'b => 'c"    (*isomorphism between 'a * 'b and 'c *)
    43     h       :: "'a*'b => 'c"    (*isomorphism between 'a * 'b and 'c *)
    40     slice   :: ['c set, 'b] => 'a set
    44     slice   :: ['c set, 'b] => 'a set
    41     f_act   :: "('c * 'c) set => ('a*'a) set"
       
    42 
    45 
    43   assumes
    46   assumes
    44     bij_h  "bij h"
    47     good_h  "good_map h"
    45   defines
    48   defines
    46     f_def       "f z == fst (inv h z)"
    49     f_def       "f z == fst (inv h z)"
    47     g_def       "g z == snd (inv h z)"
    50     g_def       "g z == snd (inv h z)"
    48     slice_def   "slice Z y == {x. h(x,y) : Z}"
    51     slice_def   "slice Z y == {x. h(x,y) : Z}"
    49     f_act_def   "f_act act == (%(z,z'). (f z, f z')) `` act"
       
    50 
    52 
    51 end
    53 end