67 template<
typename FieldT>
71 template<
typename FieldT>
73 const FieldT &field_coeff,
const variable<FieldT> &var);
75 template<
typename FieldT>
79 template<
typename FieldT>
81 const FieldT &field_coeff,
const variable<FieldT> &var);
83 template<
typename FieldT>
87 template<
typename FieldT>
89 const FieldT &field_coeff,
const variable<FieldT> &var);
96 template<
typename FieldT>
class linear_term
120 template<
typename FieldT>
124 template<
typename FieldT>
126 const FieldT &field_coeff,
const linear_term<FieldT> <);
128 template<
typename FieldT>
132 template<
typename FieldT>
134 const FieldT &field_coeff,
const linear_term<FieldT> <);
136 template<
typename FieldT>
140 template<
typename FieldT>
142 const FieldT &field_coeff,
const linear_term<FieldT> <);
146 template<
typename FieldT>
class linear_combination;
148 template<
typename FieldT>
150 std::ostream &out,
const linear_combination<FieldT> &lc);
152 template<
typename FieldT>
153 std::istream &
operator>>(std::istream &in, linear_combination<FieldT> &lc);
159 template<
typename FieldT>
class linear_combination
162 std::vector<linear_term<FieldT>>
terms;
172 typename std::vector<linear_term<FieldT>>::const_iterator
begin()
const;
173 typename std::vector<linear_term<FieldT>>::const_iterator
end()
const;
181 FieldT
evaluate(
const std::vector<FieldT> &assignment)
const;
195 bool is_valid(
const size_t num_variables)
const;
198 const std::map<size_t, std::string> &variable_annotations =
199 std::map<size_t, std::string>())
const;
201 const std::vector<FieldT> &full_assignment,
202 const std::map<size_t, std::string> &variable_annotations =
203 std::map<size_t, std::string>())
const;
205 friend std::ostream &operator<<<FieldT>(
207 friend std::istream &
operator>>
211 template<
typename FieldT>
213 const integer_coeff_t int_coeff,
const linear_combination<FieldT> &lc);
215 template<
typename FieldT>
217 const FieldT &field_coeff,
const linear_combination<FieldT> &lc);
219 template<
typename FieldT>
221 const integer_coeff_t int_coeff,
const linear_combination<FieldT> &lc);
223 template<
typename FieldT>
225 const FieldT &field_coeff,
const linear_combination<FieldT> &lc);
227 template<
typename FieldT>
229 const integer_coeff_t int_coeff,
const linear_combination<FieldT> &lc);
231 template<
typename FieldT>
233 const FieldT &field_coeff,
const linear_combination<FieldT> &lc);
239 #endif // VARIABLE_HPP_