noncomputable def
NetworkFlow.flowSupport
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl : STFlow N)
:
Instances For
structure
NetworkFlow.FlowPath
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
:
Type u_1
- vertices : List V
Instances For
def
NetworkFlow.FlowPath.edges
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{N : FlowNetwork V}
(p : FlowPath N)
:
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)
:
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)
:
Finset V
Instances For
theorem
NetworkFlow.s_mem_reachableSet
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl : STFlow N)
:
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 : v ∉ reachableSet N fl)
:
theorem
NetworkFlow.flowValue_nonpos_of_t_unreachable
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl : STFlow N)
(ht : N.t ∉ reachableSet N fl)
:
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 : α × α)
:
theorem
NetworkFlow.FlowPath.edges_nonempty
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{N : FlowNetwork V}
(p : FlowPath N)
:
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)
:
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)
:
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
theorem
NetworkFlow.flow_decomposition_exists
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl : STFlow N)
:
Nonempty (FlowDecomposition N fl)