Documentation

Atlas.CombinatorialOptimization.code.Flow.FlowDecomposition

noncomputable def NetworkFlow.flowSupport {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) :
Finset (V × V)
Instances For
    structure NetworkFlow.FlowPath {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) :
    Type u_1
    Instances For
      def NetworkFlow.FlowPath.edges {V : Type u_1} [Fintype V] [DecidableEq V] {N : FlowNetwork V} (p : FlowPath N) :
      List (V × V)
      Instances For
        def NetworkFlow.FlowPath.mem_edges {V : Type u_1} [Fintype V] [DecidableEq V] {N : FlowNetwork V} (p : FlowPath N) (u v : V) :
        Instances For
          @[implicit_reducible]
          instance NetworkFlow.FlowPath.decidable_mem_edges {V : Type u_1} [Fintype V] [DecidableEq V] {N : FlowNetwork V} (p : FlowPath N) (u v : V) :
          structure NetworkFlow.FlowDecomposition {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) :
          Type u_1
          Instances For
            theorem NetworkFlow.zero_of_flowSupport_empty {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) (hsupp : flowSupport N fl = ) (u v : V) :
            fl.f u v = 0
            def NetworkFlow.reachableInSupport {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) (u v : V) :
            Instances For
              noncomputable def NetworkFlow.reachableSet {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) :
              Instances For
                theorem NetworkFlow.reachable_step {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) (u v : V) (hu : u reachableSet N fl) (hfuv : fl.f u v > 0) :
                theorem NetworkFlow.flow_zero_across_reachable {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) (u v : V) (hu : u reachableSet N fl) (hv : vreachableSet N fl) :
                fl.f u v = 0
                theorem NetworkFlow.flowValue_nonpos_of_t_unreachable {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) (ht : N.treachableSet N fl) :
                flowValue N fl 0
                theorem NetworkFlow.t_reachable_of_pos_value {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) (hpos : 0 < flowValue N fl) :
                theorem NetworkFlow.IsChain_zip_tail {α : Type u_2} (r : ααProp) (l : List α) (hchain : List.IsChain r l) (e : α × α) :
                e l.zip l.tailr e.1 e.2
                theorem NetworkFlow.exists_nodup_chain {V : Type u_1} [Fintype V] [DecidableEq V] (R : VVProp) (a b : V) (hab : a b) (hreach : Relation.ReflTransGen R a b) :
                ∃ (l : List V) (hne : l []), List.IsChain R l l.Nodup l.head hne = a l.getLast hne = b l.length 2
                theorem NetworkFlow.exists_flow_path_of_pos_value {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) (hval : 0 < flowValue N fl) :
                ∃ (p : FlowPath N), ep.edges, fl.f e.1 e.2 > 0
                theorem NetworkFlow.remove_cycle_step {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) (hsupp : flowSupport N fl ) (hval : flowValue N fl = 0) :
                ∃ (fl' : STFlow N), flowValue N fl' = flowValue N fl flowSupport N fl' flowSupport N fl
                theorem NetworkFlow.decompose_one_step {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) (hval : 0 < flowValue N fl) :
                ∃ (p : FlowPath N) (w : ) (fl' : STFlow N), 0 < w (∀ (u v : V), fl.f u v = fl'.f u v + if p.mem_edges u v then w else 0) flowSupport N fl' flowSupport N fl
                theorem NetworkFlow.remove_all_cycles {V : Type u_1} [Fintype V] [DecidableEq V] (N : FlowNetwork V) (fl : STFlow N) :
                ∃ (fl' : STFlow N), flowValue N fl' = flowValue N fl flowSupport N fl' flowSupport N fl ∀ (g : STFlow N), flowSupport N g flowSupport N fl'flowSupport N g 0 < flowValue N g