Documentation

Complexitylib.Circuits.Frontier.Tree

Frontiers on a tree of regions #

A binary decomposition pays for the joint boundary states at each merge, rather than for the largest individual separator. Threshold charging now uses the two child interiors and the parent exterior. This costs (K - 1)^3 per merge, still subexponential when K is. The weighted version uses the same disjoint peeling idea as the linear sweep.

structure Complexity.Frontier.RegionTree (ι : Type u_5) (N : Type u_6) :
Type (max u_5 u_6)

A finite binary region decomposition. Empty children serve as leaves; every nonempty child has smaller rank. Inputs not in either child are read at the current node.

Instances For
    structure Complexity.Frontier.TreeFrontier {ι : Type u_1} {U : Type u_2} (S : Set (ι → U)) (M : Type u_5) (N : Type u_6) extends Complexity.Frontier.RegionTree ι N :
    Type (max (max (max u_1 u_2) u_5) u_6)

    Splicing messages on a binary tree of input regions.

    Instances For
      def Complexity.Frontier.TreeFrontier.peers {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) (v : N) (x : ι → U) :
      Set (ι → U)

      The inputs of S sending the same message at v as x.

      Equations
      Instances For
        def Complexity.Frontier.TreeFrontier.inside {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) (v : N) (x : ι → U) :
        Set (↑(P.region v) → U)

        The restrictions of the peers of x at v to the region of v.

        Equations
        Instances For
          def Complexity.Frontier.TreeFrontier.outside {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) (v : N) (x : ι → U) :
          Set (↑(P.region v)ᶜ → U)

          The restrictions of the peers of x at v to the complement of its region.

          Equations
          Instances For
            def Complexity.Frontier.TreeFrontier.localInputs {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) (v : N) :
            Set ι

            The inputs of the region of v in neither child region: those read at v.

            Equations
            Instances For
              def Complexity.Frontier.TreeFrontier.transition {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) (v : N) (x : ι → U) :
              M × M × M × (↑(P.localInputs v) → U)

              A merge includes all three messages, together with inputs read locally.

              Equations
              Instances For
                noncomputable def Complexity.Frontier.TreeFrontier.transitionCount {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) [Fintype N] :

                The number of distinct merge transitions realized by S, summed over all nodes.

                Equations
                Instances For
                  def Complexity.Frontier.TreeFrontier.Coherent {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) :

                  A splice stays in the shared class and inherits each other message from a parent. Laminar network separators with unique satisfying assignments have this property.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem Complexity.Frontier.TreeFrontier.Coherent.peers_eq_rectangle {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) (hP : P.Coherent) (v : N) (x : ι → U) :
                    P.peers v x = rectangle (P.region v) (P.inside v x) (P.outside v x)
                    def Complexity.Frontier.TreeFrontier.erase {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) (hP : P.Coherent) (v : N) (x : ι → U) :
                    TreeFrontier (S \ P.peers v x) M N

                    Delete the peers of x at v from a coherent tree frontier.

                    Equations
                    Instances For
                      theorem Complexity.Frontier.TreeFrontier.Coherent.erase {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) (hP : P.Coherent) (v : N) (x : ι → U) :
                      (P.erase hP v x).Coherent
                      theorem Complexity.Frontier.TreeFrontier.transitionCount_erase_le {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) [Finite ι] [Finite U] [Fintype N] (hP : P.Coherent) (v : N) (x : ι → U) :
                      theorem Complexity.Frontier.TreeFrontier.ncard_inside_empty_le {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) {v : N} (hv : P.region v = ∅) (x : ι → U) :
                      (P.inside v x).ncard ≤ 1
                      theorem Complexity.Frontier.TreeFrontier.ncard_inside_root {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) {x : ι → U} (hx : x ∈ S) :
                      (P.inside P.root x).ncard = S.ncard
                      theorem Complexity.Frontier.TreeFrontier.exists_critical {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) {K : ℕ} (hK : 1 < K) (hS : K ≤ S.ncard) {x : ι → U} (hx : x ∈ S) :
                      ∃ (v : N), K ≤ (P.inside v x).ncard ∧ (P.inside (P.left v) x).ncard < K ∧ (P.inside (P.right v) x).ncard < K

                      A minimal-rank region with a large interior has two small child interiors.

                      theorem Complexity.Frontier.TreeFrontier.ncard_le_of_small_sides {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) [Finite ι] [Finite U] [Fintype N] {K : ℕ} (hK : 1 < K) (hS : K ≤ S.ncard) (hsmall : ∀ (v : N), ∀ x ∈ S, (P.inside v x).ncard < K ∨ (P.outside v x).ncard < K) :

                      Tree threshold charging. Only the actual number of joint merge states is charged.

                      theorem Complexity.Frontier.TreeFrontier.transitionCount_pos {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) [Finite ι] [Finite U] [Fintype N] (hS : S.Nonempty) :
                      theorem Complexity.Frontier.TreeFrontier.abs_sumOn_le_of_budget {ι : Type u_1} {U : Type u_2} {M : Type u_3} {N : Type u_4} {S : Set (ι → U)} (P : TreeFrontier S M N) [Finite ι] [Finite U] [Fintype N] (hP : P.Coherent) {K : ℕ} (hK : 1 < K) {w cost : (ι → U) → ℝ} {a : ℝ} (ha : 0 ≤ a) (hw : ∀ (x : ι → U), |w x| ≤ a) (hc : ∀ (x : ι → U), 0 ≤ cost x) (hrect : RectangleBudget w cost K K) :
                      |sumOn w S| ≤ sumOn cost S + a * ↑((K - 1) ^ 3 * P.transitionCount)

                      Weighted tree peeling. A rectangle budget is paid once; the thin remainder pays at most (K - 1)^3 maximum atoms per joint merge state.