* \todo document this file
*/
-#include "cvc4_private.h"
+#include "cvc5_private.h"
#ifndef CVC5__THEORY__ARITH__NORMAL_FORM_H
#define CVC5__THEORY__ARITH__NORMAL_FORM_H
case kind::INTS_MODULUS_TOTAL:
case kind::DIVISION_TOTAL: return isDivMember(n);
case kind::IAND: return isIAndMember(n);
+ case kind::POW2: return isPow2Member(n);
case kind::EXPONENTIAL:
case kind::SINE:
case kind::COSINE:
static bool isLeafMember(Node n);
static bool isIAndMember(Node n);
+ static bool isPow2Member(Node n);
static bool isDivMember(Node n);
bool isDivLike() const{
return isDivMember(getNode());
size_t getComplexity() const;
};/* class Variable */
-
class Constant : public NodeWrapper {
public:
Constant(Node n) : NodeWrapper(n) { Assert(isMember(getNode())); }
public:
- class iterator : public std::iterator<std::input_iterator_tag, Variable> {
+ class iterator {
private:
internal_iterator d_iter;
public:
+ /* The following types are required by trait std::iterator_traits */
+
+ /** Iterator tag */
+ using iterator_category = std::forward_iterator_tag;
+
+ /** The type of the item */
+ using value_type = Variable;
+
+ /** The pointer type of the item */
+ using pointer = Variable*;
+
+ /** The reference type of the item */
+ using reference = Variable&;
+
+ /** The type returned when two iterators are subtracted */
+ using difference_type = std::ptrdiff_t;
+
+ /* End of std::iterator_traits required types */
+
explicit iterator(internal_iterator i) : d_iter(i) {}
inline Variable operator*() {
public:
static bool isMember(TNode n);
- class iterator : public std::iterator<std::input_iterator_tag, Monomial> {
+ class iterator {
private:
internal_iterator d_iter;
public:
+ /* The following types are required by trait std::iterator_traits */
+
+ /** Iterator tag */
+ using iterator_category = std::forward_iterator_tag;
+
+ /** The type of the item */
+ using value_type = Monomial;
+
+ /** The pointer type of the item */
+ using pointer = Monomial*;
+
+ /** The reference type of the item */
+ using reference = Monomial&;
+
+ /** The type returned when two iterators are subtracted */
+ using difference_type = std::ptrdiff_t;
+
+ /* End of std::iterator_traits required types */
+
explicit iterator(internal_iterator i) : d_iter(i) {}
inline Monomial operator*() {