equal
deleted
inserted
replaced
7 |
7 |
8 theory ListApplication imports Lambda begin |
8 theory ListApplication imports Lambda begin |
9 |
9 |
10 abbreviation |
10 abbreviation |
11 list_application :: "dB => dB list => dB" (infixl "\<degree>\<degree>" 150) where |
11 list_application :: "dB => dB list => dB" (infixl "\<degree>\<degree>" 150) where |
12 "t \<degree>\<degree> ts == foldl (op \<degree>) t ts" |
12 "t \<degree>\<degree> ts == foldl (\<degree>) t ts" |
13 |
13 |
14 lemma apps_eq_tail_conv [iff]: "(r \<degree>\<degree> ts = s \<degree>\<degree> ts) = (r = s)" |
14 lemma apps_eq_tail_conv [iff]: "(r \<degree>\<degree> ts = s \<degree>\<degree> ts) = (r = s)" |
15 by (induct ts rule: rev_induct) auto |
15 by (induct ts rule: rev_induct) auto |
16 |
16 |
17 lemma Var_eq_apps_conv [iff]: "(Var m = s \<degree>\<degree> ss) = (Var m = s \<and> ss = [])" |
17 lemma Var_eq_apps_conv [iff]: "(Var m = s \<degree>\<degree> ss) = (Var m = s \<and> ss = [])" |
73 apply simp |
73 apply simp |
74 apply simp |
74 apply simp |
75 done |
75 done |
76 |
76 |
77 lemma size_apps [simp]: |
77 lemma size_apps [simp]: |
78 "size (r \<degree>\<degree> rs) = size r + foldl (op +) 0 (map size rs) + length rs" |
78 "size (r \<degree>\<degree> rs) = size r + foldl (+) 0 (map size rs) + length rs" |
79 by (induct rs rule: rev_induct) auto |
79 by (induct rs rule: rev_induct) auto |
80 |
80 |
81 lemma lem0: "[| (0::nat) < k; m <= n |] ==> m < n + k" |
81 lemma lem0: "[| (0::nat) < k; m <= n |] ==> m < n + k" |
82 by simp |
82 by simp |
83 |
83 |