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 |