src/Tools/isac/Interpret/calchead.sml
branchisac-update-Isa09-2
changeset 38012 f57ddfd09474
parent 38011 3147f2c1525c
child 38015 67ba02dffacc
equal deleted inserted replaced
38011:3147f2c1525c 38012:f57ddfd09474
   926 
   926 
   927 (*.can this formal argument (of a model-pattern) be omitted in the arg-list
   927 (*.can this formal argument (of a model-pattern) be omitted in the arg-list
   928    of a SubProblem ? see ME/ptyps.sml 'type met '.*)
   928    of a SubProblem ? see ME/ptyps.sml 'type met '.*)
   929 fun is_copy_named_idstr str =
   929 fun is_copy_named_idstr str =
   930     case (rev o explode) str of
   930     case (rev o explode) str of
   931       (*"_":: _ ::"_"::_ => true*)
       
   932 	"'":: _ ::"'"::_ => (tracing ((strs2str o (rev o explode)) 
   931 	"'":: _ ::"'"::_ => (tracing ((strs2str o (rev o explode)) 
   933                                   "is_copy_named_idstr: " ^ str ^ " T"); true)
   932                                   "is_copy_named_idstr: " ^ str ^ " T"); true)
   934       | _ => (tracing ((strs2str o (rev o explode)) 
   933       | _ => (tracing ((strs2str o (rev o explode)) 
   935                                   "is_copy_named_idstr: " ^ str ^ " F"); false);
   934                                   "is_copy_named_idstr: " ^ str ^ " F"); false);
   936 fun is_copy_named (_, (_, t)) = (is_copy_named_idstr o free2str) t;
   935 fun is_copy_named (_, (_, t)) = (is_copy_named_idstr o free2str) t;
   937 
   936 
   938 (*.should this formal argument (of a model-pattern) create a new identifier?.*)
   937 (*.should this formal argument (of a model-pattern) create a new identifier?.*)
   939 fun is_copy_named_generating_idstr str =
   938 fun is_copy_named_generating_idstr str =
   940     if is_copy_named_idstr str
   939     if is_copy_named_idstr str
   941     then case (rev o explode) str of
   940     then case (rev o explode) str of
   942       (*"_"::"_"::"_"::_ => false*)
       
   943 	"'"::"'"::"'"::_ => false
   941 	"'"::"'"::"'"::_ => false
   944       | _ => true
   942       | _ => true
   945     else false;
   943     else false;
   946 fun is_copy_named_generating (_, (_, t)) = 
   944 fun is_copy_named_generating (_, (_, t)) = 
   947     (is_copy_named_generating_idstr o free2str) t;
   945     (is_copy_named_generating_idstr o free2str) t;
  1005    by use of oris relating "v_i_" (is_copy_named!) to "v_"
  1003    by use of oris relating "v_i_" (is_copy_named!) to "v_"
  1006    e.g. (v_, x) & (v_i_, ?) --> (v_i_, x_i) *)
  1004    e.g. (v_, x) & (v_i_, ?) --> (v_i_, x_i) *)
  1007 
  1005 
  1008 (* generate a new variable "x_i" name from a related given one "x"
  1006 (* generate a new variable "x_i" name from a related given one "x"
  1009    by use of oris relating "v_v'i'" (is_copy_named!) to "v_v"
  1007    by use of oris relating "v_v'i'" (is_copy_named!) to "v_v"
  1010    e.g. (v_v, x) & (v_v'i', ?) --> (v_v'i', x_i) *)
  1008    e.g. (v_v, x) & (v_v'i', ?) --> (v_v'i', x_i),
       
  1009    but leave is_copy_named_generating as is, e.t. ss''' *)
  1011 fun cpy_nam (pbt:pat list) (oris:preori list) (p as (field,(dsc,t)):pat) =
  1010 fun cpy_nam (pbt:pat list) (oris:preori list) (p as (field,(dsc,t)):pat) =
  1012   (if is_copy_named_generating p
  1011   (if is_copy_named_generating p
  1013    then (*WN051014 kept strange old code ...*)
  1012    then (*WN051014 kept strange old code ...*)
  1014        let fun sel (_,_,d,ts) = comp_ts (d, ts) 
  1013        let fun sel (_,_,d,ts) = comp_ts (d, ts) 
  1015 	   val cy' = (implode o (drop_last_n 3) o explode o free2str) t
  1014 	   val cy' = (implode o (drop_last_n 3) o explode o free2str) t