Lifting type trees through a resolve
Lax185574.ResolveLift · concepts/Lax185574/ResolveLift.lean · lax-185574
No public endorsements yet.
Loading review…
Sign in with ORCIDNatural Language Statement
Lemma
Let k ≥ 1 and q ∈ ℕ. Given a partial graph G, its distance matrix D_G, colors P, Q, a sign ±, and (tree^G_{k,q}(a) : a ∈ V(G)), one can compute H = resolve^±{P,Q}(G), its distance matrix D_H, and (tree^H{k,q}(a) : a ∈ V(G)) in time
|G|² · poly_{k,q}(M + T),
where
M = max_{a ∈ V(G)} ‖tree^G_{k,q}(a)‖, T = max_{a ∈ V(G)} |{tree^G_{k+i,q−i}(v̄) | 0 ≤ i ≤ q, ℓ ∈ [k+i], v̄ ∈ (Ball^H_{ρ⁺(k,q)}(a))^ℓ}|.
Each output tree has size poly_{k,q}(T).
Concept map
Evidence
Each proof establishes this claim relative to its assumptions.
Lean source view on GitHub
| 1 | import Lax185574.TypeTrees |
| 2 | import Lax185574.ConstructionSequences |
| 3 | import Lax185574.DistanceMatrix |
| 4 | import Lax185574.Algorithms |
| 5 | |
| 6 | /-! |
| 7 | --- |
| 8 | title: Lifting type trees through a resolve |
| 9 | type: lemma |
| 10 | --- |
| 11 | Let k ≥ 1 and q ∈ ℕ. Given a partial graph G, its distance matrix D_G, |
| 12 | colors P, Q, a sign ±, and (tree^G_{k,q}(a) : a ∈ V(G)), one can compute |
| 13 | H = resolve^±_{P,Q}(G), its distance matrix D_H, and |
| 14 | (tree^H_{k,q}(a) : a ∈ V(G)) in time |
| 15 | |
| 16 | |G|² · poly_{k,q}(M + T), |
| 17 | |
| 18 | where |
| 19 | |
| 20 | M = max_{a ∈ V(G)} ‖tree^G_{k,q}(a)‖, |
| 21 | T = max_{a ∈ V(G)} |{tree^G_{k+i,q−i}(v̄) | 0 ≤ i ≤ q, ℓ ∈ [k+i], |
| 22 | v̄ ∈ (Ball^H_{ρ⁺(k,q)}(a))^ℓ}|. |
| 23 | |
| 24 | Each output tree has size poly_{k,q}(T). |
| 25 | |
| 26 | # Formalization notes |
| 27 | |
| 28 | The algorithm is an algorithm in the sense of `Lax185574.Algorithms`, |
| 29 | one for all k and q. Its input is the tuple of G, its distance matrix, |
| 30 | P, Q, the sign and the family of type trees, with the encodings of |
| 31 | `Lax185574.Encodings`. The sign is a Boolean, `true` for + and `false` |
| 32 | for −. The output is the triple of H, its distance matrix and the new |
| 33 | family. The partial graph is on `Fin n`, so |G| = n. M is |
| 34 | `maxTreeSize G k q`, the time is `O(n² · (M + T + 1)^a)`, and each new |
| 35 | tree has an encoding of length at most `c · (T + 1)^a`, where the degree |
| 36 | `a` and the constant `c` may depend on k and q. The second factor of |
| 37 | the time is increased by one, so that it is positive. The set in the |
| 38 | definition of T collects trees of G of tuples from balls in H. |
| 39 | -/ |
| 40 | |
| 41 | namespace Lax185574.ResolveLift |
| 42 | |
| 43 | open Lax185574.Encoding Lax185574.Algorithms |
| 44 | open Lax185574.PartialGraphs Lax185574.TypeTrees Lax185574.ConstructionSequences |
| 45 | open Lax185574.DistanceMatrix |
| 46 | open Lax3.DistFO (rhoMinus rhoPlus) |
| 47 | |
| 48 | variable {n : ℕ} |
| 49 | |
| 50 | /-- `resolve^±_{P,Q}(G)`, positive for `true`. -/ |
| 51 | def resolveBy (G : PartialGraph (Fin n)) (s : Bool) (P Q : ℕ) : PartialGraph (Fin n) := |
| 52 | if s then resolvePos G P Q else resolveNeg G P Q |
| 53 | |
| 54 | /-- The parameter `T`: the largest number of type trees in `G` of |
| 55 | tuples from a ball of radius `ρ⁺(k, q)` in `H`, over all ranks |
| 56 | `(k+i, q−i)` and arities `ℓ ∈ [k+i]`. -/ |
| 57 | noncomputable def treeCount (G H : PartialGraph (Fin n)) (k q : ℕ) : ℕ := |
| 58 | Finset.univ.sup fun a : Fin n => |
| 59 | Set.ncard {τ : TypeTree | ∃ (i ℓ : ℕ) (v : Fin ℓ → Fin n), i ≤ q ∧ 1 ≤ ℓ ∧ ℓ ≤ k + i ∧ |
| 60 | (∀ j, v j ∈ H.ball (rhoPlus k q) a) ∧ τ = tree G (k + i) (q - i) v} |
| 61 | |
| 62 | /-- **Resolve lift.** One algorithm computes the partial graph `H` after |
| 63 | a resolve, its distance matrix and the type trees of all vertices in it, |
| 64 | from the partial graph `G` before, its distance matrix, `P`, `Q`, the |
| 65 | sign and its type trees, in time `O(n² · (M + T + 1)^a)`. Each new tree |
| 66 | has size `O((T + 1)^a)`. -/ |
| 67 | axiom exists_program_resolveLift : |
| 68 | ∃ A : Algorithm, ∀ k q : ℕ, ∃ c a : ℕ, |
| 69 | ∀ (n : ℕ) (G : PartialGraph (Fin n)) (P Q : ℕ) (s : Bool), 1 ≤ k → |
| 70 | let H := resolveBy G s P Q |
| 71 | let T := treeCount G H k q |
| 72 | A.Computes c (G, distMatrix G, P, Q, s, family G k q) (H, distMatrix H, family H k q) |
| 73 | (n ^ 2 * (maxTreeSize G k q + T + 1) ^ a) ∧ |
| 74 | ∀ b : Fin n, (encode (tree H k q ![b])).length ≤ c * (T + 1) ^ a |
| 75 | |
| 76 | end Lax185574.ResolveLift |
| 77 |
Formalization notes
The algorithm is an algorithm in the sense of , one for all k and q. Its input is the tuple of G, its distance matrix, P, Q, the sign and the family of type trees, with the encodings of . The sign is a Boolean, for + and for −. The output is the triple of H, its distance matrix and the new family. The partial graph is on , so |G| = n. M is , the time is , and each new tree has an encoding of length at most , where the degree and the constant may depend on k and q. The second factor of the time is increased by one, so that it is positive. The set in the definition of T collects trees of G of tuples from balls in H.
Builds on
Used by
none
From Mathlib
none
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments