src/ZF/IMP/Evalc.ML
changeset 510 093665669f52
parent 496 3fc829fa81d2
equal deleted inserted replaced
509:8a2bcbd8479d 510:093665669f52
    10   val thy_name = "Evalc"
    10   val thy_name = "Evalc"
    11   val rec_doms = [("evalc","com * (loc -> nat) * (loc -> nat)")];
    11   val rec_doms = [("evalc","com * (loc -> nat) * (loc -> nat)")];
    12   val sintrs =
    12   val sintrs =
    13       [
    13       [
    14 	"[| sigma: loc -> nat |] ==> <skip,sigma> -c-> sigma",
    14 	"[| sigma: loc -> nat |] ==> <skip,sigma> -c-> sigma",
    15        	"[| m: nat; x: loc; <a,sigma> -a-> m |] ==> \
    15        	"[| m: nat; x: loc; a:aexp; <a,sigma> -a-> m |] ==> \
    16 \          <X(x) := a,sigma> -c-> sigma[m/x]" , 
    16 \          <X(x) := a,sigma> -c-> sigma[m/x]" , 
    17        "[| <c0,sigma> -c-> sigma2; <c1,sigma2> -c-> sigma1 |] ==> \
    17        "[| <c0,sigma> -c-> sigma2; <c1,sigma2> -c-> sigma1 |] ==> \
    18 \          <c0 ; c1, sigma> -c-> sigma1",
    18 \          <c0 ; c1, sigma> -c-> sigma1",
    19        "[| c1: com; <b,sigma> -b-> 1; <c0,sigma> -c-> sigma1 |] ==> \
    19        "[| b:bexp; c1:com; sigma:loc->nat;\
    20 \          <ifc b then c0 else c1, sigma> -c-> sigma1 ",
    20 \          <b,sigma> -b-> 1; <c0,sigma> -c-> sigma1 |] ==> \
    21        "[| c0 : com; <b,sigma> -b-> 0; <c1,sigma> -c-> sigma1 |] ==> \
    21 \       <ifc b then c0 else c1, sigma> -c-> sigma1 ",
    22 \          <ifc b then c0 else c1, sigma> -c-> sigma1 ",
    22        "[| b:bexp; c0:com; sigma:loc->nat;\
    23        "[| c: com; <b, sigma> -b-> 0 |] ==> \
    23 \          <b,sigma> -b-> 0; <c1,sigma> -c-> sigma1 |] ==> \
       
    24 \       <ifc b then c0 else c1, sigma> -c-> sigma1 ",
       
    25        "[| b:bexp; c:com; <b, sigma> -b-> 0 |] ==> \
    24 \          <while b do c,sigma> -c-> sigma ",
    26 \          <while b do c,sigma> -c-> sigma ",
    25        "[| c : com; <b,sigma> -b-> 1; <c,sigma> -c-> sigma2; \
    27        "[| b:bexp; c:com; <b,sigma> -b-> 1; <c,sigma> -c-> sigma2; \
    26 \          <while b do c, sigma2> -c-> sigma1 |] ==> \
    28 \          <while b do c, sigma2> -c-> sigma1 |] ==> \
    27 \          <while b do c, sigma> -c-> sigma1 "];
    29 \          <while b do c, sigma> -c-> sigma1 "];
    28 
    30 
    29   val monos = [];
    31   val monos = [];
    30   val con_defs = [assign_def];
    32   val con_defs = [assign_def];