@@ -56,42 +56,6 @@ class void_typet:public empty_typet
5656{
5757};
5858
59- // / Unbounded, signed integers (mathematical integers, not bitvectors)
60- class integer_typet :public typet
61- {
62- public:
63- integer_typet ():typet(ID_integer)
64- {
65- }
66- };
67-
68- // / Natural numbers including zero (mathematical integers, not bitvectors)
69- class natural_typet :public typet
70- {
71- public:
72- natural_typet ():typet(ID_natural)
73- {
74- }
75- };
76-
77- // / Unbounded, signed rational numbers
78- class rational_typet :public typet
79- {
80- public:
81- rational_typet ():typet(ID_rational)
82- {
83- }
84- };
85-
86- // / Unbounded, signed real numbers
87- class real_typet :public typet
88- {
89- public:
90- real_typet ():typet(ID_real)
91- {
92- }
93- };
94-
9559// / A reference into the symbol table
9660class symbol_typet :public typet
9761{
@@ -1822,113 +1786,6 @@ inline complex_typet &to_complex_type(typet &type)
18221786 return static_cast <complex_typet &>(type);
18231787}
18241788
1825- // / A type for mathematical functions (do not confuse with functions/methods
1826- // / in code)
1827- class mathematical_function_typet :public typet
1828- {
1829- public:
1830- // the domain of the function is composed of zero, one, or
1831- // many variables
1832- class variablet :public irept
1833- {
1834- public:
1835- // the identifier is optional
1836- irep_idt get_identifier () const
1837- {
1838- return get (ID_identifier);
1839- }
1840-
1841- void set_identifier (const irep_idt &identifier)
1842- {
1843- return set (ID_identifier, identifier);
1844- }
1845-
1846- typet &type ()
1847- {
1848- return static_cast <typet &>(add (ID_type));
1849- }
1850-
1851- const typet &type () const
1852- {
1853- return static_cast <const typet &>(find (ID_type));
1854- }
1855- };
1856-
1857- using domaint=std::vector<variablet>;
1858-
1859- mathematical_function_typet (const domaint &_domain, const typet &_codomain)
1860- : typet(ID_mathematical_function)
1861- {
1862- subtypes ().resize (2 );
1863- domain () = _domain;
1864- codomain () = _codomain;
1865- }
1866-
1867- domaint &domain ()
1868- {
1869- return (domaint &)subtypes ()[0 ].subtypes ();
1870- }
1871-
1872- const domaint &domain () const
1873- {
1874- return (const domaint &)subtypes ()[0 ].subtypes ();
1875- }
1876-
1877- variablet &add_variable ()
1878- {
1879- auto &d=domain ();
1880- d.push_back (variablet ());
1881- return d.back ();
1882- }
1883-
1884- // / Return the codomain, i.e., the set of values that the function maps to
1885- // / (the "target").
1886- typet &codomain ()
1887- {
1888- return subtypes ()[1 ];
1889- }
1890-
1891- // / \copydoc codomain()
1892- const typet &codomain () const
1893- {
1894- return subtypes ()[1 ];
1895- }
1896- };
1897-
1898- // / Check whether a reference to a typet is a \ref mathematical_function_typet.
1899- // / \param type Source type.
1900- // / \return True if \param type is a \ref mathematical_function_typet.
1901- template <>
1902- inline bool can_cast_type<mathematical_function_typet>(const typet &type)
1903- {
1904- return type.id () == ID_mathematical_function;
1905- }
1906-
1907- // / \brief Cast a typet to a \ref mathematical_function_typet
1908- // /
1909- // / This is an unchecked conversion. \a type must be known to be \ref
1910- // / mathematical_function_typet. Will fail with a precondition violation if type
1911- // / doesn't match.
1912- // /
1913- // / \param type Source type.
1914- // / \return Object of type \ref mathematical_function_typet.
1915- inline const mathematical_function_typet &
1916- to_mathematical_function_type (const typet &type)
1917- {
1918- PRECONDITION (can_cast_type<mathematical_function_typet>(type));
1919- return static_cast <const mathematical_function_typet &>(type);
1920- }
1921-
1922- // / \copydoc to_mathematical_function_type(const typet &)
1923- inline mathematical_function_typet &
1924- to_mathematical_function_type (typet &type)
1925- {
1926- PRECONDITION (can_cast_type<mathematical_function_typet>(type));
1927- return static_cast <mathematical_function_typet &>(type);
1928- }
1929-
1930- bool is_number (const typet &type);
1931-
19321789bool is_constant_or_has_constant_components (
19331790 const typet &type,
19341791 const namespacet &ns);
0 commit comments