diff -r e050178e1048 -r 549001f2401d src/Tools/isac/calcelems.sml --- a/src/Tools/isac/calcelems.sml Thu Jun 19 08:12:08 2014 +0200 +++ b/src/Tools/isac/calcelems.sml Thu Jun 19 08:15:50 2014 +0200 @@ -879,23 +879,22 @@ "consider setting 'check_guhs_unique := false'") else (); -fun insrt _ pbt [k] [] = [Ptyp (k, [pbt],[])] - | insrt d pbt [k] ((Ptyp (k', [p], ps))::pys) = -((*tracing("### insert 1: ks = "^(strs2str [k])^" k'= "^k');*) - if k=k' - then ((Ptyp (k', [pbt], ps))::pys) - else (*ev.newly added pbt is free _only_ with 'last_elem pblID'*) - ((Ptyp (k', [p], ps))::(insrt d pbt [k] pys)) -) +fun insrt _ pbt [k] [] = [Ptyp (k, [pbt], [])] + | insrt d pbt [k] ((Ptyp (k', [p], ps)) :: pys) = + ((*writeln ("### insert 1: ks = " ^ strs2str [k] ^ " k'= " ^ k');*) + if k = k' + then ((Ptyp (k', [pbt], ps)) :: pys) + else ((Ptyp (k', [p], ps)) :: (insrt d pbt [k] pys)) + ) | insrt d pbt (k::ks) ((Ptyp (k', [p], ps))::pys) = -((*tracing("### insert 2: ks = "^(strs2str (k::ks))^" k'= "^k');*) - if k=k' - then ((Ptyp (k', [p], insrt d pbt ks ps))::pys) - else - if length pys = 0 - then error ("insert: not found "^(strs2str (d:pblID))) - else ((Ptyp (k', [p], ps))::(insrt d pbt (k::ks) pys)) -); + ((*writeln ("### insert 2: ks = "^(strs2str (k::ks))^" k'= "^k');*) + if k = k' + then ((Ptyp (k', [p], insrt d pbt ks ps)) :: pys) + else + if length pys = 0 + then error ("insert: not found " ^ (strs2str (d : pblID))) + else ((Ptyp (k', [p], ps)) :: (insrt d pbt (k :: ks) pys)) + ); fun update_ptyps ID _ _ [] = error ("update_ptyps: " ^ strs2str' ID ^ " does not exist")