Instances For
noncomputable def
NetworkFlow.residualDist
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl : STFlow N)
:
Instances For
def
NetworkFlow.IsShortestAugmentingPath
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl : STFlow N)
(p : List V)
:
Instances For
def
NetworkFlow.IsShortestPathAugmentation
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl' : STFlow N)
:
Instances For
theorem
NetworkFlow.dirDist_le_of_path
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{adj : V → V → Prop}
{s t : V}
{p : List V}
(hp : IsDirectedPath adj s t p)
:
theorem
NetworkFlow.isDirectedPath_take
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{adj : V → V → Prop}
{s t : V}
{p : List V}
(hp : IsDirectedPath adj s t p)
(j : ℕ)
(hj : 1 ≤ j)
(hj2 : j + 1 ≤ p.length)
:
theorem
NetworkFlow.new_edge_on_reverse_path
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl' : STFlow N)
(p : List V)
(hp_aug : IsAugmentingPath N fl p)
(hflow_change : ∀ (u v : V), ¬EdgeOnPath p u v → ¬EdgeOnPath p v u → fl'.f u v = fl.f u v)
{u v : V}
(hnew : resAdj N fl' u v)
(hold : ¬resAdj N fl u v)
:
EdgeOnPath p v u
theorem
NetworkFlow.walk_to_simple_path
{V : Type u_1}
[Fintype V]
[DecidableEq V]
{adj : V → V → Prop}
{s t : V}
(w : List V)
(hlen : w.length ≥ 2)
(hhead : w.head? = some s)
(hlast : w.getLast? = some t)
(hadj : ∀ (i : ℕ) (hi : i + 1 < w.length), adj (w.get ⟨i, ⋯⟩) (w.get ⟨i + 1, hi⟩))
(hst : s ≠ t)
:
theorem
NetworkFlow.per_vertex_dist_bound
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl' : STFlow N)
(p : List V)
(hp_aug : IsAugmentingPath N fl p)
(hp_shortest : ↑(p.length - 1) = residualDist N fl)
(hflow_change : ∀ (u v : V), ¬EdgeOnPath p u v → ¬EdgeOnPath p v u → fl'.f u v = fl.f u v)
(p' : List V)
(hp' : IsDirectedPath (resAdj N fl') N.s N.t p')
(j : ℕ)
(hj : 1 ≤ j)
(hj2 : j < p'.length)
:
theorem
NetworkFlow.new_path_length_ge_old_dist
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl' : STFlow N)
(h : IsShortestPathAugmentation N fl fl')
(k : ℕ)
(p' : List V)
(hp' : IsDirectedPath (resAdj N fl') N.s N.t p')
(hlen : p'.length = k + 1)
:
theorem
NetworkFlow.shortest_augmenting_path_monotone
{V : Type u_1}
[Fintype V]
[DecidableEq V]
(N : FlowNetwork V)
(fl fl' : STFlow N)
(h : IsShortestPathAugmentation N fl fl')
: