Skip to content

Latest commit

 

History

History
115 lines (97 loc) · 3.67 KB

brainstorm.org

File metadata and controls

115 lines (97 loc) · 3.67 KB

brainstorm document for code structure

Types

NOTE:

  • all types min only for now, return error when max
  • code should be type-agnostic modulo missing functions in OSCAR

TropicalPlueckerVector{minOrMax}

Parameters:

  • minOrMax distinguishes between min and max convention

Content:

  • Vector{Vector{Int}}: pluecker vector indices
  • Vector{TropicalSemiringElem{minOrMax}}: pluecker vector coordinates

DualCell{cellType,minOrMax}

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

MixedCell{minOrMax}

Parameters:

  • minOrMax distinguishes between min and max convention

Content:

  • Vector{DualCell}: dual cells of complementary dimension

DualPath{pathType,minOrMax}

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

MixedPath{minOrMax}

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

MixedCellTracker{minOrMax} = vertex of our mixed cell tree

Parameters:

  • minOrMax distinguishes between min and max convention

Content:

  • MixedCell
  • MixedPath

Functions

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

dual_cell_flip

Input:

  • DualCellTracker

Output:

  • Vector{DualCellTracker} with higher time until next flip

mixed_cell_flip

Input:

  • MixedCellTracker (= vertex in mixed cell tree)

Output:

  • Vector{MixedCellTracker} (= children in the mixed cell tree)

Note:

  • merely calls dual_cell_flip

Todo

  1. ~~in dual_cell constructors:~~
    • ~~remove pluecker_vector from constructors and input check~~
  2. ~~implement DualCellTracker (= DualCell + vector of nodes)~~ Note:
  3. 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
  4. implement perturbation for MixedCellTracker (always perturbs next node)

Deprecated

DualCellTracker{minOrMax}

Parameters:

  • minOrMax distinguishes between min and max convention

Content:

  • DualCell
  • DualPath
  • time of next flip (for optimisation purposes)
  • facet to flip over