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 |