1636 (([6], Res), (25 + 5 * b) / (5 * (a * b) + 5 * b ^^^ 2)), |
1637 (([6], Res), (25 + 5 * b) / (5 * (a * b) + 5 * b ^^^ 2)), |
1637 (([7], Res), (5 + b) / (a * b + b ^^^ 2)), |
1638 (([7], Res), (5 + b) / (a * b + b ^^^ 2)), |
1638 (([], Res), (5 + b) / (a * b + b ^^^ 2))] *) |
1639 (([], Res), (5 + b) / (a * b + b ^^^ 2))] *) |
1639 |
1640 |
1640 |
1641 |
1641 |
1642 "-------- WN1309xx non-terminating rls norm_Rational -------------------------"; |
|
1643 "-------- WN1309xx non-terminating rls norm_Rational -------------------------"; |
|
1644 "-------- WN1309xx non-terminating rls norm_Rational -------------------------"; |
|
1645 (*------- Schalk I, p.70 Nr. 480b; a/b : c/d translated to a/b * d/c*) |
|
1646 val t = str2term |
|
1647 ("((12*x*y / (9*x^^^2 - y^^^2)) / (1 / (3*x - y)^^^2 - 1 / (3*x + y)^^^2)) * " ^ |
|
1648 "((1/(x - 5*y)^^^2 - 1/(x + 5*y)^^^2) / (20*x*y / (x^^^2 - 25*y^^^2)))"); |
|
1649 |
|
1650 (*1st factor separately simplified *) |
|
1651 val t = str2term "((12*x*y / (9*x^^^2 - y^^^2)) / (1 / (3*x - y)^^^2 - 1 / (3*x + y)^^^2))"; |
|
1652 val SOME (t', _) = rewrite_set_ thy false norm_Rational t; |
|
1653 if term2str t' = "(-9 * x ^^^ 2 + y ^^^ 2) / -1" then () else error "Nr. 480b lhs changed"; |
|
1654 (*2nd factor separately simplified *) |
|
1655 val t = str2term "((1/(x - 5*y)^^^2 - 1/(x + 5*y)^^^2) / (20*x*y / (x^^^2 - 25*y^^^2)))"; |
|
1656 val SOME (t',_) = rewrite_set_ thy false norm_Rational t; term2str t'; |
|
1657 if term2str t' = "-1 / (-1 * x ^^^ 2 + 25 * y ^^^ 2)" then () else error "Nr. 480b rhs changed"; |
|
1658 |
|
1659 "-------- Schalk I, p.70 Nr. 477a: terms are exploding ?!?"; |
|
1660 val t = str2term ("b*y/(b - 2*y)/((b^^^2 - y^^^2)/(b+2*y)) /" ^ |
|
1661 "(b^^^2*y + b*y^^^2) * (a+x)^^^2 / ((b^^^2 - 4*y^^^2) * (a+2*x)^^^2)"); |
|
1662 (*val SOME (t',_) = rewrite_set_ thy false norm_Rational t; |
|
1663 : |
|
1664 ### rls: cancel_p on: (a ^^^ 2 * (b * y) + 2 * (a * (b * (x * y))) + b * (x ^^^ 2 * y)) / |
|
1665 (b + -2 * y) / |
|
1666 ((b ^^^ 2 + -1 * y ^^^ 2) / (b + 2 * y)) / |
|
1667 (b ^^^ 2 * y + b * y ^^^ 2) / |
|
1668 (a ^^^ 2 * b ^^^ 2 + -4 * (a ^^^ 2 * y ^^^ 2) + 4 * (a * (b ^^^ 2 * x)) + |
|
1669 -16 * (a * (x * y ^^^ 2)) + |
|
1670 4 * (b ^^^ 2 * x ^^^ 2) + |
|
1671 -16 * (x ^^^ 2 * y ^^^ 2)) |
|
1672 exception Div raised |
|
1673 |
|
1674 BUT |
|
1675 val t = str2term |
|
1676 ("(a ^^^ 2 * (b * y) + 2 * (a * (b * (x * y))) + b * (x ^^^ 2 * y)) /" ^ |
|
1677 "(b + -2 * y) /" ^ |
|
1678 "((b ^^^ 2 + -1 * y ^^^ 2) / (b + 2 * y)) /" ^ |
|
1679 "(b ^^^ 2 * y + b * y ^^^ 2) /" ^ |
|
1680 "(a ^^^ 2 * b ^^^ 2 + -4 * (a ^^^ 2 * y ^^^ 2) + 4 * (a * (b ^^^ 2 * x)) +" ^ |
|
1681 "-16 * (a * (x * y ^^^ 2)) +" ^ |
|
1682 "4 * (b ^^^ 2 * x ^^^ 2) +" ^ |
|
1683 "-16 * (x ^^^ 2 * y ^^^ 2))"); |
|
1684 NONE = cancel_p_ thy t; |
|
1685 *) |
|
1686 |
|
1687 (*------- Schalk I, p.70 Nr. 476b in 2003 this worked using 10 sec. *) |
|
1688 val t = str2term |
|
1689 ("((a^^^2 - b^^^2)/(2*a*b) + 2*a*b/(a^^^2 - b^^^2)) / ((a^^^2 + b^^^2)/(2*a*b) + 1) / " ^ |
|
1690 "((a^^^2 + b^^^2)^^^2 / (a + b)^^^2)"); |
|
1691 (* |
|
1692 trace_rewrite := true; |
|
1693 rewrite_set_ thy false norm_Rational t; |
|
1694 : |
|
1695 #### rls: cancel_p on: (2 * (a ^^^ 7 * b) + 4 * (a ^^^ 6 * b ^^^ 2) + 6 * (a ^^^ 5 * b ^^^ 3) + |
|
1696 8 * (a ^^^ 4 * b ^^^ 4) + |
|
1697 6 * (a ^^^ 3 * b ^^^ 5) + |
|
1698 4 * (a ^^^ 2 * b ^^^ 6) + |
|
1699 2 * (a * b ^^^ 7)) / |
|
1700 (2 * (a ^^^ 9 * b) + 4 * (a ^^^ 8 * b ^^^ 2) + |
|
1701 2 * (2 * (a ^^^ 7 * b ^^^ 3)) + |
|
1702 4 * (a ^^^ 6 * b ^^^ 4) + |
|
1703 -4 * (a ^^^ 4 * b ^^^ 6) + |
|
1704 -4 * (a ^^^ 3 * b ^^^ 7) + |
|
1705 -4 * (a ^^^ 2 * b ^^^ 8) + |
|
1706 -2 * (a * b ^^^ 9)) |
|
1707 |
|
1708 if term2str t = "1 / (a ^^^ 2 + -1 * b ^^^ 2)" then () |
|
1709 else error "rational.sml: diff.behav. in norm_Rational_mg 49"; |
|
1710 *) |
|
1711 |
|
1712 "-------- Schalk I, p.70 Nr. 480a: terms are exploding ?!?"; |
|
1713 val t = str2term ("(1/x + 1/y + 1/z) / (1/x - 1/y - 1/z) / " ^ |
|
1714 "(2*x^^^2 / (x^^^2 - z^^^2) / (x / (x + z) + x / (x - z)))"); |
|
1715 (* |
|
1716 trace_rewrite := true; |
|
1717 rewrite_set_ thy false norm_Rational t; |
|
1718 : |
|
1719 #### rls: cancel_p on: (2 * (x ^^^ 6 * (y ^^^ 2 * z)) + 2 * (x ^^^ 6 * (y * z ^^^ 2)) + |
|
1720 2 * (x ^^^ 5 * (y ^^^ 2 * z ^^^ 2)) + |
|
1721 -2 * (x ^^^ 4 * (y ^^^ 2 * z ^^^ 3)) + |
|
1722 -2 * (x ^^^ 4 * (y * z ^^^ 4)) + |
|
1723 -2 * (x ^^^ 3 * (y ^^^ 2 * z ^^^ 4))) / |
|
1724 (-2 * (x ^^^ 6 * (y ^^^ 2 * z)) + -2 * (x ^^^ 6 * (y * z ^^^ 2)) + |
|
1725 2 * (x ^^^ 5 * (y ^^^ 2 * z ^^^ 2)) + |
|
1726 2 * (x ^^^ 4 * (y ^^^ 2 * z ^^^ 3)) + |
|
1727 2 * (x ^^^ 4 * (y * z ^^^ 4)) + |
|
1728 -2 * (x ^^^ 3 * (y ^^^ 2 * z ^^^ 4))) |
|
1729 *) |
|
1730 |
|
1731 "-------- Schalk I, p.60 Nr. 215d: terms are exploding, internal loop does not terminate"; |
|
1732 val t = str2term "(a-b)^^^3 * (x+y)^^^4 / ((x+y)^^^2 * (a-b)^^^5)"; |
|
1733 (* Kein Wunder, denn Z???ler und Nenner extra als Polynom dargestellt ergibt: |
|
1734 |
|
1735 val t = str2term "(a-b)^^^3 * (x+y)^^^4"; |
|
1736 val SOME (t, _) = rewrite_set_ thy false norm_Rational t; |
|
1737 term2str t; |
|
1738 "a^^^3 * x^^^4 + 4 * a^^^3 * x^^^3 * y +6 * a^^^3 * x^^^2 * y^^^2 +4 * a^^^3 * x * y^^^3 +a^^^3 * y^^^4 +-3 * a^^^2 * b * x^^^4 +-12 * a^^^2 * b * x^^^3 * y +-18 * a^^^2 * b * x^^^2 * y^^^2 +-12 * a^^^2 * b * x * y^^^3 +-3 * a^^^2 * b * y^^^4 +3 * a * b^^^2 * x^^^4 +12 * a * b^^^2 * x^^^3 * y +18 * a * b^^^2 * x^^^2 * y^^^2 +12 * a * b^^^2 * x * y^^^3 +3 * a * b^^^2 * y^^^4 +-1 * b^^^3 * x^^^4 +-4 * b^^^3 * x^^^3 * y +-6 * b^^^3 * x^^^2 * y^^^2 +-4 * b^^^3 * x * y^^^3 +-1 * b^^^3 * y^^^4"; |
|
1739 val t = str2term "((x+y)^^^2 * (a-b)^^^5)"; |
|
1740 val SOME (t, _) = rewrite_set_ thy false norm_Rational t; |
|
1741 term2str t; |
|
1742 "a^^^5 * x^^^2 + 2 * a^^^5 * x * y + a^^^5 * y^^^2 +-5 * a^^^4 * b * x^^^2 +-10 * a^^^4 * b * x * y +-5 * a^^^4 * b * y^^^2 +10 * a^^^3 * b^^^2 * x^^^2 +20 * a^^^3 * b^^^2 * x * y +10 * a^^^3 * b^^^2 * y^^^2 +-10 * a^^^2 * b^^^3 * x^^^2 +-20 * a^^^2 * b^^^3 * x * y +-10 * a^^^2 * b^^^3 * y^^^2 +5 * a * b^^^4 * x^^^2 +10 * a * b^^^4 * x * y +5 * a * b^^^4 * y^^^2 +-1 * b^^^5 * x^^^2 +-2 * b^^^5 * x * y +-1 * b^^^5 * y^^^2"; |
|
1743 |
|
1744 anscheinend macht dem Rechner das Krzen diese Bruches keinen Spass mehr ...*) |
|
1745 |
|
1746 "-------- Schalk I, p.70 Nr. 480b: terms are exploding, trace_rewrite stops at"; |
|
1747 val t = str2term ("((12*x*y/(9*x^^^2 - y^^^2))/" ^ |
|
1748 "(1/(3*x - y)^^^2 - 1/(3*x + y)^^^2)) *" ^ |
|
1749 "(1/(x - 5*y)^^^2 - 1/(x + 5*y)^^^2)/" ^ |
|
1750 "(20*x*y/(x^^^2 - 25*y^^^2))"); |
|
1751 (*val SOME (t, _) = rewrite_set_ thy false norm_Rational t; |
|
1752 : |
|
1753 #### rls: cancel_p on: (19440 * (x ^^^ 8 * y ^^^ 2) + -490320 * (x ^^^ 6 * y ^^^ 4) + |
|
1754 108240 * (x ^^^ 4 * y ^^^ 6) + |
|
1755 -6000 * (x ^^^ 2 * y ^^^ 8)) / |
|
1756 (2160 * (x ^^^ 8 * y ^^^ 2) + -108240 * (x ^^^ 6 * y ^^^ 4) + |
|
1757 1362000 * (x ^^^ 4 * y ^^^ 6) + |
|
1758 -150000 * (x ^^^ 2 * y ^^^ 8)) |
|
1759 *) |
|
1760 |