Documentation

Complexitylib.Circuits.DepthThree.LowerBound.Internal.Core

Unrestricted depth-three lower bound: core #

Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a. Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/Core.lean

Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.

@[reducible, inline]
abbrev Complexity.DepthThreeLowerBound.Clause (V : Type uDepth1) :
Type uDepth1

A finite set of signed input literals, interpreted as a disjunction.

Equations
Instances For
    @[reducible, inline]
    abbrev Complexity.DepthThreeLowerBound.CNF (V : Type uDepth2) :
    Type uDepth2

    A list of clauses, interpreted as a conjunction.

    Equations
    Instances For

      Flip the satisfying value of a literal.

      Equations
      Instances For
        @[simp]
        theorem Complexity.DepthThreeLowerBound.Literal.eval_eq_true {V : Type uDepth3} (l : Literal V) (x : Cube V) :
        l.eval x = true ↔ x l.1 = l.2
        @[simp]
        theorem Complexity.DepthThreeLowerBound.Literal.eval_compl {V : Type uDepth3} (l : Literal V) (x : Cube V) :
        l.compl.eval x = !l.eval x
        noncomputable def Complexity.DepthThreeLowerBound.Clause.eval {V : Type uDepth3} (C : Clause V) (x : Cube V) :

        Evaluate the disjunction of the literals in a clause.

        Equations
        Instances For
          noncomputable def Complexity.DepthThreeLowerBound.Clause.scope {V : Type uDepth3} (C : Clause V) :

          The variables appearing in a clause, forgetting signs.

          Equations
          Instances For
            noncomputable def Complexity.DepthThreeLowerBound.Clause.width {V : Type uDepth3} (C : Clause V) :

            The number of distinct variables appearing in a clause.

            Equations
            Instances For

              No variable occurs with both signs in the clause.

              Equations
              Instances For
                @[simp]
                theorem Complexity.DepthThreeLowerBound.Clause.eval_eq_true {V : Type uDepth3} (C : Clause V) (x : Cube V) :
                C.eval x = true ↔ ∃ l ∈ C, x l.1 = l.2
                @[simp]
                theorem Complexity.DepthThreeLowerBound.Clause.eval_singleton {V : Type uDepth3} (l : Literal V) (x : Cube V) :
                {l}.eval x = l.eval x
                theorem Complexity.DepthThreeLowerBound.Clause.eval_mono {V : Type uDepth3} {C D : Clause V} (h : C ⊆ D) {x : Cube V} (hx : C.eval x = true) :
                D.eval x = true
                theorem Complexity.DepthThreeLowerBound.Clause.Normalized.subset {V : Type uDepth3} {C D : Clause V} (hD : D.Normalized) (h : C ⊆ D) :
                theorem Complexity.DepthThreeLowerBound.Clause.scope_mono {V : Type uDepth3} {C D : Clause V} (h : C ⊆ D) :
                C.scope ⊆ D.scope
                theorem Complexity.DepthThreeLowerBound.Clause.width_mono {V : Type uDepth3} {C D : Clause V} (h : C ⊆ D) :
                noncomputable def Complexity.DepthThreeLowerBound.CNF.eval {V : Type uDepth3} (H : CNF V) (x : Cube V) :

                Evaluate the conjunction of the clauses in a CNF.

                Equations
                Instances For

                  Every clause involves at most the given number of distinct variables.

                  Equations
                  Instances For

                    Every clause has at most one sign for each variable.

                    Equations
                    Instances For
                      @[simp]
                      theorem Complexity.DepthThreeLowerBound.CNF.eval_eq_true {V : Type uDepth3} (H : CNF V) (x : Cube V) :
                      H.eval x = true ↔ ∀ C ∈ H, C.eval x = true
                      @[simp]
                      @[simp]
                      theorem Complexity.DepthThreeLowerBound.CNF.eval_cons {V : Type uDepth3} (C : Clause V) (H : CNF V) (x : Cube V) :
                      eval (C :: H) x = (C.eval x && H.eval x)
                      @[simp]
                      theorem Complexity.DepthThreeLowerBound.CNF.eval_append {V : Type uDepth3} (H J : CNF V) (x : Cube V) :
                      (H ++ J).eval x = (H.eval x && J.eval x)
                      theorem Complexity.DepthThreeLowerBound.CNF.eval_antitone {V : Type uDepth3} {H J : CNF V} (h : H ⊆ J) {x : Cube V} (hx : J.eval x = true) :
                      H.eval x = true
                      theorem Complexity.DepthThreeLowerBound.CNF.WidthAtMost.mono {V : Type uDepth3} {H : CNF V} {b c : ℕ} (h : H.WidthAtMost b) (hbc : b ≤ c) :

                      The zero-one real indicator of a Boolean value.

                      Equations
                      Instances For

                        Encode true by 1 and false by -1.

                        Equations
                        Instances For