Documentation

CvxLean.Lib.Reduction

Reduction of optimization problems #

We define the notion of reduction. It is a reflexive and transitive relation and it induces a backward map between solutions. The idea is that solving the reduced problem is "as hard" as solving the original problem. An equivalence gives a reduction.

References #

TODO #

structure Minimization.Reduction {D : Type} {E : Type} {R : Type} [Preorder R] (p : Minimization D R) (q : Minimization E R) :

We read Reduction p q as p reduces to q [Pap93,10.1].

  • psi : ED
  • psi_optimality : ∀ (x : E), q.optimal xp.optimal (self.psi x)
Instances For
    theorem Minimization.Reduction.psi_optimality {D : Type} {E : Type} {R : Type} [Preorder R] {p : Minimization D R} {q : Minimization E R} (self : p.Reduction q) (x : E) :
    q.optimal xp.optimal (self.psi x)
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      def Minimization.Reduction.refl {D : Type} {R : Type} [Preorder R] {p : Minimization D R} :
      p.Reduction p
      Equations
      • Minimization.Reduction.refl = { psi := id, psi_optimality := }
      Instances For
        def Minimization.Reduction.trans {D : Type} {E : Type} {F : Type} {R : Type} [Preorder R] {p : Minimization D R} {q : Minimization E R} {r : Minimization F R} (R₁ : p.Reduction q) (R₂ : q.Reduction r) :
        p.Reduction r
        Equations
        • R₁.trans R₂ = { psi := R₁.psi R₂.psi, psi_optimality := }
        Instances For
          instance Minimization.Reduction.instTrans {D : Type} {E : Type} {F : Type} {R : Type} [Preorder R] :
          Trans Minimization.Reduction Minimization.Reduction Minimization.Reduction
          Equations
          def Minimization.Reduction.toBwd {D : Type} {E : Type} {R : Type} [Preorder R✝] {p : Minimization D R✝} {q : Minimization E R✝} (R : p.Reduction q) :
          q.Solutionp.Solution
          Equations
          • R.toBwd sol = { point := R.psi sol.point, isOptimal := }
          Instances For
            def Minimization.Reduction.ofEquivalence {D : Type} {E : Type} {R : Type} [Preorder R] {p : Minimization D R} {q : Minimization E✝ R} (E : p.Equivalence q) :
            p.Reduction q
            Equations
            Instances For
              instance Minimization.Reduction.instTransEquivalence {D : Type} {E : Type} {F : Type} {R : Type} [Preorder R] :
              Trans Minimization.Reduction Minimization.Equivalence Minimization.Reduction
              Equations
              • One or more equations did not get rendered due to their size.
              instance Minimization.Reduction.instTransEquivalence_1 {D : Type} {E : Type} {F : Type} {R : Type} [Preorder R] :
              Trans Minimization.Equivalence Minimization.Reduction Minimization.Reduction
              Equations
              • One or more equations did not get rendered due to their size.
              def Minimization.Reduction.map_objFun_of_order_reflecting {D : Type} {R : Type} [Preorder R] {f : DR} {g : RR} {cs : DProp} (h : ∀ {r s : D}, cs rcs sg (f r) g (f s)f r f s) :
              { objFun := f, constraints := cs }.Reduction { objFun := fun (x : D) => g (f x), constraints := cs }

              Weaker version of Equivalence.map_objFun. For a reduction we only need the map to be order-reflecting on the image of the objective function. Note that for an equivalence we also need it to be order-preserving (order-reflecting + order-preserving = order embedding).

              Equations
              Instances For
                def Minimization.Reduction.map_objFun {D : Type} {R : Type} [Preorder R] {f : DR} {g : RR} {cs : DProp} (h : ∀ {r s : D}, cs rcs s(g (f r) g (f s) f r f s)) :
                { objFun := f, constraints := cs }.Reduction { objFun := fun (x : D) => g (f x), constraints := cs }

                See Equivalence.map_objFun.

                Equations
                Instances For
                  noncomputable def Minimization.Reduction.map_objFun_log {D : Type} {cs : DProp} {f : D} (h : ∀ (x : D), cs xf x > 0) :
                  { objFun := f, constraints := cs }.Reduction { objFun := fun (x : D) => (f x).log, constraints := cs }

                  See Equivalence.map_objFun_log.

                  Equations
                  Instances For
                    noncomputable def Minimization.Reduction.map_objFun_sq {D : Type} {cs : DProp} {f : D} (h : ∀ (x : D), cs xf x 0) :
                    { objFun := f, constraints := cs }.Reduction { objFun := fun (x : D) => f x ^ 2, constraints := cs }

                    See Equivalence.map_objFun_sq.

                    Equations
                    Instances For
                      def Minimization.Reduction.map_domain {D : Type} {E : Type} {R : Type} [Preorder R] {f : DR} {cs : DProp} {fwd : DE} {bwd : ED} (h : ∀ (x : D), cs xbwd (fwd x) = x) :
                      { objFun := f, constraints := cs }.Reduction { objFun := fun (x : E) => f (bwd x), constraints := fun (x : E) => cs (bwd x) }

                      See Equivalence.map_domain.

                      Equations
                      Instances For
                        def Minimization.Reduction.rewrite_objFun {D : Type} {R : Type} [Preorder R] {f : DR} {g : DR} {cs : DProp} (hrw : ∀ (x : D), cs xf x = g x) :
                        { objFun := f, constraints := cs }.Reduction { objFun := g, constraints := cs }
                        Equations
                        Instances For
                          def Minimization.Reduction.rewrite_constraints {D : Type} {R : Type} [Preorder R] {f : DR} {cs : DProp} {cs' : DProp} (hrw : ∀ (x : D), cs x cs' x) :
                          { objFun := f, constraints := fun (x : D) => cs x }.Reduction { objFun := f, constraints := fun (x : D) => cs' x }
                          Equations
                          Instances For
                            def Minimization.Reduction.rewrite_constraint_1 {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c1' : DProp} {cs : DProp} (hrw : ∀ (x : D), cs x(c1 x c1' x)) :
                            { objFun := f, constraints := fun (x : D) => c1 x cs x }.Reduction { objFun := f, constraints := fun (x : D) => c1' x cs x }
                            Equations
                            Instances For
                              def Minimization.Reduction.rewrite_constraint_1_last {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c1' : DProp} (hrw : ∀ (x : D), c1 x c1' x) :
                              { objFun := f, constraints := fun (x : D) => c1 x }.Reduction { objFun := f, constraints := fun (x : D) => c1' x }
                              Equations
                              Instances For
                                def Minimization.Reduction.rewrite_constraint_2 {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c2' : DProp} {cs : DProp} (hrw : ∀ (x : D), c1 xcs x(c2 x c2' x)) :
                                { objFun := f, constraints := fun (x : D) => c1 x c2 x cs x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2' x cs x }
                                Equations
                                Instances For
                                  def Minimization.Reduction.rewrite_constraint_2_last {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c2' : DProp} (hrw : ∀ (x : D), c1 x(c2 x c2' x)) :
                                  { objFun := f, constraints := fun (x : D) => c1 x c2 x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2' x }
                                  Equations
                                  Instances For
                                    def Minimization.Reduction.rewrite_constraint_3 {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c3' : DProp} {cs : DProp} (hrw : ∀ (x : D), c1 xc2 xcs x(c3 x c3' x)) :
                                    { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x cs x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3' x cs x }
                                    Equations
                                    Instances For
                                      def Minimization.Reduction.rewrite_constraint_3_last {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c3' : DProp} (hrw : ∀ (x : D), c1 xc2 x(c3 x c3' x)) :
                                      { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3' x }
                                      Equations
                                      Instances For
                                        def Minimization.Reduction.rewrite_constraint_4 {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c4' : DProp} {cs : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xcs x(c4 x c4' x)) :
                                        { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x cs x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4' x cs x }
                                        Equations
                                        Instances For
                                          def Minimization.Reduction.rewrite_constraint_4_last {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c4' : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 x(c4 x c4' x)) :
                                          { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4' x }
                                          Equations
                                          Instances For
                                            def Minimization.Reduction.rewrite_constraint_5 {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c5 : DProp} {c5' : DProp} {cs : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xc4 xcs x(c5 x c5' x)) :
                                            { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x cs x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5' x cs x }
                                            Equations
                                            Instances For
                                              def Minimization.Reduction.rewrite_constraint_5_last {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c5 : DProp} {c5' : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xc4 x(c5 x c5' x)) :
                                              { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5' x }
                                              Equations
                                              Instances For
                                                def Minimization.Reduction.rewrite_constraint_6 {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c5 : DProp} {c6 : DProp} {c6' : DProp} {cs : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xc4 xc5 xcs x(c6 x c6' x)) :
                                                { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x cs x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6' x cs x }
                                                Equations
                                                Instances For
                                                  def Minimization.Reduction.rewrite_constraint_6_last {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c5 : DProp} {c6 : DProp} {c6' : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xc4 xc5 x(c6 x c6' x)) :
                                                  { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6' x }
                                                  Equations
                                                  Instances For
                                                    def Minimization.Reduction.rewrite_constraint_7 {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c5 : DProp} {c6 : DProp} {c7 : DProp} {c7' : DProp} {cs : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xc4 xc5 xc6 xcs x(c7 x c7' x)) :
                                                    { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7 x cs x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7' x cs x }
                                                    Equations
                                                    Instances For
                                                      def Minimization.Reduction.rewrite_constraint_7_last {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c5 : DProp} {c6 : DProp} {c7 : DProp} {c7' : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xc4 xc5 xc6 x(c7 x c7' x)) :
                                                      { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7 x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7' x }
                                                      Equations
                                                      Instances For
                                                        def Minimization.Reduction.rewrite_constraint_8 {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c5 : DProp} {c6 : DProp} {c7 : DProp} {c8 : DProp} {c8' : DProp} {cs : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xc4 xc5 xc6 xc7 xcs x(c8 x c8' x)) :
                                                        { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7 x c8 x cs x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7 x c8' x cs x }
                                                        Equations
                                                        Instances For
                                                          def Minimization.Reduction.rewrite_constraint_8_last {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c5 : DProp} {c6 : DProp} {c7 : DProp} {c8 : DProp} {c8' : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xc4 xc5 xc6 xc7 x(c8 x c8' x)) :
                                                          { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7 x c8 x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7 x c8' x }
                                                          Equations
                                                          Instances For
                                                            def Minimization.Reduction.rewrite_constraint_9 {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c5 : DProp} {c6 : DProp} {c7 : DProp} {c8 : DProp} {c9 : DProp} {c9' : DProp} {cs : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xc4 xc5 xc6 xc7 xc8 xcs x(c9 x c9' x)) :
                                                            { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7 x c8 x c9 x cs x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7 x c8 x c9' x cs x }
                                                            Equations
                                                            Instances For
                                                              def Minimization.Reduction.rewrite_constraint_9_last {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c5 : DProp} {c6 : DProp} {c7 : DProp} {c8 : DProp} {c9 : DProp} {c9' : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xc4 xc5 xc6 xc7 xc8 x(c9 x c9' x)) :
                                                              { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7 x c8 x c9 x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7 x c8 x c9' x }
                                                              Equations
                                                              Instances For
                                                                def Minimization.Reduction.rewrite_constraint_10 {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c5 : DProp} {c6 : DProp} {c7 : DProp} {c8 : DProp} {c9 : DProp} {c10 : DProp} {c10' : DProp} {cs : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xc4 xc5 xc6 xc7 xc8 xc9 xcs x(c10 x c10' x)) :
                                                                { objFun := f, constraints := fun (x : D) => c1 x (fun (x : D) => c2 x c3 x c4 x c5 x c6 x c7 x c8 x c9 x c10 x cs x) x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x (fun (x : D) => c2 x c3 x c4 x c5 x c6 x c7 x c8 x c9 x c10' x cs x) x }
                                                                Equations
                                                                Instances For
                                                                  def Minimization.Reduction.rewrite_constraint_10_last {D : Type} {R : Type} [Preorder R] {f : DR} {c1 : DProp} {c2 : DProp} {c3 : DProp} {c4 : DProp} {c5 : DProp} {c6 : DProp} {c7 : DProp} {c8 : DProp} {c9 : DProp} {c10 : DProp} {c10' : DProp} (hrw : ∀ (x : D), c1 xc2 xc3 xc4 xc5 xc6 xc7 xc8 xc9 x(c10 x c10' x)) :
                                                                  { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7 x c8 x c9 x c10 x }.Reduction { objFun := f, constraints := fun (x : D) => c1 x c2 x c3 x c4 x c5 x c6 x c7 x c8 x c9 x c10' x }
                                                                  Equations
                                                                  Instances For
                                                                    def Minimization.Equivalence.ofReductions {D : Type} {E : Type} {R : Type} [Preorder R] (p : Minimization D R) (q : Minimization E R) (R₁ : p.Reduction q) (R₂ : q.Reduction p) :
                                                                    p.Equivalence q
                                                                    Equations
                                                                    Instances For