Subst/Subst.thy
changeset 249 492493334e0f
parent 48 21291189b51e
equal deleted inserted replaced
248:c3913a79b6ae 249:492493334e0f
    10 consts
    10 consts
    11 
    11 
    12   "=s="  ::  "[('a*('a uterm)) list,('a*('a uterm)) list] => bool" (infixr 52)
    12   "=s="  ::  "[('a*('a uterm)) list,('a*('a uterm)) list] => bool" (infixr 52)
    13 
    13 
    14   "<|"   ::  "['a uterm,('a*('a uterm)) list] => 'a uterm"         (infixl 55)
    14   "<|"   ::  "['a uterm,('a*('a uterm)) list] => 'a uterm"         (infixl 55)
    15   "<>"   ::  "[('a*('a uterm)) list, ('a*('a uterm)) list] => \
    15   "<>"   ::  "[('a*('a uterm)) list, ('a*('a uterm)) list] => 
    16 \                                    ('a*('a uterm)) list"         (infixl 56)
    16                                     ('a*('a uterm)) list"         (infixl 56)
    17   sdom   ::  "('a*('a uterm)) list => 'a set"
    17   sdom   ::  "('a*('a uterm)) list => 'a set"
    18   srange ::  "('a*('a uterm)) list => 'a set"
    18   srange ::  "('a*('a uterm)) list => 'a set"
    19 
    19 
    20 rules 
    20 rules 
    21 
    21 
    22   subst_eq_def  "r =s= s == ALL t.t <| r = t <| s"
    22   subst_eq_def  "r =s= s == ALL t.t <| r = t <| s"
    23 
    23 
    24   subst_def    
    24   subst_def    
    25   "t <| al == uterm_rec(t, %x.assoc(x,Var(x),al),	\
    25   "t <| al == uterm_rec(t, %x.assoc(x,Var(x),al),	
    26 \                          %x.Const(x),			\
    26                           %x.Const(x),			
    27 \                          %u v q r.Comb(q,r))"
    27                           %u v q r.Comb(q,r))"
    28 
    28 
    29   comp_def     "al <> bl == alist_rec(al,bl,%x y xs g.<x,y <| bl>#g)"
    29   comp_def     "al <> bl == alist_rec(al,bl,%x y xs g.<x,y <| bl>#g)"
    30 
    30 
    31   sdom_def
    31   sdom_def
    32   "sdom(al) == alist_rec(al, {},  \
    32   "sdom(al) == alist_rec(al, {},  
    33 \                        %x y xs g.if(Var(x)=y, g Int Compl({x}), g Un {x}))"
    33                         %x y xs g.if(Var(x)=y, g Int Compl({x}), g Un {x}))"
    34   srange_def   
    34   srange_def   
    35   "srange(al) == Union({y. EX x:sdom(al).y=vars_of(Var(x) <| al)})"
    35   "srange(al) == Union({y. EX x:sdom(al).y=vars_of(Var(x) <| al)})"
    36 
    36 
    37 end
    37 end