Documentation

Mathlib.Tactic.Inclusion.Extension.Interval

(possibly unbounded) intervals #

This file defines the Interval type for computation in the inclusion tactic. This type represents a possibly unbounded interval with closed endpoints.

structure Inclusion.Interval (α : Type u_3) :
Type u_3

An Interval represents a possibly unbounded interval with closed endpoints.

  • lb : WithBot α

    The lower endpoint, or if the interval is unbounded below.

  • ub : WithTop α

    The upper endpoint, or if the interval is unbounded above.

Instances For
    def Inclusion.Interval.toSet {α : Type u_1} [Preorder α] (I : Interval α) :
    Set α

    Maps I to {a | I.lb ≤ a ∧ a ≤ I.ub}

    Equations
    Instances For
      @[simp]
      theorem Inclusion.Interval.mem_def {α : Type u_1} [Preorder α] {x : α} {I : Interval α} :
      x I I.lb x x I.ub
      def Inclusion.Interval.map {α : Type u_1} {β : Type u_2} (I : Interval α) (f : αβ) :

      Apply a function to the finite endpoints of an interval.

      Equations
      Instances For
        theorem Inclusion.Interval.mem_map_iff {α : Type u_1} {β : Type u_2} [Preorder β] (f : αβ) {x : β} {I : Interval α} :
        x I.map f (∀ (a : α), I.lb = af a x) ∀ (a : α), I.ub = ax f a

        The interval unbounded on both sides.

        Equations
        Instances For
          @[instance_reducible]
          instance Inclusion.instUnivInterval {α : Type u_1} [Preorder α] :
          Univ (Interval α) α
          Equations
          theorem Inclusion.Interval.mem_map_univ {α : Type u_1} {β : Type u_2} [Preorder β] (f : αβ) (x : β) :
          x (univ α).map f
          def Inclusion.Interval.singleton {α : Type u_1} (a : α) :

          The interval whose two endpoints are a.

          Equations
          Instances For
            theorem Inclusion.Interval.mem_map_singleton {α : Type u_1} {β : Type u_2} [Preorder β] (a : α) (f : αβ) :
            f a (singleton a).map f
            def Inclusion.Interval.Icc {α : Type u_1} (lb : WithBot α) (ub : WithTop α) :

            The interval with lower endpoint lb and upper endpoint ub.

            Equations
            Instances For
              theorem Inclusion.Interval.mem_map_Icc {α : Type u_1} {β : Type u_2} [Preorder β] (f : αβ) {lb ub : α} {x : β} (hl : f lb x) (hu : x f ub) :
              x (Icc lb ub).map f
              theorem Inclusion.Interval.map_lb_le {α : Type u_1} {β : Type u_2} [Preorder β] (f : αβ) {lb : α} {ub : WithTop α} {x : β} (hx : x (Icc (↑lb) ub).map f) :
              f lb x
              theorem Inclusion.Interval.le_map_ub {α : Type u_1} {β : Type u_2} [Preorder β] (f : αβ) {lb : WithBot α} {ub : α} {x : β} (hx : x (Icc lb ub).map f) :
              x f ub
              def Inclusion.Interval.Iic {α : Type u_1} (ub : WithTop α) :

              The interval unbounded below with upper endpoint ub.

              Equations
              Instances For
                def Inclusion.Interval.Ici {α : Type u_1} (lb : WithBot α) :

                The interval unbounded above with lower endpoint lb.

                Equations
                Instances For
                  theorem Inclusion.Interval.mem_Iic_of_le {α : Type u_1} [Preorder α] {x y : α} {I : Interval α} (hxy : x y) (hy : y I) :
                  x Iic I.ub
                  theorem Inclusion.Interval.mem_Ici_of_le {α : Type u_1} [Preorder α] {x y : α} {I : Interval α} (hxy : x y) (hx : x I) :
                  y Ici I.lb
                  theorem Inclusion.Interval.mem_Icc_of_le {α : Type u_1} [Preorder α] {a b x : α} {I J : Interval α} (ha : a I) (hax : a x) (hxb : x b) (hb : b J) :
                  x Icc I.lb J.ub
                  theorem Inclusion.Interval.mem_Iic_of_lt {α : Type u_1} [Preorder α] {x y : α} {I : Interval α} (hxy : x < y) (hy : y I) :
                  x Iic I.ub
                  theorem Inclusion.Interval.mem_Ici_of_lt {α : Type u_1} [Preorder α] {x y : α} {I : Interval α} (hxy : x < y) (hx : x I) :
                  y Ici I.lb
                  theorem Inclusion.Interval.mem_Ici_of_mem_Ici {α : Type u_1} [Preorder α] {a x : α} {I : Interval α} (hx : x Set.Ici a) (ha : a I) :
                  x Ici I.lb
                  theorem Inclusion.Interval.mem_Ici_of_mem_Ioi {α : Type u_1} [Preorder α] {a x : α} {I : Interval α} (hx : x Set.Ioi a) (ha : a I) :
                  x Ici I.lb
                  theorem Inclusion.Interval.mem_Iic_of_mem_Iic {α : Type u_1} [Preorder α] {b x : α} {I : Interval α} (hx : x Set.Iic b) (hb : b I) :
                  x Iic I.ub
                  theorem Inclusion.Interval.mem_Iic_of_mem_Iio {α : Type u_1} [Preorder α] {b x : α} {I : Interval α} (hx : x Set.Iio b) (hb : b I) :
                  x Iic I.ub
                  theorem Inclusion.Interval.mem_Icc_of_mem_Ico {α : Type u_1} [Preorder α] {a b x : α} {I J : Interval α} (hx : x Set.Ico a b) (ha : a I) (hb : b J) :
                  x Icc I.lb J.ub
                  theorem Inclusion.Interval.mem_Icc_of_mem_Ioc {α : Type u_1} [Preorder α] {a b x : α} {I J : Interval α} (hx : x Set.Ioc a b) (ha : a I) (hb : b J) :
                  x Icc I.lb J.ub
                  theorem Inclusion.Interval.mem_Icc_of_mem_Icc {α : Type u_1} [Preorder α] {a b x : α} {I J : Interval α} (hx : x Set.Icc a b) (ha : a I) (hb : b J) :
                  x Icc I.lb J.ub
                  theorem Inclusion.Interval.mem_Icc_of_mem_Ioo {α : Type u_1} [Preorder α] {a b x : α} {I J : Interval α} (hx : x Set.Ioo a b) (ha : a I) (hb : b J) :
                  x Icc I.lb J.ub
                  def Inclusion.Interval.inter {α : Type u_1} [LinearOrder α] (I J : Interval α) :

                  The intersection of two intervals.

                  Equations
                  Instances For
                    @[instance_reducible]
                    instance Inclusion.instRefineInterval {α : Type u_1} [LinearOrder α] :
                    Equations
                    @[simp]
                    theorem Inclusion.Interval.map_inter {α : Type u_1} {β : Type u_2} [LinearOrder α] [LinearOrder β] (f : α ↪o β) (I J : Interval α) :
                    (I.inter J).map f = (I.map f).inter (J.map f)
                    theorem Inclusion.Interval.inter_mem {α : Type u_1} {β : Type u_2} [LinearOrder α] [LinearOrder β] (f : α ↪o β) {x : β} {I J : Interval α} (hxI : x I.map f) (hxJ : x J.map f) :
                    x (I.inter J).map f
                    def Inclusion.Interval.hull {α : Type u_1} [LinearOrder α] (I J : Interval α) :

                    The convex hull of two intervals.

                    Equations
                    Instances For
                      theorem Inclusion.Interval.mem_hull_left {α : Type u_1} [LinearOrder α] {x : α} {I J : Interval α} (hx : x I) :
                      x I.hull J
                      theorem Inclusion.Interval.mem_hull_right {α : Type u_1} [LinearOrder α] {x : α} {I J : Interval α} (hx : x J) :
                      x I.hull J
                      @[instance_reducible]
                      Equations
                      @[simp]
                      theorem Inclusion.Interval.map_hull {α : Type u_1} {β : Type u_2} [LinearOrder α] [LinearOrder β] (f : α ↪o β) (I J : Interval α) :
                      (I.hull J).map f = (I.map f).hull (J.map f)
                      theorem Inclusion.Interval.hull_mem_left {α : Type u_1} {β : Type u_2} [LinearOrder α] [LinearOrder β] (f : α ↪o β) {x : β} {I J : Interval α} (hx : x I.map f) :
                      x (I.hull J).map f
                      theorem Inclusion.Interval.hull_mem_right {α : Type u_1} {β : Type u_2} [LinearOrder α] [LinearOrder β] (f : α ↪o β) {x : β} {I J : Interval α} (hx : x J.map f) :
                      x (I.hull J).map f
                      def Inclusion.Interval.add {α : Type u_1} [Add α] (I J : Interval α) :

                      Add two intervals.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[simp]
                        theorem Inclusion.Interval.add_lb {α : Type u_1} [AddZero α] (I J : Interval α) :
                        (I.add J).lb = I.lb + J.lb
                        @[simp]
                        theorem Inclusion.Interval.add_ub {α : Type u_1} [AddZero α] (I J : Interval α) :
                        (I.add J).ub = I.ub + J.ub
                        theorem Inclusion.Interval.add_mem {α : Type u_1} {β : Type u_2} [AddZero α] [AddCommMonoid β] [Preorder β] [IsOrderedAddMonoid β] (f : α →+ β) {x y : β} {I J : Interval α} (hx : x I.map f) (hy : y J.map f) :
                        x + y (I.add J).map f
                        def Inclusion.Interval.neg {α : Type u_1} [Neg α] (I : Interval α) :

                        Negate an interval.

                        Equations
                        Instances For
                          theorem Inclusion.Interval.neg_mem {α : Type u_1} {β : Type u_2} [AddGroup α] [AddCommGroup β] [Preorder β] [IsOrderedAddMonoid β] (f : α →+ β) {x : β} {I : Interval α} (hx : x I.map f) :
                          -x I.neg.map f
                          def Inclusion.Interval.sub {α : Type u_1} [Sub α] (I J : Interval α) :

                          Subtract one interval from another.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            theorem Inclusion.Interval.sub_eq_add_neg {α : Type u_1} [AddGroup α] (I J : Interval α) :
                            I.sub J = I.add J.neg
                            theorem Inclusion.Interval.sub_mem {α : Type u_1} {β : Type u_2} [AddGroup α] [AddCommGroup β] [Preorder β] [IsOrderedAddMonoid β] (f : α →+ β) {x y : β} {I J : Interval α} (hx : x I.map f) (hy : y J.map f) :
                            x - y (I.sub J).map f
                            def Inclusion.Interval.mulBound {α : Type u_1} [Mul α] [Zero α] [DecidableEq α] :
                            Option αOption αOption α

                            Multiply two finite or infinite interval bounds.

                            Equations
                            Instances For
                              theorem Inclusion.Interval.map_mulBound_le {α : Type u_1} {β : Type u_2} [Mul α] [Zero α] [DecidableEq α] [LE β] (f : αβ) (a b : Option α) {z : β} (hmul : ∀ (x y : α), a = some xb = some yf (x * y) z) (hzero : a = none b = some 0 a = some 0 b = nonef 0 z) :
                              WithBot.map f (mulBound a b) z
                              theorem Inclusion.Interval.le_map_mulBound {α : Type u_1} {β : Type u_2} [Mul α] [Zero α] [DecidableEq α] [LE β] (f : αβ) (a b : Option α) {z : β} (hmul : ∀ (x y : α), a = some xb = some yz f (x * y)) (hzero : a = none b = some 0 a = some 0 b = nonez f 0) :
                              z WithTop.map f (mulBound a b)
                              def Inclusion.Interval.mul {α : Type u_1} [Mul α] [Zero α] [LinearOrder α] (I J : Interval α) :

                              Multiply two intervals.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                theorem Inclusion.Interval.mul_mem {α : Type u_1} {β : Type u_2} [Mul α] [Zero α] [LinearOrder α] [Ring β] [LinearOrder β] [IsStrictOrderedRing β] (f : α ↪o β) (map_zero : f 0 = 0) (map_mul : ∀ (a b : α), f (a * b) = f a * f b) {x y : β} {I J : Interval α} (hx : x I.map f) (hy : y J.map f) :
                                x * y (I.mul J).map f
                                def Inclusion.Interval.orderRelFalse {α : Type u_1} (r : ααProp) [DecidableRel r] (I J : Interval α) :

                                Check if r x y is false is implied by x ∈ I and y ∈ J

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  theorem Inclusion.Interval.orderRelFalse_mem {α : Type u_1} {β : Type u_2} [Preorder β] {r : ααProp} {s : ββProp} [DecidableRel r] [Trans (fun (x1 x2 : β) => x1 x2) s s] [Trans s (fun (x1 x2 : β) => x1 x2) s] (f : r ↪r s) {x y : β} {I J : Interval α} (hx : x I.map f) (hy : y J.map f) :
                                  s x y orderRelFalse r I J
                                  def Inclusion.Interval.orderRel {α : Type u_1} (r : ααProp) [DecidableRel r] (I J : Interval α) :

                                  Check if r x y is implied (true or false) by x ∈ I and y ∈ J.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    theorem Inclusion.Interval.orderRel_mem {α : Type u_1} {β : Type u_2} [Preorder β] {r : ααProp} {s : ββProp} [DecidableRel r] [Trans (fun (x1 x2 : β) => x1 x2) s s] [Trans s (fun (x1 x2 : β) => x1 x2) s] (f : r ↪r s) {x y : β} {I J : Interval α} (hx : x I.map f) (hy : y J.map f) :
                                    s x y orderRel r I J
                                    def Inclusion.Interval.le {α : Type u_1} [LE α] [DecidableLE α] (I J : Interval α) :

                                    Check if x ≤ y is implied (true or false) by x ∈ I and y ∈ J

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      theorem Inclusion.Interval.le_mem {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] [DecidableLE α] (f : α ↪o β) {x y : β} {I J : Interval α} (hx : x I.map f) (hy : y J.map f) :
                                      x y I.le J
                                      def Inclusion.Interval.lt {α : Type u_1} [LT α] [DecidableLT α] (I J : Interval α) :

                                      Check if x < y is implied (true or false) by x ∈ I and y ∈ J.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        theorem Inclusion.Interval.lt_mem {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] [DecidableLT α] (f : α ↪o β) {x y : β} {I J : Interval α} (hx : x I.map f) (hy : y J.map f) :
                                        x < y I.lt J
                                        def Inclusion.Interval.eq {α : Type u_1} [LE α] [DecidableLE α] (I J : Interval α) :

                                        Check if x = y is implied (true or false) by x ∈ I and y ∈ J.

                                        Equations
                                        Instances For
                                          theorem Inclusion.Interval.eq_mem {α : Type u_1} {β : Type u_2} [Preorder α] [PartialOrder β] [DecidableLE α] (f : α ↪o β) {x y : β} {I J : Interval α} (hx : x I.map f) (hy : y J.map f) :
                                          x = y I.eq J
                                          theorem Inclusion.Interval.mem_Ici {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] [DecidableLE α] (f : α ↪o β) {a x : β} {I J : Interval α} (ha : a I.map f) (hx : x J.map f) :
                                          (x Set.Ici a) I.le J
                                          theorem Inclusion.Interval.mem_Ioi {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] [DecidableLT α] (f : α ↪o β) {a x : β} {I J : Interval α} (ha : a I.map f) (hx : x J.map f) :
                                          (x Set.Ioi a) I.lt J
                                          theorem Inclusion.Interval.mem_Iic {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] [DecidableLE α] (f : α ↪o β) {b x : β} {I J : Interval α} (hx : x I.map f) (hb : b J.map f) :
                                          (x Set.Iic b) I.le J
                                          theorem Inclusion.Interval.mem_Iio {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] [DecidableLT α] (f : α ↪o β) {b x : β} {I J : Interval α} (hx : x I.map f) (hb : b J.map f) :
                                          (x Set.Iio b) I.lt J
                                          theorem Inclusion.Interval.mem_Icc {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] [DecidableLE α] (f : α ↪o β) {a b x : β} {I J K : Interval α} (ha : a I.map f) (hx : x J.map f) (hb : b K.map f) :
                                          (x Set.Icc a b) (I.le J).and (J.le K)
                                          theorem Inclusion.Interval.mem_Ico {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] [DecidableLE α] [DecidableLT α] (f : α ↪o β) {a b x : β} {I J K : Interval α} (ha : a I.map f) (hx : x J.map f) (hb : b K.map f) :
                                          (x Set.Ico a b) (I.le J).and (J.lt K)
                                          theorem Inclusion.Interval.mem_Ioc {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] [DecidableLE α] [DecidableLT α] (f : α ↪o β) {a b x : β} {I J K : Interval α} (ha : a I.map f) (hx : x J.map f) (hb : b K.map f) :
                                          (x Set.Ioc a b) (I.lt J).and (J.le K)
                                          theorem Inclusion.Interval.mem_Ioo {α : Type u_1} {β : Type u_2} [Preorder α] [Preorder β] [DecidableLT α] (f : α ↪o β) {a b x : β} {I J K : Interval α} (ha : a I.map f) (hx : x J.map f) (hb : b K.map f) :
                                          (x Set.Ioo a b) (I.lt J).and (J.lt K)