src/HOL/Transitive_Closure.thy
changeset 10331 7411e4659d4a
parent 10213 01c2744a3786
child 10565 7f7c1c3511e2
equal deleted inserted replaced
10330:4362e906b745 10331:7411e4659d4a
     7 
     7 
     8 rtrancl is reflexive/transitive closure;
     8 rtrancl is reflexive/transitive closure;
     9 trancl  is transitive closure
     9 trancl  is transitive closure
    10 reflcl  is reflexive closure
    10 reflcl  is reflexive closure
    11 
    11 
    12 These postfix operators have MAXIMUM PRIORITY, forcing their operands to be
    12 These postfix operators have MAXIMUM PRIORITY, forcing their operands
    13       atomic.
    13 to be atomic.
    14 *)
    14 *)
    15 
    15 
    16 Transitive_Closure = Lfp + Relation + 
    16 Transitive_Closure = Lfp + Relation + 
    17 
    17 
    18 constdefs
    18 constdefs
    19   rtrancl :: "('a * 'a)set => ('a * 'a)set"   ("(_^*)" [1000] 999)
    19   rtrancl :: "('a * 'a) set => ('a * 'a) set"    ("(_^*)" [1000] 999)
    20   "r^*  ==  lfp(%s. Id Un (r O s))"
    20   "r^* == lfp (%s. Id Un (r O s))"
    21 
    21 
    22   trancl  :: "('a * 'a)set => ('a * 'a)set"   ("(_^+)" [1000] 999)
    22   trancl :: "('a * 'a) set => ('a * 'a) set"    ("(_^+)" [1000] 999)
    23   "r^+  ==  r O rtrancl(r)"
    23   "r^+ ==  r O rtrancl r"
    24 
    24 
    25 syntax
    25 syntax
    26   "_reflcl"  :: "('a*'a)set => ('a*'a)set"       ("(_^=)" [1000] 999)
    26   "_reflcl" :: "('a * 'a) set => ('a * 'a) set"    ("(_^=)" [1000] 999)
    27 
       
    28 translations
    27 translations
    29   "r^=" == "r Un Id"
    28   "r^=" == "r Un Id"
    30 
    29 
       
    30 syntax (xsymbols)
       
    31   rtrancl :: "('a * 'a) set => ('a * 'a) set"    ("(_\\<^sup>*)" [1000] 999)
       
    32   trancl :: "('a * 'a) set => ('a * 'a) set"    ("(_\\<^sup>+)" [1000] 999)
       
    33   "_reflcl" :: "('a * 'a) set => ('a * 'a) set"    ("(_\\<^sup>=)" [1000] 999)
       
    34 
    31 end
    35 end