176 |
(* QUESTION: should we call rewrite on e? *) |
(* QUESTION: should we call rewrite on e? *) |
177 |
| (true, e, sx, _, _) => (ST.tick cntEpsToDeltas; E.Sum(sx, e)) |
| (true, e, sx, _, _) => (ST.tick cntEpsToDeltas; E.Sum(sx, e)) |
178 |
| (_, _, _, _, []) => body |
| (_, _, _, _, []) => body |
179 |
| (_, _, _, epsAll, rest) =>let |
| (_, _, _, epsAll, rest) => (case rewrite (mkProd rest) |
|
val _= print"\nrule H" |
|
|
val eB=rewrite (mkProd rest) |
|
|
in (case eB |
|
180 |
of E.Opn(E.Prod, p)=>filterProd (epsAll@p) |
of E.Opn(E.Prod, p)=>filterProd (epsAll@p) |
181 |
| _ =>filterProd (epsAll@[eB]) |
| es => filterProd (epsAll @ [es]) |
182 |
(* end case *)) |
(* end case *)) |
|
end |
|
183 |
(* end case *)) |
(* end case *)) |
184 |
(* end case *)) |
(* end case *)) |
185 |
| E.Opn(E.Prod, (s1 as E.Sum(c1, e1)) :: (s2 as E.Sum(c2, e2)) :: es) => ( |
| E.Opn(E.Prod, (s1 as E.Sum(c1, e1)) :: (s2 as E.Sum(c2, e2)) :: es) => ( |