OAI/Algebra/DepthFive/CircuitStructure.lean
3 declarations, 0 contain sorry, 0 declared as axioms
- theorem
OAI.Problem335.homogeneous_indexed_product_positive_factorsline 17Source documentation
An indexed version of positive-factor normalization. The resulting list is a sublist of the original gate occurrences, so sharing and multiplicity are preserved.
theorem homogeneous_indexed_product_positive_factors {K : Type u} [CommSemiring K] {σ : Type v} {ι : Type w} (l : List ι) (p : ι → MvPolynomial σ K) (d : ι → ℕ) (hl : ∀ i ∈ l, (p i).IsHomogeneous (d i)) : ∃ a : K, ∃ factors : List ι, factors.Sublist l ∧ (∀ i ∈ factors, 0 < d i) ∧ (factors.map d).sum = (l.map d).sum ∧ (l.map p).prod = C a * (factors.map p).prod ∧ factors.length ≤ (l.map d).sum := by … - theorem
OAI.Problem335.upperValue_positive_factorsline 42Source documentation
Every upper product is a scalar multiple of positive-formal-degree middle-gate occurrences whose degrees add to the original formal degree.
theorem upperValue_positive_factors {K : Type u} [CommSemiring K] {n : ℕ} (c : Depth5Circuit K n) (i : Fin c.upperCount) : ∃ a : K, ∃ factors : List (Fin c.middleCount), factors.Sublist (c.upperInputs i) ∧ (∀ j ∈ factors, 0 < c.middleDegree j) ∧ (factors.map c.middleDegree).sum = ((c.upperInputs i).map c.middleDegree).sum ∧ upperValue c i = C a * (factors.map (middleValue c)).prod ∧ factors.length ≤ ((c.upperInputs i).map c.middleDegree).sum := by …Mentions: OAI.Problem335.Depth5Circuit, OAI.Problem335.upperValue, OAI.Problem335.middleValue
- theorem
OAI.Problem335.output_term_positive_factorsline 58Source documentation
For an upper gate occurring at the output, the positive factor degrees sum to the circuit output degree, hence there are at most that many factors.
theorem output_term_positive_factors {K : Type u} [CommSemiring K] {n : ℕ} (c : Depth5Circuit K n) (entry : K × Fin c.upperCount) (hentry : entry ∈ c.outputInputs) : ∃ a : K, ∃ factors : List (Fin c.middleCount), factors.Sublist (c.upperInputs entry.2) ∧ (∀ j ∈ factors, 0 < c.middleDegree j) ∧ (factors.map c.middleDegree).sum = c.outputDegree ∧ upperValue c entry.2 = C a * (factors.map (middleValue c)).prod ∧ factors.length ≤ c.outputDegree := by …Mentions: OAI.Problem335.Depth5Circuit, OAI.Problem335.upperValue, OAI.Problem335.middleValue