NOTE:
- all types min only for now, return error when max
- code should be type-agnostic modulo missing functions in OSCAR
Parameters:
- minOrMax distinguishes between min and max convention
Content:
- Vector{Vector{Int}}: pluecker vector indices
- Vector{TropicalSemiringElem{minOrMax}}: pluecker vector coordinates
Parameters:
- cellType distinguishes between (Question: is this necessary?) . tropical hypersurfaces . tropical linear spaces . inverted linear spaces
- minOrMax distinguishes between min and max convention
Content:
- ambient support (from hypersurface, linear space, inverted linear space)
- active support
Parameters:
- minOrMax distinguishes between min and max convention
Content:
- Vector{DualCell}: dual cells of complementary dimension
all paths are assumed to consists of line segments and linear between nodes Must-have features:
- next node(s) (given current time)
- current direction (given current time)
Content:
- Vector{Vector{TropicalSemiringElem}} - a sequence of nodes between which it is assumed to be linear
- tiebreaker
Note: deterministic tiebreaker needs to be baked in to ensure consistency amongst paths
Parameters:
- minOrMax distinguishes between min and max convention
Content:
- Vector{DualPath} - the dual paths to traverse
- Vector{Vector{Int}} - pointers specifying the order in which we travese the dual paths
- Vector{tiebreaker}
Note:
- merged together from individual DualPaths
- remove nodes as they are crossed
Parameters:
- minOrMax distinguishes between min and max convention
Content:
- MixedCell
- MixedPath
total_degree_starting_data(::TropicalLinearSpace,::Vector{TropicalHypersurfaces}; perturb_generically::Bool=false)
Input: self-explanatory
- if perturb_generically==true, do a generic perturbation to ensure transverse intersection
Output:
- Vector{MixedCell}: starting mixed cells
- DualPath
Input:
- DualCellTracker
Output:
- Vector{DualCellTracker} with higher time until next flip
Input:
- MixedCellTracker (= vertex in mixed cell tree)
Output:
- Vector{MixedCellTracker} (= children in the mixed cell tree)
Note:
- merely calls dual_cell_flip
- ~~in dual_cell constructors:~~
- ~~remove pluecker_vector from constructors and input check~~
- ~~implement DualCellTracker (= DualCell + vector of nodes)~~ Note:
- implement MixedCellTracker constructor from a vector of DualCellTrackers
- nodes in MixedCellTracker = product of nodes of DualCellTrackers
- construct one constructor which is capable of gluing the nodes of DualCellTrackers together in any specified Order
- create shortcuts for gluing nodes in series, in step and in parallel. For [v1,v2,v3,v4] and [w1,w2,w3] this means . in series: [v1, w1] -> … -> [v4, w1] -> … -> [v4, w3] . in step: [v1, w1] -> [v2, w2] -> [v3, w3] -> [v4,w3] (w stops after step 3) . in parallel: [v1,w1] (time 0) -> [v2,w1] (time 0.333) -> [v2,w2] (time 0.5) -> [v3,w2] (time 0.666) -> [v4,w3] (time 1)
- some further ideas: . function to get next node in MixedCellTracker, uses Strategy type to determine how to get it . saves having to store the big product of nodes
- implement perturbation for MixedCellTracker (always perturbs next node)
Parameters:
- minOrMax distinguishes between min and max convention
Content:
- DualCell
- DualPath
- time of next flip (for optimisation purposes)
- facet to flip over