Duminil-Copin–Tassion differential inequality
DefinitionEvent of a connection inside a finite set#✓fully proved
The event {o ↔ x inside S}: o and x lie in S and are joined by an open path in S.
def withinConnEvent (d : ℕ) (S : Set (Site d)) (o x : Site d) :
Set (ConfigSpace (Sym2 (Site d))) :=
{ω | ∃ (ho : o ∈ S) (hx : x ∈ S), ConnectedWithin d ω S ⟨o, ho⟩ ⟨x, hx⟩}
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def ConnectedWithin (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (S : Set (Site d))
(x y : S) : Prop :=
(openSubgraphInduce d ω S).Reachable x y
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:130
Uses 3 · Used by 2
DefinitionPairs of sites of a finite set#✓fully proved
All unordered pairs of sites of the finite set S.
DefinitionPairs of sites of a lattice box#✓fully proved
All unordered pairs of sites of Λ_n (containing the lattice edges of Λ_n).
noncomputable def boxEdgeFinset (d n : ℕ) : Finset (Sym2 (Site d)) :=
((boxFinset d n) ×ˢ (boxFinset d n)).image (fun p => s(p.1, p.2))
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
noncomputable def boxFinset (d n : ℕ) : Finset (Site d) := (box_finite d n).toFinset
MathlibExt/Probability/Percolation/Theta.lean:116
Uses 2 · Used by 5
DefinitionBox-crossing event#✓fully proved
The event that the origin is joined by an open path inside Λ_n to the vertex boundary of
Λ_n.
def boxCrossingEvent (d n : ℕ) : Set (ConfigSpace (Sym2 (Site d))) :=
{ω | ∃ (x : Site d) (hx : x ∈ box d n), x ∈ vertexBoundary d n ∧
∃ (h0 : origin d ∈ box d n),
ConnectedWithin d ω (box d n) ⟨origin d, h0⟩ ⟨x, hx⟩}
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def box (d n : ℕ) : Set (Site d) := {x | ∀ i, (x i).natAbs ≤ n}
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:86
def vertexBoundary (d n : ℕ) : Set (Site d) := box d n \ box d (n - 1)
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:102
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
def ConnectedWithin (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (S : Set (Site d))
(x y : S) : Prop :=
(openSubgraphInduce d ω S).Reachable x y
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:130
DefinitionBox-crossing probability#✓fully proved
The probability of boxCrossingEvent d n.
noncomputable def boxCrossProb (d : ℕ) (p : ℝ≥0) (hp : p ≤ 1) (n : ℕ) : ℝ :=
(bernoulliProductMeasure (E := Sym2 (Site d)) p hp).real (boxCrossingEvent d n)
noncomputable def bernoulliProductMeasure (p : ℝ≥0) (hp : p ≤ 1) :
Measure (ConfigSpace E) :=
Measure.infinitePi (fun _ : E => bernoulliMeasure p hp)
MathlibExt/Probability/Configuration/ProductMeasure.lean:85
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def boxCrossingEvent (d n : ℕ) : Set (ConfigSpace (Sym2 (Site d))) :=
{ω | ∃ (x : Site d) (hx : x ∈ box d n), x ∈ vertexBoundary d n ∧
∃ (h0 : origin d ∈ box d n),
ConnectedWithin d ω (box d n) ⟨origin d, h0⟩ ⟨x, hx⟩}
MathlibExt/Probability/Percolation/DctDifferential.lean:80
Uses 4 · Used by 3
DefinitionPivotal edge event#✓fully proved
The event that the edge e is pivotal for A (flipping e changes whether A occurs).
def pivotalEvent (e : Sym2 (Site d)) (A : Set (ConfigSpace (Sym2 (Site d)))) :
Set (ConfigSpace (Sym2 (Site d))) :=
{ω | IsPivotal e A ω}
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def IsPivotal (e : E) (A : Set (ConfigSpace E)) (ω : ConfigSpace E) : Prop :=
(setOpen e ω ∈ A) ≠ (setClosed e ω ∈ A)
MathlibExt/Probability/CorrelationInequalities/Pivotal.lean:100
Uses 3 · Used by 1
DefinitionConnection of a site to the box boundary#✓fully proved
x ∈ Λ_n is joined by an open path inside Λ_n to a site of the vertex boundary of Λ_n.
def connBdry (d n : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (x : Site d) : Prop :=
∃ (hx : x ∈ box d n) (y : Site d) (hy : y ∈ box d n),
y ∈ vertexBoundary d n ∧ ConnectedWithin d ω (box d n) ⟨x, hx⟩ ⟨y, hy⟩
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def box (d n : ℕ) : Set (Site d) := {x | ∀ i, (x i).natAbs ≤ n}
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:86
def vertexBoundary (d n : ℕ) : Set (Site d) := box d n \ box d (n - 1)
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:102
def ConnectedWithin (d : ℕ) (ω : ConfigSpace (Sym2 (Site d))) (S : Set (Site d))
(x y : S) : Prop :=
(openSubgraphInduce d ω S).Reachable x y
MathlibExt/Combinatorics/SimpleGraph/Lattice/Clusters.lean:130
DefinitionSet of sites not connected to the box boundary#✓fully proved
The random set 𝒮(ω) of sites of Λ_n not joined inside Λ_n to the vertex boundary.
noncomputable def surfaceSet (d n : ℕ) (ω : ConfigSpace (Sym2 (Site d))) : Finset (Site d) := by
classical
exact (boxFinset d n).filter (fun x => ¬ connBdry d n ω x)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
DefinitionEvent that the unconnected set equals a given set#✓fully proved
The event {𝒮 = S}.
def surfaceEvent (d n : ℕ) (S : Finset (Site d)) : Set (ConfigSpace (Sym2 (Site d))) :=
{ω | surfaceSet d n ω = S}
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def surfaceSet (d n : ℕ) (ω : ConfigSpace (Sym2 (Site d))) : Finset (Site d) := by
classical
exact (boxFinset d n).filter (fun x => ¬ connBdry d n ω x)
MathlibExt/Probability/Percolation/DctSurfacePartition.lean:178
Uses 3 · Used by 1
DefinitionPairs of box sites outside a given set#✓fully proved
The pairs of sites of Λ_n that are not pairs of sites of S.
noncomputable def boxEdgesOutside (d n : ℕ) (S : Finset (Site d)) : Finset (Sym2 (Site d)) :=
(boxEdgeFinset d n) \ (edgesWithinFinset S)
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
noncomputable def boxEdgeFinset (d n : ℕ) : Finset (Sym2 (Site d)) :=
((boxFinset d n) ×ˢ (boxFinset d n)).image (fun p => s(p.1, p.2))
MathlibExt/Probability/Percolation/DctDifferential.lean:59
noncomputable def edgesWithinFinset (S : Finset (Site d)) : Finset (Sym2 (Site d)) :=
(S ×ˢ S).image (fun p => s(p.1, p.2))
MathlibExt/Probability/Percolation/ConnectionsInsideSet.lean:67
Uses 3 · Used by 1
TheoremDuminil-Copin–Tassion differential inequality#✓fully proved
The Duminil-Copin–Tassion differential inequality: if φ_p(S) ≥ m for every finite
S ∋ 0, then d/dp ℙ_p(A_n) ≥ (p(1 - p))⁻¹ m (1 - ℙ_p(A_n)) for 0 < p < 1 and n ≥ 1
(Duminil-Copin–Tassion 2016).
theorem dct_differential_inequality (p : ℝ≥0) (hp : p ≤ 1) (n : ℕ) (hn : 1 ≤ n)
(hp0 : 0 < (p : ℝ)) (hp1 : (p : ℝ) < 1) (m : ℝ)
(hm : ∀ S : Finset (Site d), origin d ∈ S → m ≤ phi d p hp S) :
deriv (fun q => prob q ((boxEdgeFinset d n).restrict '' (boxCrossingEvent d n))) (p : ℝ)
≥ (1 / ((p : ℝ) * (1 - (p : ℝ)))) * m * (1 - boxCrossProb d p hp n)
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
def origin (d : ℕ) : Site d := fun _ => 0
MathlibExt/Probability/Percolation/Theta.lean:56
noncomputable def phi (d : ℕ) (p : ℝ≥0) (hp : p ≤ 1) (S : Finset (Site d)) : ℝ :=
(p : ℝ) * ∑ e ∈ boundaryEdges d S, connWithinProb d p hp S e.1
MathlibExt/Probability/Percolation/TildePc.lean:103
noncomputable def prob (p : ℝ) (A : Set (ConfigSpace E)) : ℝ :=
∑ ω, A.indicator (fun _ => (1 : ℝ)) ω * configWeight p ω
MathlibExt/Probability/CorrelationInequalities/Russo.lean:74
noncomputable def boxEdgeFinset (d n : ℕ) : Finset (Sym2 (Site d)) :=
((boxFinset d n) ×ˢ (boxFinset d n)).image (fun p => s(p.1, p.2))
MathlibExt/Probability/Percolation/DctDifferential.lean:59
def boxCrossingEvent (d n : ℕ) : Set (ConfigSpace (Sym2 (Site d))) :=
{ω | ∃ (x : Site d) (hx : x ∈ box d n), x ∈ vertexBoundary d n ∧
∃ (h0 : origin d ∈ box d n),
ConnectedWithin d ω (box d n) ⟨origin d, h0⟩ ⟨x, hx⟩}
MathlibExt/Probability/Percolation/DctDifferential.lean:80
noncomputable def boxCrossProb (d : ℕ) (p : ℝ≥0) (hp : p ≤ 1) (n : ℕ) : ℝ :=
(bernoulliProductMeasure (E := Sym2 (Site d)) p hp).real (boxCrossingEvent d n)
MathlibExt/Probability/Percolation/DctDifferential.lean:130
Uses 49 · Used by 2
DefinitionBox-crossing probability as a polynomial in the density#✓fully proved
The polynomial t ↦ ℙ_t(A_{n+1}) (the box-crossing probability as a polynomial in the
density), defined for all real t.
noncomputable def crossPoly (d n : ℕ) (t : ℝ) : ℝ :=
prob t ((boxEdgeFinset d (n + 1)).restrict '' (boxCrossingEvent d (n + 1)))
noncomputable def prob (p : ℝ) (A : Set (ConfigSpace E)) : ℝ :=
∑ ω, A.indicator (fun _ => (1 : ℝ)) ω * configWeight p ω
MathlibExt/Probability/CorrelationInequalities/Russo.lean:74
noncomputable def boxEdgeFinset (d n : ℕ) : Finset (Sym2 (Site d)) :=
((boxFinset d n) ×ˢ (boxFinset d n)).image (fun p => s(p.1, p.2))
MathlibExt/Probability/Percolation/DctDifferential.lean:59
def boxCrossingEvent (d n : ℕ) : Set (ConfigSpace (Sym2 (Site d))) :=
{ω | ∃ (x : Site d) (hx : x ∈ box d n), x ∈ vertexBoundary d n ∧
∃ (h0 : origin d ∈ box d n),
ConnectedWithin d ω (box d n) ⟨origin d, h0⟩ ⟨x, hx⟩}
MathlibExt/Probability/Percolation/DctDifferential.lean:80
Uses 5 · Used by 2
TheoremMean-field lower bound#✓fully proved
Mean-field lower bound (Duminil-Copin–Tassion 2016): for
p̃_c < q < 1 (with p̃_c > 0), θ(q) ≥ (q - p̃_c) / (q(1 - p̃_c)).
theorem theta_ge_meanField_of_tildePc_lt (q : ℝ≥0) (hq : q ≤ 1)
(htpc0 : 0 < (tildePc d : ℝ)) (hgt : tildePc d < q) (hq1 : (q : ℝ) < 1) :
theta d q hq ≥ ((q : ℝ) - (tildePc d : ℝ)) / ((q : ℝ) * (1 - (tildePc d : ℝ)))
noncomputable def tildePc (d : ℕ) : ℝ≥0 :=
sSup (tildePcSet d)
MathlibExt/Probability/Percolation/TildePc.lean:124
noncomputable def theta (d : ℕ) (p : ℝ≥0) (hp : p ≤ 1) : ℝ :=
(bernoulliProductMeasure (E := Sym2 (Site d)) p hp).real (percolationEvent d)
MathlibExt/Probability/Percolation/Theta.lean:64
Uses 34
DefinitionEdges of \(\mathbb{Z}^d\) inside a set#✓fully proved
The edges of ℤ^d with both endpoints in S.
def internalEdges (S : Set (Site d)) : Set (Sym2 (Site d)) :=
{e | ∃ x ∈ S, ∃ y ∈ S, e = s(x, y)}
abbrev Site (d : ℕ) : Type := Fin d → ℤ
MathlibExt/Combinatorics/SimpleGraph/Lattice/HypercubicLattice.lean:55
Uses 1
DefinitionEvent that a vertex is connected to a target set#✓fully proved
The event that o is connected to B.
def mpiCrossingEvent (o : V) (B : Set V) : Set (ConfigSpace (Sym2 V)) :=
connEvent G Set.univ o B
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def connEvent (G : SimpleGraph V) (A : Set V) (u : V) (B : Set V) :
Set (ConfigSpace (Sym2 V)) := {ω | ConnToSet G ω A u B}
PhyslibExt/CondensedMatter/IsingModel/Sharpness/BkCriterion.lean:139
Uses 2 · Used by 1
DefinitionVertices not connected to a target set#✓fully proved
The set of vertices not connected to B in ω.
noncomputable def mpiBlockedSet (B : Set V) (omega : ConfigSpace (Sym2 V)) : Finset V :=
by
classical
exact Finset.univ.filter fun x => ¬ ConnToSet G omega Set.univ x B
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
Uses 2 · Used by 4
DefinitionEvent that the set of vertices not connected to \(B\) is \(S\)#✓fully proved
The event that the set of vertices not connected to B is exactly S.
def mpiSurfaceEvent (B : Set V) (S : Finset V) : Set (ConfigSpace (Sym2 V)) :=
{omega | mpiBlockedSet G B omega = S}
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def mpiBlockedSet (B : Set V) (omega : ConfigSpace (Sym2 V)) : Finset V :=
by
classical
exact Finset.univ.filter fun x => ¬ ConnToSet G omega Set.univ x B
PhyslibExt/CondensedMatter/IsingModel/Sharpness/MeanfieldPercoInhom.lean:73
Uses 2 · Used by 3
DefinitionEdges with both endpoints in a vertex set#✓fully proved
The edges with both endpoints in S.
DefinitionInhomogeneous Duminil-Copin–Tassion quantity \(\varphi(S)\)#✓fully proved
The inhomogeneous Duminil-Copin–Tassion quantity φ(S) = ∑_{(x,y) ∈ ∂S} (1 - e^{-βJ_{xy}}) P(o ↔
x in S).
noncomputable def mpiPhi (beta : ℝ) (J : Sym2 V → ℝ)
(o : V) (S : Finset V) : ℝ :=
∑ q ∈ shk_boundaryPairs G S,
(1 - Real.exp (-beta * J s(q.1, q.2))) *
wprob (shk_edgeLaw beta J) (connEvent G (S : Set V) o {q.1})
def shk_boundaryPairs [Fintype V] [DecidableEq V] (G : SimpleGraph V) (S : Finset V)
[DecidableRel G.Adj] : Finset (V × V) :=
Finset.univ.filter (fun q => q.1 ∈ S ∧ q.2 ∉ S ∧ G.Adj q.1 q.2)
PhyslibExt/CondensedMatter/IsingModel/Sharpness/BkFirstExit.lean:269
noncomputable def wprob [Fintype E] [DecidableEq E] (φ : E → Bool → ℝ)
(S : Set (ConfigSpace E)) : ℝ :=
∑ ω, S.indicator (fun _ => (1 : ℝ)) ω * pweight φ ω
MathlibExt/Probability/CorrelationInequalities/BK.lean:101
noncomputable def shk_edgeLaw (beta : ℝ) (J : E → ℝ) (e : E) (b : Bool) : ℝ :=
if b then 1 - Real.exp (-beta * J e) else Real.exp (-beta * J e)
PhyslibExt/CondensedMatter/IsingModel/Sharpness/BkInhomogeneous.lean:133
def connEvent (G : SimpleGraph V) (A : Set V) (u : V) (B : Set V) :
Set (ConfigSpace (Sym2 V)) := {ω | ConnToSet G ω A u B}
PhyslibExt/CondensedMatter/IsingModel/Sharpness/BkCriterion.lean:139
Uses 4 · Used by 1
DefinitionEvent that an edge is closed and pivotal#✓fully proved
The event that e is closed and pivotal for A.
def mpiPivotalClosed (e : Sym2 V) (A : Set (ConfigSpace (Sym2 V))) :
Set (ConfigSpace (Sym2 V)) :=
{omega | IsPivotal e A omega ∧ omega e = false}
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def IsPivotal (e : E) (A : Set (ConfigSpace E)) (ω : ConfigSpace E) : Prop :=
(setOpen e ω ∈ A) ≠ (setClosed e ω ∈ A)
MathlibExt/Probability/CorrelationInequalities/Pivotal.lean:100
Uses 2 · Used by 1
DefinitionProduct of the edge laws over all other edges#✓fully proved
The product of the edge laws over all edges other than e.
noncomputable def mpiWeightOff (beta : ℝ) (J : Sym2 V → ℝ)
(e : Sym2 V) (omega : ConfigSpace (Sym2 V)) : ℝ :=
∏ j ∈ Finset.univ.erase e, shk_edgeLaw beta J j (omega j)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def shk_edgeLaw (beta : ℝ) (J : E → ℝ) (e : E) (b : Bool) : ℝ :=
if b then 1 - Real.exp (-beta * J e) else Real.exp (-beta * J e)
PhyslibExt/CondensedMatter/IsingModel/Sharpness/BkInhomogeneous.lean:133
Uses 2 · Used by 1
LemmaMean-field differential inequality for inhomogeneous percolation#✓fully proved
The mean-field differential inequality for inhomogeneous percolation: Russo's formula ∂_β P(o ↔
B) = ∑_e J_e P(e closed pivotal) and, if φ(S) ≥ m for all S ∋ o, (m/β)(1 - P(o ↔ B)) ≤ ∂_β P(o
↔ B). Reference: H. Duminil-Copin, V. Tassion, "A new proof of the sharpness of the phase
transition for Bernoulli percolation and the Ising model", Comm. Math. Phys. 343 (2016) 725–745.
lemma mpi_meanfield_perco (beta : ℝ) (J : Sym2 V → ℝ)
(hbeta : 0 < beta) (hJ : ∀ e, 0 ≤ J e)
(o : V) (B : Set V) (m : ℝ)
(hm : ∀ S : Finset V, o ∈ S → m ≤ mpiPhi G beta J o S) :
HasDerivAt
(fun b => wprob (shk_edgeLaw b J) (mpiCrossingEvent G o B))
(∑ e, J e * wprob (shk_edgeLaw beta J)
(mpiPivotalClosed e (mpiCrossingEvent G o B))) beta ∧
(1 / beta) * m *
(1 - wprob (shk_edgeLaw beta J) (mpiCrossingEvent G o B)) ≤
∑ e, J e * wprob (shk_edgeLaw beta J)
(mpiPivotalClosed e (mpiCrossingEvent G o B))
noncomputable def mpiPhi (beta : ℝ) (J : Sym2 V → ℝ)
(o : V) (S : Finset V) : ℝ :=
∑ q ∈ shk_boundaryPairs G S,
(1 - Real.exp (-beta * J s(q.1, q.2))) *
wprob (shk_edgeLaw beta J) (connEvent G (S : Set V) o {q.1})
PhyslibExt/CondensedMatter/IsingModel/Sharpness/MeanfieldPercoInhom.lean:365
noncomputable def wprob [Fintype E] [DecidableEq E] (φ : E → Bool → ℝ)
(S : Set (ConfigSpace E)) : ℝ :=
∑ ω, S.indicator (fun _ => (1 : ℝ)) ω * pweight φ ω
MathlibExt/Probability/CorrelationInequalities/BK.lean:101
noncomputable def shk_edgeLaw (beta : ℝ) (J : E → ℝ) (e : E) (b : Bool) : ℝ :=
if b then 1 - Real.exp (-beta * J e) else Real.exp (-beta * J e)
PhyslibExt/CondensedMatter/IsingModel/Sharpness/BkInhomogeneous.lean:133
def mpiCrossingEvent (o : V) (B : Set V) : Set (ConfigSpace (Sym2 V)) :=
connEvent G Set.univ o B
PhyslibExt/CondensedMatter/IsingModel/Sharpness/MeanfieldPercoInhom.lean:69
def mpiPivotalClosed (e : Sym2 V) (A : Set (ConfigSpace (Sym2 V))) :
Set (ConfigSpace (Sym2 V)) :=
{omega | IsPivotal e A omega ∧ omega e = false}
PhyslibExt/CondensedMatter/IsingModel/Sharpness/MeanfieldPercoInhom.lean:480
Uses 36
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.