Documentation

Iris.Algebra.OFE

class Iris.OFE (α : Type u_1) :
Type u_1

Ordered family of equivalences

Instances
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem Iris.OFE.Dist.lt {α : Type u_1} [OFE α] {m n : Nat} {x y : α} :
      Dist n x ym < nDist m x y
      theorem Iris.OFE.Dist.le {α : Type u_1} [OFE α] {m n : Nat} {x y : α} (h : Dist n x y) (h' : m n) :
      Dist m x y
      @[simp]
      theorem Iris.OFE.Dist.rfl {α : Type u_1} [OFE α] {n : Nat} {x : α} :
      Dist n x x
      theorem Iris.OFE.Dist.symm {α : Type u_1} {y : α} [OFE α] {n : Nat} {x : α} :
      Dist n x yDist n y x
      theorem Iris.OFE.Dist.trans {α : Type u_1} {y z : α} [OFE α] {n : Nat} {x : α} :
      Dist n x yDist n y zDist n x z
      theorem Iris.OFE.Dist.of_eq {α : Type u_1} {n : Nat} [OFE α] {x y : α} :
      x = yDist n x y
      theorem Iris.OFE.equiv_eqv {α : Type u_1} [ofe : OFE α] :
      @[simp]
      theorem Iris.OFE.Equiv.rfl {α : Type u_1} [OFE α] {x : α} :
      Equiv x x
      theorem Iris.OFE.Equiv.symm {α : Type u_1} {y : α} [OFE α] {x : α} :
      Equiv x yEquiv y x
      theorem Iris.OFE.Equiv.trans {α : Type u_1} {y z : α} [OFE α] {x : α} :
      Equiv x yEquiv y zEquiv x z
      theorem Iris.OFE.Equiv.dist {α : Type u_1} {y : α} {n : Nat} [OFE α] {x : α} :
      Equiv x yDist n x y
      theorem Iris.OFE.Equiv.of_eq {α : Type u_1} [OFE α] {x y : α} :
      x = yEquiv x y
      Equations
      instance Iris.OFE.instTransDist {α : Type u_1} [OFE α] {n : Nat} :
      Trans (Dist n) (Dist n) (Dist n)
      Equations
      class Iris.OFE.NonExpansive {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (f : αβ) :

      A function f : α → β is non-expansive if it preserves n-equivalence.

      • ne n : Nat x₁ x₂ : α : Dist n x₁ x₂Dist n (f x₁) (f x₂)
      Instances
        instance Iris.OFE.id_ne {α : Type u_1} [OFE α] :
        theorem Iris.OFE.NonExpansive.eqv {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] {f : αβ} [NonExpansive f] x₁ x₂ : α (h : Equiv x₁ x₂) :
        Equiv (f x₁) (f x₂)

        A non-expansive function preserves equivalence.

        class Iris.OFE.NonExpansive₂ {α : Type u_1} {β : Type u_2} {γ : Type u_3} [OFE α] [OFE β] [OFE γ] (f : αβγ) :

        A function f : α → β → γ is non-expansive if it preserves n-equivalence in each argument.

        • ne n : Nat x₁ x₂ : α : Dist n x₁ x₂∀ ⦃y₁ y₂ : β⦄, Dist n y₁ y₂Dist n (f x₁ y₁) (f x₂ y₂)
        Instances
          theorem Iris.OFE.NonExpansive₂.eqv {α : Type u_1} {β : Type u_2} {γ : Type u_3} [OFE α] [OFE β] [OFE γ] {f : αβγ} [NonExpansive₂ f] x₁ x₂ : α (hx : Equiv x₁ x₂) y₁ y₂ : β (hy : Equiv y₁ y₂) :
          Equiv (f x₁ y₁) (f x₂ y₂)
          def Iris.OFE.DistLater {α : Type u_1} [OFE α] (n : Nat) (x y : α) :

          DistLater n x y means that x and y are m-equivalent for all m < n.

          Equations
          Instances For
            @[simp]
            theorem Iris.OFE.DistLater.rfl {α : Type u_1} [OFE α] {n : Nat} {x : α} :
            DistLater n x x
            theorem Iris.OFE.DistLater.symm {α : Type u_1} {y : α} [OFE α] {n : Nat} {x : α} (h : DistLater n x y) :
            DistLater n y x
            theorem Iris.OFE.DistLater.trans {α : Type u_1} {y z : α} [OFE α] {n : Nat} {x : α} (h1 : DistLater n x y) (h2 : DistLater n y z) :
            DistLater n x z
            theorem Iris.OFE.distLater_eqv {α : Type u_1} [OFE α] {n : Nat} :

            DistLater n-equivalence is an equivalence relation.

            theorem Iris.OFE.Dist.distLater {α : Type u_1} [OFE α] {n : Nat} {x y : α} (h : Dist n x y) :
            DistLater n x y

            n-equivalence implies DistLater n-equivalence.

            theorem Iris.OFE.DistLater.dist_lt {α : Type u_1} [OFE α] {m n : Nat} {x y : α} (h : DistLater n x y) (hm : m < n) :
            Dist m x y

            DistLater n-equivalence implies m-equivalence for all m < n.

            @[simp]
            theorem Iris.OFE.distLater_zero {α : Type u_1} [OFE α] {x y : α} :
            DistLater 0 x y

            DistLater 0-equivalence is trivial.

            theorem Iris.OFE.distLater_succ {α : Type u_1} [OFE α] {n : Nat} {x y : α} :
            DistLater n.succ x y Dist n x y

            DistLater n-equivalence is equivalent to (n + 1)-equivalence.

            class Iris.OFE.Contractive {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (f : αβ) :

            A function f : α → β is contractive if it sends DistLater n-equivalent inputs to n-equivalent outputs.

            Instances
              @[simp]
              theorem Iris.OFE.Contractive.zero {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (f : αβ) [Contractive f] {x y : α} :
              Dist 0 (f x) (f y)
              theorem Iris.OFE.Contractive.succ {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (f : αβ) [Contractive f] {n : Nat} {x y : α} (h : Dist n x y) :
              Dist n.succ (f x) (f y)
              instance Iris.OFE.ne_of_contractive {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (f : αβ) [Contractive f] :

              A contractive function is non-expansive.

              theorem Iris.OFE.Contractive.eqv {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (f : αβ) [Contractive f] x y : α (h : Equiv x y) :
              Equiv (f x) (f y)

              A contractive function preserves equivalence.

              instance Iris.OFE.instContractive {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] {x : β} :
              Contractive fun (x_1 : α) => x

              Constant functions are contractive.

              def Iris.OFE.ofDiscrete {α : Type u_1} (Equiv : ααProp) (equiv_eqv : Equivalence Equiv) :
              OFE α

              The discrete OFE obtained from an equivalence relation Equiv

              Equations
              • Iris.OFE.ofDiscrete Equiv equiv_eqv = { Equiv := Equiv, Dist := fun (x : Nat) => Equiv, dist_eqv := , equiv_dist := , dist_lt := }
              Instances For
                class Iris.OFE.DiscreteE {α : Type u_1} [OFE α] (x : α) :

                A discrete element in an OFE

                Instances
                  class Iris.OFE.Discrete (α : Type u_1) [OFE α] :

                  A discrete OFE is one where equivalence is implied by 0-equivalence.

                  • discrete_0 {x y : α} : Dist 0 x yEquiv x y
                  Instances
                    theorem Iris.OFE.Discrete.discrete {α : Type u_1} [OFE α] [Discrete α] {n : Nat} {x y : α} (h : Dist n x y) :
                    Equiv x y

                    For discrete OFEs, n-equivalence implies equivalence for any n.

                    theorem Iris.OFE.Discrete.discrete_n {α : Type u_1} [OFE α] [Discrete α] {n : Nat} {x y : α} (h : Dist 0 x y) :
                    Dist n x y

                    For discrete OFEs, n-equivalence implies equivalence for any n.

                    class Iris.OFE.Leibniz (α : Type u_1) [OFE α] :
                    • eq_of_eqv {x y : α} : Equiv x yx = y
                    Instances
                      @[simp]
                      theorem Iris.OFE.Leibniz.leibniz {α : Type u_1} [OFE α] [Leibniz α] {x y : α} :
                      Equiv x y x = y
                      structure Iris.OFE.Hom (α : Type u_1) (β : Type u_2) [OFE α] [OFE β] :
                      Type (max u_1 u_2)

                      A morphism between OFEs, written α -n> β, is defined to be a function that is non-expansive.

                      Instances For
                        theorem Iris.OFE.Hom.ext_iff {α : Type u_1} {β : Type u_2} {inst✝ : OFE α} {inst✝¹ : OFE β} {x y : α -n> β} :
                        x = y x.f = y.f
                        theorem Iris.OFE.Hom.ext {α : Type u_1} {β : Type u_2} {inst✝ : OFE α} {inst✝¹ : OFE β} {x y : α -n> β} (f : x.f = y.f) :
                        x = y

                        A morphism between OFEs, written α -n> β, is defined to be a function that is non-expansive.

                        Equations
                        Instances For
                          instance Iris.OFE.instCoeFunHomForall {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] :
                          CoeFun (α -n> β) fun (x : α -n> β) => αβ
                          Equations
                          instance Iris.OFE.instNonExpansiveF {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (f : α -n> β) :
                          def Iris.OFE.Hom.id {α : Type u_1} [OFE α] :
                          α -n> α

                          The identity morphism on an OFE.

                          Equations
                          Instances For
                            def Iris.OFE.Hom.comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} [OFE α] [OFE β] [OFE γ] (g : β -n> γ) (f : α -n> β) :
                            α -n> γ

                            The composition of two morphisms between OFEs.

                            Equations
                            Instances For
                              @[simp]
                              theorem Iris.OFE.Hom.id_apply {α : Type u_1} [OFE α] {x : α} :
                              Hom.id.f x = x
                              @[simp]
                              theorem Iris.OFE.Hom.comp_apply {α : Type u_1} {β : Type u_2} {γ : Type u_3} [OFE α] [OFE β] [OFE γ] {g : β -n> γ} {f : α -n> β} {x : α} :
                              (g.comp f).f x = g.f (f.f x)
                              @[simp]
                              theorem Iris.OFE.Hom.id_comp {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] {f : α -n> β} :
                              @[simp]
                              theorem Iris.OFE.Hom.comp_id {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] {f : α -n> β} :
                              theorem Iris.OFE.Hom.comp_assoc {α : Type u_1} {β : Type u_2} {γ : Type u_3} {δ : Type u_4} [OFE α] [OFE β] [OFE γ] [OFE δ] (h : γ -n> δ) (g : β -n> γ) (f : α -n> β) :
                              (h.comp g).comp f = h.comp (g.comp f)
                              structure Iris.OFE.ContractiveHom (α : Type u_1) (β : Type u_2) [OFE α] [OFE β] extends α -n> β :
                              Type (max u_1 u_2)
                              Instances For
                                theorem Iris.OFE.ContractiveHom.ext_iff {α : Type u_1} {β : Type u_2} {inst✝ : OFE α} {inst✝¹ : OFE β} {x y : α -c> β} :
                                x = y x.f = y.f
                                theorem Iris.OFE.ContractiveHom.ext {α : Type u_1} {β : Type u_2} {inst✝ : OFE α} {inst✝¹ : OFE β} {x y : α -c> β} (f : x.f = y.f) :
                                x = y
                                instance Iris.OFE.instCoeFunContractiveHomForall {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] :
                                CoeFun (α -c> β) fun (x : α -c> β) => αβ
                                Equations
                                instance Iris.OFE.instContractiveF {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (f : α -c> β) :
                                theorem Iris.OFE.InvImage.equivalence {α : Sort u} {β : Sort v} {r : ββProp} {f : αβ} (H : Equivalence r) :
                                Equations
                                • One or more equations did not get rendered due to their size.
                                instance Iris.OFE.instULift {α : Type u_1} [OFE α] :
                                OFE (ULift α)
                                Equations
                                • One or more equations did not get rendered due to their size.
                                def Iris.OFE.uliftUpHom {α : Type u_1} [OFE α] :
                                α -n> ULift α
                                Equations
                                Instances For
                                  def Iris.OFE.uliftDownHom {α : Type u_1} [OFE α] :
                                  ULift α -n> α
                                  Equations
                                  Instances For
                                    def Option.Forall₂ {α : Type u_1} {β : Type u_2} (R : αβProp) :
                                    Option αOption βProp
                                    Equations
                                    Instances For
                                      theorem Option.Forall₂.equivalence {α : Type u_1} {R : ααProp} (H : Equivalence R) :
                                      instance Iris.OFE.instOption {α : Type u_1} [OFE α] :
                                      OFE (Option α)
                                      Equations
                                      @[simp]
                                      theorem Iris.OFE.some_eqv_some {α : Type u_1} [OFE α] {x y : α} :
                                      Equiv (some x) (some y) Equiv x y
                                      @[simp]
                                      theorem Iris.OFE.not_some_eqv_none {α : Type u_1} [OFE α] {x : α} :
                                      @[simp]
                                      theorem Iris.OFE.not_none_eqv_some {α : Type u_1} [OFE α] {x : α} :
                                      @[simp]
                                      theorem Iris.OFE.some_dist_some {α : Type u_1} [OFE α] {n : Nat} {x y : α} :
                                      Dist n (some x) (some y) Dist n x y
                                      @[simp]
                                      theorem Iris.OFE.not_some_dist_none {α : Type u_1} [OFE α] {n : Nat} {x : α} :
                                      @[simp]
                                      theorem Iris.OFE.not_none_dist_some {α : Type u_1} [OFE α] {n : Nat} {x : α} :
                                      theorem Iris.OFE.equiv_some {α : Type u_1} [OFE α] {o : Option α} {y : α} (e : Equiv o (some y)) :
                                      (z : α), o = some z Equiv z y
                                      theorem Iris.OFE.equiv_none {α : Type u_1} [OFE α] {o : Option α} :
                                      theorem Iris.OFE.dist_some {α : Type u_1} [OFE α] {n : Nat} {mx : Option α} {y : α} (h : Dist n mx (some y)) :
                                      (z : α), mx = some z Dist n y z
                                      instance Iris.OFE.instLeibnizOption {α : Type u_1} [OFE α] [Leibniz α] :
                                      @[reducible, inline]
                                      abbrev Iris.OFE.OFEFun {α : Type u_1} (β : αType u_2) :
                                      Type (max u_1 u_2)
                                      Equations
                                      Instances For
                                        instance Iris.OFE.instForallOfOFEFun {α : Type u_1} {β : αType u_2} [OFEFun β] :
                                        OFE ((x : α) → β x)
                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        instance Iris.OFE.instHom {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] :
                                        OFE (α -n> β)
                                        Equations
                                        instance Iris.OFE.instContractiveHom {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] :
                                        OFE (α -c> β)
                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        def Iris.OFE.applyHom {α : Type u_1} {β : αType u_2} [OFEFun β] (x : α) :
                                        ((x : α) → β x) -n> β x
                                        Equations
                                        Instances For
                                          def Iris.OFE.mapCodHom {α : Type u_1} {β₁ : αType u_2} {β₂ : αType u_3} [OFEFun β₁] [OFEFun β₂] (F : (x : α) → β₁ x -n> β₂ x) :
                                          ((x : α) → β₁ x) -n> (x : α) → β₂ x
                                          Equations
                                          Instances For
                                            instance Iris.OFE.instProd {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] :
                                            OFE (α × β)
                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            theorem Iris.OFE.equiv_fst {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] {x y : α × β} (h : Equiv x y) :
                                            theorem Iris.OFE.equiv_snd {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] {x y : α × β} (h : Equiv x y) :
                                            theorem Iris.OFE.equiv_prod_ext {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] {x₁ x₂ : α} {y₁ y₂ : β} (ex : Equiv x₁ x₂) (ey : Equiv y₁ y₂) :
                                            Equiv (x₁, y₁) (x₂, y₂)
                                            theorem Iris.OFE.dist_fst {α : Type u_1} {β : Type u_2} {n : Nat} [OFE α] [OFE β] {x y : α × β} (h : Dist n x y) :
                                            Dist n x.fst y.fst
                                            theorem Iris.OFE.dist_snd {α : Type u_1} {β : Type u_2} {n : Nat} [OFE α] [OFE β] {x y : α × β} (h : Dist n x y) :
                                            Dist n x.snd y.snd
                                            theorem Iris.OFE.dist_prod_ext {α : Type u_1} {β : Type u_2} {n : Nat} [OFE α] [OFE β] {x₁ x₂ : α} {y₁ y₂ : β} (ex : Dist n x₁ x₂) (ey : Dist n y₁ y₂) :
                                            Dist n (x₁, y₁) (x₂, y₂)
                                            structure Iris.OFE.Iso (α : Type u_1) (β : Type u_2) [OFE α] [OFE β] :
                                            Type (max u_1 u_2)

                                            An isomorphism between two OFEs is a pair of morphisms whose composition is equivalent to the identity morphism.

                                            Instances For
                                              theorem Iris.OFE.Iso.ext {α : Type u_1} {β : Type u_2} {inst✝ : OFE α} {inst✝¹ : OFE β} {x y : Iso α β} (hom : x.hom = y.hom) (inv : x.inv = y.inv) :
                                              x = y
                                              theorem Iris.OFE.Iso.ext_iff {α : Type u_1} {β : Type u_2} {inst✝ : OFE α} {inst✝¹ : OFE β} {x y : Iso α β} :
                                              x = y x.hom = y.hom x.inv = y.inv
                                              instance Iris.OFE.instCoeFunIsoHom {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] :
                                              CoeFun (Iso α β) fun (x : Iso α β) => α -n> β
                                              Equations
                                              instance Iris.OFE.instNonExpansiveFHom {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (iso : Iso α β) :
                                              instance Iris.OFE.instNonExpansiveFInv {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (iso : Iso α β) :
                                              @[simp]
                                              theorem Iris.OFE.Iso.hom_inv_dist {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (iso : Iso α β) {n : Nat} {x : β} :
                                              Dist n (iso.hom.f (iso.inv.f x)) x
                                              @[simp]
                                              theorem Iris.OFE.Iso.inv_hom_dist {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (iso : Iso α β) {n : Nat} {x : α} :
                                              Dist n (iso.inv.f (iso.hom.f x)) x
                                              theorem Iris.OFE.Iso.hom_eqv {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (iso : Iso α β) x y : α :
                                              Equiv x y Equiv (iso.hom.f x) (iso.hom.f y)

                                              OFE isomorphisms preserve equivalence.

                                              theorem Iris.OFE.Iso.inv_eqv {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (iso : Iso α β) x y : β :
                                              Equiv x y Equiv (iso.inv.f x) (iso.inv.f y)

                                              The inverse of an OFE isomorphism preserves equivalence.

                                              theorem Iris.OFE.Iso.hom_dist {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (iso : Iso α β) {n : Nat} x y : α :
                                              Dist n x y Dist n (iso.hom.f x) (iso.hom.f y)

                                              OFE isomorphisms preserve n-equivalence.

                                              theorem Iris.OFE.Iso.inv_dist {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (iso : Iso α β) {n : Nat} x y : β :
                                              Dist n x y Dist n (iso.inv.f x) (iso.inv.f y)

                                              The inverse of an OFE isomorphism preserves n-equivalence.

                                              def Iris.OFE.Iso.id {α : Type u_1} [OFE α] :
                                              Iso α α

                                              The identity OFE isomorphism

                                              Equations
                                              Instances For
                                                @[simp]
                                                theorem Iris.OFE.Iso.id_apply {α : Type u_1} [OFE α] {x : α} :
                                                id.hom.f x = x
                                                def Iris.OFE.Iso.symm {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (iso : Iso α β) :
                                                Iso β α

                                                The inverse of an OFE isomorphism

                                                Equations
                                                • iso.symm = { hom := iso.inv, inv := iso.hom, hom_inv := , inv_hom := }
                                                Instances For
                                                  def Iris.OFE.Iso.comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} [OFE α] [OFE β] [OFE γ] (iso1 : Iso β γ) (iso2 : Iso α β) :
                                                  Iso α γ

                                                  Composition of OFE isomorphisms

                                                  Equations
                                                  Instances For
                                                    structure Iris.Chain (α : Type u_1) [OFE α] :
                                                    Type u_1

                                                    A chain in an OFE is a Nat-indexed sequence of elements that is upward-closed in terms of n-equivalence.

                                                    Instances For
                                                      instance Iris.instCoeFunChainForallNat {α : Type u_1} [OFE α] :
                                                      CoeFun (Chain α) fun (x : Chain α) => Natα
                                                      Equations
                                                      def Iris.Chain.const {α : Type u_1} [OFE α] (a : α) :

                                                      The constant chain.

                                                      Equations
                                                      Instances For
                                                        @[simp]
                                                        theorem Iris.Chain.const_apply {α : Type u_1} [OFE α] {a : α} {n : Nat} :
                                                        (const a).chain n = a
                                                        def Iris.Chain.map {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (f : α -n> β) (c : Chain α) :

                                                        Mapping a chain through a non-expansive function.

                                                        Equations
                                                        Instances For
                                                          @[simp]
                                                          theorem Iris.Chain.map_apply {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] {f : α -n> β} {c : Chain α} {n : Nat} :
                                                          (map f c).chain n = f.f (c.chain n)
                                                          @[simp]
                                                          theorem Iris.Chain.map_id {α : Type u_1} [OFE α] {c : Chain α} :
                                                          theorem Iris.Chain.map_comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} [OFE α] [OFE β] [OFE γ] {f : α -n> β} {g : β -n> γ} {c : Chain α} :
                                                          map (g.comp f) c = map g (map f c)
                                                          class Iris.IsCOFE (α : Type u_1) [OFE α] :
                                                          Type u_1

                                                          Complete ordered family of equivalences

                                                          Instances
                                                            class Iris.COFE (α : Type u_1) extends Iris.OFE α, Iris.IsCOFE α :
                                                            Type u_1

                                                            Complete ordered family of equivalences

                                                            Instances
                                                              theorem Iris.COFE.conv_compl' {α : Type u_1} [COFE α] {c : Chain α} {n i : Nat} (h : n i) :
                                                              OFE.Dist n (compl c) (c.chain i)
                                                              theorem Iris.COFE.compl_map {α : Type u_1} {β : Type u_2} [COFE α] [COFE β] (f : α -n> β) (c : Chain α) :
                                                              OFE.Equiv (compl (Chain.map f c)) (f.f (compl c))

                                                              Chain maps commute with completion.

                                                              @[simp]
                                                              theorem Iris.COFE.compl_const {α : Type u_1} [COFE α] (a : α) :

                                                              Constant chains complete to their constant value

                                                              @[simp]
                                                              theorem Iris.COFE.discrete_cofe_compl {α : Type u_1} [COFE α] [OFE.Discrete α] (c : Chain α) :

                                                              Completion of discrete COFEs is the constant value.

                                                              def Iris.COFE.ofDiscrete {α : Type u_1} (Equiv : ααProp) (equiv_eqv : Equivalence Equiv) :
                                                              COFE α

                                                              The discrete COFE obtained from an equivalence relation Equiv

                                                              Equations
                                                              Instances For
                                                                instance Iris.COFE.instULift {α : Type u_1} [COFE α] :
                                                                COFE (ULift α)
                                                                Equations
                                                                Equations
                                                                @[reducible, inline]
                                                                abbrev Iris.COFE.IsCOFEFun {α : Type u_1} (β : αType u_2) [OFE.OFEFun β] :
                                                                Type (max u_1 u_2)
                                                                Equations
                                                                Instances For
                                                                  instance Iris.COFE.instForall {α : Type u_1} (β : αType u_2) [(x : α) → COFE (β x)] :
                                                                  COFE ((x : α) → β x)
                                                                  Equations
                                                                  • One or more equations did not get rendered due to their size.
                                                                  @[reducible, inline]
                                                                  abbrev Iris.COFE.OFunctorPre :
                                                                  Type (max (max (u_1 + 1) (u_2 + 1)) (u_3 + 1))
                                                                  Equations
                                                                  Instances For
                                                                    class Iris.COFE.OFunctor (F : OFunctorPre) :
                                                                    Type (max (max (u_1 + 1) (u_2 + 1)) u_3)
                                                                    Instances
                                                                      class Iris.COFE.OFunctorContractive (F : OFunctorPre) extends Iris.COFE.OFunctor F :
                                                                      Type (max (max (u_1 + 1) (u_2 + 1)) u_3)
                                                                      Instances
                                                                        @[reducible, inline]
                                                                        Equations
                                                                        Instances For
                                                                          Equations
                                                                          • One or more equations did not get rendered due to their size.
                                                                          structure Iris.LeibnizO (α : Type u_1) :
                                                                          Type u_1
                                                                          • car : α
                                                                          Instances For
                                                                            theorem Iris.LeibnizO.ext_iff {α : Type u_1} {x y : LeibnizO α} :
                                                                            x = y x.car = y.car
                                                                            theorem Iris.LeibnizO.ext {α : Type u_1} {x y : LeibnizO α} (car : x.car = y.car) :
                                                                            x = y
                                                                            theorem Iris.LeibnizO.eqv_inj {α : Type u_1} {x y : α} (H : OFE.Equiv { car := x } { car := y }) :
                                                                            x = y
                                                                            theorem Iris.LeibnizO.dist_inj {α : Type u_1} {x y : α} {n : Nat} (H : OFE.Dist n { car := x } { car := y }) :
                                                                            x = y
                                                                            @[reducible, inline]
                                                                            Equations
                                                                            Instances For
                                                                              instance Iris.oFunctor_discreteFunOF {C : Type u_1} (F : CCOFE.OFunctorPre) [(c : C) → COFE.OFunctor (F c)] :
                                                                              Equations
                                                                              • One or more equations did not get rendered due to their size.
                                                                              def Iris.optionChain {α : Type u_1} [OFE α] (c : Chain (Option α)) (x : α) :
                                                                              Equations
                                                                              Instances For
                                                                                instance Iris.isCOFE_option {α : Type u_1} [OFE α] [IsCOFE α] :
                                                                                Equations
                                                                                def Iris.optionMap {α : Type u_1} {β : Type u_2} [OFE α] [OFE β] (f : α -n> β) :
                                                                                Equations
                                                                                Instances For
                                                                                  @[reducible, inline]
                                                                                  Equations
                                                                                  Instances For
                                                                                    Equations
                                                                                    • One or more equations did not get rendered due to their size.
                                                                                    def Iris.LimitPreserving {α : Type u_1} [COFE α] (P : αProp) :
                                                                                    Equations
                                                                                    Instances For
                                                                                      theorem Iris.LimitPreserving.const {α : Type u_1} [COFE α] {P : Prop} :
                                                                                      LimitPreserving fun (x : α) => P
                                                                                      theorem Iris.LimitPreserving.discrete {α : Type u_1} [COFE α] {P : αProp} :
                                                                                      (∀ {x y : α}, OFE.Dist 0 x yP xP y)LimitPreserving P
                                                                                      theorem Iris.LimitPreserving.and {α : Type u_1} [COFE α] {P Q : αProp} (HP : LimitPreserving P) (HQ : LimitPreserving Q) :
                                                                                      LimitPreserving fun (a : α) => P a Q a
                                                                                      theorem Iris.LimitPreserving.forall {α : Type u_1} {β : Sort u_2} [COFE α] (P : βαProp) (Hlim : ∀ (y : β), LimitPreserving (P y)) :
                                                                                      LimitPreserving fun (x : α) => ∀ (y : β), P y x
                                                                                      theorem Iris.LimitPreserving.impl {α : Type u_1} [COFE α] (P1 P2 : αProp) (HP1 : ∀ {x y : α}, OFE.Dist 0 x yP1 xP1 y) (Hcompl : LimitPreserving P2) :
                                                                                      LimitPreserving fun (x : α) => P1 xP2 x
                                                                                      theorem Iris.LimitPreserving.equiv {α : Type u_1} {β : Type u_2} [COFE α] [COFE β] (f g : α -n> β) :
                                                                                      LimitPreserving fun (x : α) => OFE.Equiv (f.f x) (g.f x)
                                                                                      def Iris.Fixpoint.chain {α : Type u_1} [OFE α] [Inhabited α] (f : αα) [OFE.Contractive f] :
                                                                                      Equations
                                                                                      Instances For
                                                                                        def Iris.fixpoint {α : Type u_1} [COFE α] [Inhabited α] (f : αα) [OFE.Contractive f] :
                                                                                        α

                                                                                        Fixpoints inside of a COFE

                                                                                        Equations
                                                                                        Instances For
                                                                                          @[reducible, inline]
                                                                                          abbrev Iris.OFE.ContractiveHom.fixpoint {α : Type u_1} [COFE α] [Inhabited α] (f : α -c> α) :
                                                                                          α
                                                                                          Equations
                                                                                          Instances For
                                                                                            theorem Iris.fixpoint_unfold {α : Type u_1} [COFE α] [Inhabited α] (f : α -c> α) :
                                                                                            theorem Iris.fixpoint_unique {α : Type u_1} [COFE α] [Inhabited α] {f : α -c> α} {x : α} (H : OFE.Equiv x (f.f x)) :
                                                                                            theorem Iris.OFE.ContractiveHom.fixpoint_ind {α : Type u_1} [COFE α] [Inhabited α] (f : α -c> α) (P : αProp) (HProper : ∀ (A B : α), Equiv A BP AP B) (x : α) (Hbase : P x) (Hind : ∀ (x : α), P xP (f.f x)) (Hlim : LimitPreserving P) :
                                                                                            structure Iris.Later (A : Type u) :
                                                                                            Type (u + 1)
                                                                                            • next :: (
                                                                                              • car : A
                                                                                            • )
                                                                                            Instances For
                                                                                              instance Iris.isOFE_later {A : Type u_1} [OFE A] :
                                                                                              Equations
                                                                                              • One or more equations did not get rendered due to their size.
                                                                                              def Iris.laterChain {A : Type u_1} [OFE A] (c : Chain (Later A)) :
                                                                                              Equations
                                                                                              Instances For
                                                                                                instance Iris.isCOFE_later {A : Type u_1} [OFE A] [IsCOFE A] :
                                                                                                Equations
                                                                                                def Iris.laterMap {A : Type u_1} {B : Type u_2} [OFE A] [OFE B] (f : A -n> B) :
                                                                                                Equations
                                                                                                Instances For
                                                                                                  @[reducible, inline]
                                                                                                  Equations
                                                                                                  Instances For
                                                                                                    Equations
                                                                                                    • One or more equations did not get rendered due to their size.