src/HOL/Lambda/ParRed.thy
changeset 1376 92f83b9d17e1
parent 1269 ee011b365770
child 1789 aade046ec6d5
equal deleted inserted replaced
1375:d04af07266e8 1376:92f83b9d17e1
     8 
     8 
     9 ParRed = Lambda + Commutation +
     9 ParRed = Lambda + Commutation +
    10 
    10 
    11 consts  par_beta :: "(db * db) set"
    11 consts  par_beta :: "(db * db) set"
    12 
    12 
    13 syntax  "=>" :: "[db,db] => bool" (infixl 50)
    13 syntax  "=>" :: [db,db] => bool (infixl 50)
    14 
    14 
    15 translations
    15 translations
    16   "s => t" == "(s,t) : par_beta"
    16   "s => t" == "(s,t) : par_beta"
    17 
    17 
    18 inductive "par_beta"
    18 inductive "par_beta"
    21     abs   "s => t ==> Fun s => Fun t"
    21     abs   "s => t ==> Fun s => Fun t"
    22     app   "[| s => s'; t => t' |] ==> s @ t => s' @ t'"
    22     app   "[| s => s'; t => t' |] ==> s @ t => s' @ t'"
    23     beta  "[| s => s'; t => t' |] ==> (Fun s) @ t => s'[t'/0]"
    23     beta  "[| s => s'; t => t' |] ==> (Fun s) @ t => s'[t'/0]"
    24 
    24 
    25 consts
    25 consts
    26   cd  :: "db => db"
    26   cd  :: db => db
    27   deFun :: "db => db"
    27   deFun :: db => db
    28 
    28 
    29 primrec cd db
    29 primrec cd db
    30   cd_Var "cd(Var n) = Var n"
    30   cd_Var "cd(Var n) = Var n"
    31   cd_App "cd(s @ t) = (case s of
    31   cd_App "cd(s @ t) = (case s of
    32             Var n => s @ (cd t) |
    32             Var n => s @ (cd t) |