src/HOL/Trancl.thy
changeset 972 e61b058d58d2
parent 923 ff1574a81019
child 1128 64b30e3cc6d4
equal deleted inserted replaced
971:f4815812665b 972:e61b058d58d2
    14     id	    :: "('a * 'a)set"
    14     id	    :: "('a * 'a)set"
    15     rtrancl :: "('a * 'a)set => ('a * 'a)set"	("(_^*)" [100] 100)
    15     rtrancl :: "('a * 'a)set => ('a * 'a)set"	("(_^*)" [100] 100)
    16     trancl  :: "('a * 'a)set => ('a * 'a)set"	("(_^+)" [100] 100)  
    16     trancl  :: "('a * 'a)set => ('a * 'a)set"	("(_^+)" [100] 100)  
    17     O	    :: "[('b * 'c)set, ('a * 'b)set] => ('a * 'c)set" (infixr 60)
    17     O	    :: "[('b * 'c)set, ('a * 'b)set] => ('a * 'c)set" (infixr 60)
    18 defs   
    18 defs   
    19 trans_def	"trans(r) == (!x y z. <x,y>:r --> <y,z>:r --> <x,z>:r)"
    19 trans_def	"trans(r) == (!x y z. (x,y):r --> (y,z):r --> (x,z):r)"
    20 comp_def	(*composition of relations*)
    20 comp_def	(*composition of relations*)
    21 		"r O s == {xz. ? x y z. xz = <x,z> & <x,y>:s & <y,z>:r}"
    21 		"r O s == {xz. ? x y z. xz = (x,z) & (x,y):s & (y,z):r}"
    22 id_def		(*the identity relation*)
    22 id_def		(*the identity relation*)
    23 		"id == {p. ? x. p = <x,x>}"
    23 		"id == {p. ? x. p = (x,x)}"
    24 rtrancl_def	"r^* == lfp(%s. id Un (r O s))"
    24 rtrancl_def	"r^* == lfp(%s. id Un (r O s))"
    25 trancl_def	"r^+ == r O rtrancl(r)"
    25 trancl_def	"r^+ == r O rtrancl(r)"
    26 end
    26 end