src/HOL/Proofs/Lambda/ListApplication.thy
changeset 67399 eab6ce8368fa
parent 66311 037aaa0b6daf
equal deleted inserted replaced
67398:5eb932e604a2 67399:eab6ce8368fa
     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