template<typename T, template<see below> typename U>
consteval bool is-specialization-of(); // exposition only
template<typename T, template<see below> typename U>
consteval bool is-derived-from-specialization-of(); // exposition only
consteval ratio(std::intmax_t n, std::intmax_t d = 1);
friend consteval ratio operator*(ratio lhs, ratio rhs);
consteval ratio common-ratio(ratio r1, ratio r2);
constexpr symbol_text(char portable);
consteval symbol_text(const char (&portable)[N + 1]);
constexpr symbol_text(const std::fixed_string<N>& portable);
consteval symbol_text(const char8_t (&utf8)[N + 1], const char (&portable)[M + 1]);
constexpr symbol_text(const std::fixed_u8string<N>& utf8, const std::fixed_string<M>& portable);
template<std::size_t N2, std::size_t M2>
friend constexpr symbol_text<N + N2, M + M2> operator+(const symbol_text& lhs,
const symbol_text<N2, M2>& rhs);
template<std::size_t N2, std::size_t M2>
friend constexpr bool operator==(const symbol_text& lhs,
const symbol_text<N2, M2>& rhs) noexcept;
template<std::size_t N2, std::size_t M2>
friend constexpr auto operator<=>(const symbol_text& lhs,
const symbol_text<N2, M2>& rhs) noexcept;
template<typename T, typename U>
consteval bool type-less-impl(); // exposition only
template<template<typename...> typename To, typename OneType,
template<typename, typename> typename Pred = type-less, typename Lhs, typename Rhs>
consteval auto expr-multiply(Lhs, Rhs); // exposition only
template<template<typename...> typename To, typename OneType,
template<typename, typename> typename Pred = type-less, typename Lhs, typename Rhs>
consteval auto expr-divide(Lhs lhs, Rhs rhs); // exposition only
template<template<typename...> typename To, typename OneType, typename T>
consteval auto expr-invert(T); // exposition only
template<std::intmax_t Num, std::intmax_t Den, template<typename...> typename To,
typename OneType, template<typename, typename> typename Pred = type-less, typename T>
requires(Den != 0)
consteval auto expr-pow(T); // exposition only
template<template<typename> typename Proj, template<typename...> typename To, typename OneType,
template<typename, typename> typename Pred = type-less, typename T>
consteval auto expr-map(T); // exposition only