src/HOL/Lambda/ParRed.thy
changeset 23750 a1db5f819d00
parent 22271 51a80e238b29
child 25972 94b15338da8d
equal deleted inserted replaced
23749:ac6d3a8d22b5 23750:a1db5f819d00
    12 theory ParRed imports Lambda Commutation begin
    12 theory ParRed imports Lambda Commutation begin
    13 
    13 
    14 
    14 
    15 subsection {* Parallel reduction *}
    15 subsection {* Parallel reduction *}
    16 
    16 
    17 inductive2 par_beta :: "[dB, dB] => bool"  (infixl "=>" 50)
    17 inductive par_beta :: "[dB, dB] => bool"  (infixl "=>" 50)
    18   where
    18   where
    19     var [simp, intro!]: "Var n => Var n"
    19     var [simp, intro!]: "Var n => Var n"
    20   | abs [simp, intro!]: "s => t ==> Abs s => Abs t"
    20   | abs [simp, intro!]: "s => t ==> Abs s => Abs t"
    21   | app [simp, intro!]: "[| s => s'; t => t' |] ==> s \<degree> t => s' \<degree> t'"
    21   | app [simp, intro!]: "[| s => s'; t => t' |] ==> s \<degree> t => s' \<degree> t'"
    22   | beta [simp, intro!]: "[| s => s'; t => t' |] ==> (Abs s) \<degree> t => s'[t'/0]"
    22   | beta [simp, intro!]: "[| s => s'; t => t' |] ==> (Abs s) \<degree> t => s'[t'/0]"
    23 
    23 
    24 inductive_cases2 par_beta_cases [elim!]:
    24 inductive_cases par_beta_cases [elim!]:
    25   "Var n => t"
    25   "Var n => t"
    26   "Abs s => Abs t"
    26   "Abs s => Abs t"
    27   "(Abs s) \<degree> t => u"
    27   "(Abs s) \<degree> t => u"
    28   "s \<degree> t => u"
    28   "s \<degree> t => u"
    29   "Abs s => t"
    29   "Abs s => t"
    48 
    48 
    49 lemma par_beta_subset_beta: "par_beta <= beta^**"
    49 lemma par_beta_subset_beta: "par_beta <= beta^**"
    50   apply (rule predicate2I)
    50   apply (rule predicate2I)
    51   apply (erule par_beta.induct)
    51   apply (erule par_beta.induct)
    52      apply blast
    52      apply blast
    53     apply (blast del: rtrancl.rtrancl_refl intro: rtrancl.rtrancl_into_rtrancl)+
    53     apply (blast del: rtranclp.rtrancl_refl intro: rtranclp.rtrancl_into_rtrancl)+
    54       -- {* @{thm[source] rtrancl_refl} complicates the proof by increasing the branching factor *}
    54       -- {* @{thm[source] rtrancl_refl} complicates the proof by increasing the branching factor *}
    55   done
    55   done
    56 
    56 
    57 
    57 
    58 subsection {* Misc properties of par-beta *}
    58 subsection {* Misc properties of par-beta *}