Bertini 2 d882924 (2026-10-06 19:56 UTC)
Numerical algebraic geometry library (C++ core)
Loading...
Searching...
No Matches
bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP > Class Template Reference

The main way to represent a positive dimensional component in numerical algebraic geometry. More...

#include <witness_set.hpp>

Public Member Functions

 WitnessSet ()
 The default constructor.
 WitnessSet (PointContT const &pts, typename SliceP::HeldT const &slc, typename SystemP::HeldT const &sys)
 Construct a witness set from points, slice, and system.
auto Degree () const
 Get the degree of the witness set.
auto Dimension () const
 Query the dimension of the witness set.
void AddPoint (typename PointP::HeldT const &p)
 Adds a point to the witness set.
void SetPoints (PointContT const &pts)
 Sets the set of points for the witness set.
const PointContT & GetPoints () const
 Get (a const reference to) the set of points for the witness set.
const Vec< NumT > & GetPoint (IndexT ind) const
 Range-checked version of point getter for witness set.
const Vec< NumT > & operator[] (IndexT ind) const
 Non-range-checked accessor to get points from witness set.
void SetSystem (typename SystemP::HeldT const &sys)
 Sets the system for the witness set.
const SystemT & GetSystem () const
 Gets a (const reference to) the system for the witness set.
void SetSlice (typename SliceP::HeldT const &s)
 Sets the slice for the witness set.
const Slice & GetSlice () const
 Gets (a const reference to) the slice for the witness set.
bool IsConsistent () const
 Check whether the witness set makes sense, in terms of system size, number of variables, and linear slice size.

Friends

class boost::serialization::access

Detailed Description

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
class bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >

The main way to represent a positive dimensional component in numerical algebraic geometry.

A witness set consists of three properties:

  1. Points
  2. A generic linear slice
  3. The system.

The witness set captures two of the most important properties to know about a component of an algebraic variety:

degree dimension

The degree is represented in terms of points. The number of points in the witness set is the degree of the component.

The dimension is represented in terms of either the slice, or the system itself. The number of individual linears in the total slice should be equal to the difference of the number of variables in the system, minus the number of functions. That is, the system's underdeterminedness is the dimension. This assumes that randomization has been done on incomplete intersections – precisely those systems for which this equality fails.

Template Parameters
ObjManagementPThe policy class for object management. Default is to copy. Other provided options are reference wrappers, and shared pointers.
See also
bertini::nag_datatype::policy::Copy, bertini::nag_datatype::policy::Reference, bertini::nag_datatype::policy::SharedPtr
Randomize

Constructor & Destructor Documentation

◆ WitnessSet() [1/2]

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::WitnessSet ( )
inline

The default constructor.

The instantiability of this constructor depends on the default-constructability of the policy class used for held objects.

◆ WitnessSet() [2/2]

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::WitnessSet ( PointContT const & pts,
typename SliceP::HeldT const & slc,
typename SystemP::HeldT const & sys )
inline

Construct a witness set from points, slice, and system.

Uses the held type of the policy class for object management.

Member Function Documentation

◆ AddPoint()

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
void bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::AddPoint ( typename PointP::HeldT const & p)
inline

Adds a point to the witness set.

◆ Degree()

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
auto bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::Degree ( ) const
inline

Get the degree of the witness set.

This is the number of points in the set.

◆ Dimension()

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
auto bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::Dimension ( ) const
inline

Query the dimension of the witness set.

Fundamentally, this is the dimension of the slice.

◆ GetPoint()

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
const Vec< NumT > & bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::GetPoint ( IndexT ind) const
inline

Range-checked version of point getter for witness set.

◆ GetPoints()

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
const PointContT & bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::GetPoints ( ) const
inline

Get (a const reference to) the set of points for the witness set.

◆ GetSlice()

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
const Slice & bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::GetSlice ( ) const
inline

Gets (a const reference to) the slice for the witness set.

◆ GetSystem()

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
const SystemT & bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::GetSystem ( ) const
inline

Gets a (const reference to) the system for the witness set.

◆ IsConsistent()

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
bool bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::IsConsistent ( ) const
inline

Check whether the witness set makes sense, in terms of system size, number of variables, and linear slice size.

◆ operator[]()

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
const Vec< NumT > & bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::operator[] ( IndexT ind) const
inline

Non-range-checked accessor to get points from witness set.

◆ SetPoints()

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
void bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::SetPoints ( PointContT const & pts)
inline

Sets the set of points for the witness set.

◆ SetSlice()

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
void bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::SetSlice ( typename SliceP::HeldT const & s)
inline

Sets the slice for the witness set.

uses the held type policy.

◆ SetSystem()

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
void bertini::nag_datatype::WitnessSet< NumT, SystemT, ObjManagementP >::SetSystem ( typename SystemP::HeldT const & sys)
inline

Sets the system for the witness set.

Uses policy for held type.

See also
bertini::nag_datatype::policy namespace

◆ boost::serialization::access

template<typename NumT, typename SystemT = System, template< typename > class ObjManagementP = policy::Copy>
friend class boost::serialization::access
friend