Ordered families of equivalences and complete step-indexed spaces.
Copyright (c) The Iris-Lean Contributors.
Ordered family of equivalences
The equivalence relation at a specified step index.
- dist_eqv {n : Nat} : Equivalence (Dist n)
Instances
Notation for equivalence at a specified step index.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Note: Not an instance, as any function can be decomposed as a composition in multiple ways.
Note: Not an instance, for symmetry with NonExpansive₂.ne_left, which cannot be an instance.
Note: Not an instance, due to instance coherence problems.
DistLater n-equivalence is an equivalence relation.
A contractive function is non-expansive.
Constant functions are contractive.
Build a Leibniz OFE on Quotient s from a step-indexed distance dist on the carrier,
given that the setoid relation coincides with the OFE equivalence fun x y => ∀ n, dist n x y
(hypothesis hs). Quotienting forces the resulting OFE equality to be Leibniz, while
Quotient.sound/Quotient.exact keep speaking about the domain relation s.r. See
https://leanprover.zulipchat.com/#narrow/channel/490604-iris-lean/topic/Evaluating.20a.20specialization.20to.20Leibnize.20OFE.27s/with/606745235
Equations
- Iris.OFE.ofQuotient dist heqv hlt hs = { Dist := fun (n : Nat) => Quotient.lift₂ (dist n) ⋯, dist_eqv := ⋯, eq_dist' := ⋯, dist_lt := ⋯ }
Instances For
A morphism between OFEs, written α -n> β, is defined to be a function that is
non-expansive.
Equations
- Iris.OFE.«term_-n>_» = Lean.ParserDescr.trailingNode `Iris.OFE.«term_-n>_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " -n> ") (Lean.ParserDescr.cat `term 25))
Instances For
Equations
The constant non-expansive morphism with a specified value.
Equations
- Iris.OFE.Hom.const x = { f := Function.const α x, ne := ⋯ }
Instances For
A bundled contractive function between ordered equivalence spaces.
- f : α → β
- ne : NonExpansive self.f
- contractive : Contractive self.f
Instances For
Notation for a bundled contractive map.
Equations
- Iris.OFE.«term_-c>_» = Lean.ParserDescr.trailingNode `Iris.OFE.«term_-c>_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " -c> ") (Lean.ParserDescr.cat `term 25))
Instances For
Bundle a function with its available contractiveness instance.
Equations
- Function.toContractiveHom f = { f := f, ne := ⋯, contractive := ι }
Instances For
Equations
- Iris.OFE.unitOFE = { Dist := fun (x : Nat) (x_1 x_2 : Unit) => True, dist_eqv := @Iris.OFE.unitOFE._proof_2, eq_dist' := @Iris.OFE.unitOFE._proof_1, dist_lt := ⋯ }
Equations
- Iris.OFE.instEmpty = { Dist := fun (x : Nat) (x_1 x_2 : Empty) => True, dist_eqv := @Iris.OFE.instEmpty._proof_1, eq_dist' := @Iris.OFE.instEmpty._proof_2, dist_lt := ⋯ }
Equations
- Iris.OFE.instULift = { Dist := fun (n : Nat) (x y : ULift α) => Iris.OFE.Dist n x.down y.down, dist_eqv := ⋯, eq_dist' := ⋯, dist_lt := ⋯ }
The non-expansive projection from a universe lift.
Equations
- Iris.OFE.uliftDownHom = { f := ULift.down, ne := ⋯ }
Instances For
Equations
- Iris.OFE.instOption = { Dist := fun (n : Nat) => Option.Forall₂ (Iris.OFE.Dist n), dist_eqv := ⋯, eq_dist' := ⋯, dist_lt := ⋯ }
Data-valued form of dist_some, for building the witnesses of ORA.extend.
Equations
- Iris.OFE.distSome h_2 = ⟨val, ⋯⟩
- Iris.OFE.distSome h_2 = False.elim h_2
Instances For
Note: Not an instance, due to instance coherence problems.
A pointwise family of ordered equivalence structures.
Equations
- Iris.OFE.OFEFun β = ((a : α) → Iris.OFE (β a))
Instances For
Equations
- Iris.OFE.instForallOfOFEFun = { Dist := fun (n : Nat) (f g : (x : α) → β x) => ∀ (x : α), Iris.OFE.Dist n (f x) (g x), dist_eqv := ⋯, eq_dist' := ⋯, dist_lt := ⋯ }
Evaluate a dependent function at a specified argument.
Equations
- Iris.OFE.applyHom x = { f := fun (f : (x : α) → β x) => f x, ne := ⋯ }
Instances For
Apply a family of non-expansive maps pointwise to dependent functions.
Equations
- Iris.OFE.mapCodHom F = { f := fun (f : (x : α) → β₁ x) (x : α) => (F x).f (f x), ne := ⋯ }
Instances For
Note: Not an instance, due to instance coherence problems.
Note: Not an instance, due to instance coherence problems.
Note: Not an instance, due to instance coherence problems.
Note: Not an instance, due to instance coherence problems.
Note: Not an instance, due to instance coherence problems.
The first components of n-equivalent dependent pairs are equal.
Split out of Sigma.dist_snd so that the projection happens in a body rather than in a statement:
in a statement the OFE (Sigma P) instance argument is still an unsolved metavariable, so h's
type cannot be reduced to the ∃ heq, .. of instOFESigma to project out of.
An isomorphism between two OFEs is a pair of morphisms whose composition is equivalent to the identity morphism.
The forward non-expansive map of an isomorphism.
The inverse non-expansive map of an isomorphism.
Instances For
Equations
- Iris.OFE.instCoeFunIsoHom = { coe := Iris.OFE.Iso.hom }
The identity OFE isomorphism
Equations
- Iris.OFE.Iso.id = { hom := Iris.OFE.Hom.id, inv := Iris.OFE.Hom.id, hom_inv := ⋯, inv_hom := ⋯ }
Instances For
The constant chain.
Equations
- Iris.Chain.const a = { chain := fun (x : Nat) => a, cauchy := ⋯ }
Instances For
Complete ordered family of equivalences
Instances
Equations
- Iris.instCOFEOfIsCOFE = { toOFE := inst✝¹, toIsCOFE := inst✝ }
Constant chains complete to their constant value
Completion of discrete COFEs is the constant value.
The discrete COFE obtained from an equality relation Eq
Equations
- Iris.COFE.ofDiscrete α = { toOFE := Iris.OFE.ofDiscrete α, compl := fun (c : Iris.Chain α) => c.chain 0, conv_compl := ⋯ }
Instances For
Equations
- Iris.COFE.instULift = { toOFE := Iris.OFE.instULift, compl := fun (c : Iris.Chain (ULift α)) => { down := Iris.IsCOFE.compl (Iris.Chain.map Iris.OFE.uliftDownHom c) }, conv_compl := ⋯ }
Equations
- Iris.COFE.instUnit = { toOFE := Iris.OFE.unitOFE, compl := fun (x : Iris.Chain Unit) => (), conv_compl := ⋯ }
Equations
- Iris.COFE.instEmpty = { toOFE := Iris.OFE.instEmpty, compl := fun (c : Iris.Chain Empty) => (c.chain 0).elim, conv_compl := @Iris.COFE.instEmpty._proof_1 }
Pointwise completeness of a family of ordered equivalence spaces.
Equations
- Iris.COFE.IsCOFEFun β = ((x : α) → Iris.IsCOFE (β x))
Instances For
Equations
- Iris.COFE.instIsCOFEHom = { compl := fun (c : Iris.Chain (α -n> β)) => { f := fun (x : α) => Iris.IsCOFE.compl (Iris.Chain.map (Iris.OFE.applyNe x) c), ne := ⋯ }, conv_compl := ⋯ }
Equations
- Iris.COFE.instIsCOFESigma = { compl := fun (c : Iris.Chain (Sigma P)) => ⟨(c.chain 0).fst, Iris.IsCOFE.compl (Iris.COFE.Sigma.chainMapSnd c)⟩, conv_compl := ⋯ }
A mixed-variance family of ordered equivalence spaces with a non-expansive action.
- map {α₁ α₂ : Type u_1} {β₁ β₂ : Type u_2} [COFE α₁] [COFE α₂] [COFE β₁] [COFE β₂] : (α₂ -n> α₁) → (β₁ -n> β₂) → F α₁ β₁ -n> F α₂ β₂
The contravariant and covariant action on non-expansive maps.
- map_id {α : Type u_1} {β : Type u_2} [COFE α] [COFE β] (x : F α β) : (map OFE.Hom.id OFE.Hom.id).f x = x
Instances
A mixed-variance space functor whose action on morphisms is contractive.
- map_id {α : Type u_1} {β : Type u_2} [COFE α] [COFE β] (x : F α β) : (map OFE.Hom.id OFE.Hom.id).f x = x
- map_contractive {α₁ α₂ : Type u_1} {β₁ β₂ : Type u_2} [COFE α₁] [COFE α₂] [COFE β₁] [COFE β₂] : OFE.Contractive (Function.uncurry OFunctor.map)
Instances
A type equipped with equality as its step-indexed equivalence.
- car : α
The underlying element of a discrete ordered equivalence space.
Instances For
Equations
The composition of two functors, F₁ applied to F₂.
Equations
- Iris.ComposeOF F₁ F₂ α β = F₁ (F₂ β α) (F₂ α β)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Iris.oFunctorComposeOFContractiveLeft = { toOFunctor := Iris.oFunctorComposeOF, map_contractive := ⋯ }
Equations
- Iris.oFunctorComposeOFContractiveRight = { toOFunctor := Iris.oFunctorComposeOF, map_contractive := ⋯ }
The pointwise product of an indexed family of space functors.
Equations
- Iris.DiscreteFunOF F A B = ((c : C) → F c A B)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Iris.oFunctorDiscreteFunOFContractive F = { toOFunctor := Iris.oFunctorDiscreteFunOF F, map_contractive := ⋯ }
Equations
- Iris.isCOFEOption = { compl := fun (c : Iris.Chain (Option α)) => Option.map (fun (x : α) => Iris.IsCOFE.compl (Iris.optionChain c x)) (c.chain 0), conv_compl := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- Iris.instOFunctorContractiveOptionOF F = { toOFunctor := Iris.oFunctorOption F, map_contractive := ⋯ }
The pointwise product of two mixed-variance space functors.
Equations
- Iris.ProdOF F1 F2 A B = (F1 A B × F2 A B)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Iris.instOFunctorContractiveProdOF = { toOFunctor := Iris.instOFunctorProdOF, map_contractive := ⋯ }
The pointwise sum of two mixed-variance space functors.
Equations
- Iris.SumOF F1 F2 A B = (F1 A B ⊕ F2 A B)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Iris.instOFunctorContractiveSumOF = { toOFunctor := Iris.instOFunctorSumOF, map_contractive := ⋯ }
The dependent sum of an indexed family of space functors.
Equations
- Iris.SigmaOF F B C = ((a : A) × F a B C)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Iris.instOFunctorContractiveSigmaOF = { toOFunctor := Iris.instOFunctorSigmaOF, map_contractive := ⋯ }
The constant mixed-variance space family.
Equations
- Iris.termConstOF = Lean.ParserDescr.node `Iris.termConstOF 1024 (Lean.ParserDescr.symbol "constOF")
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Iris.OFunctor.constOFContractive = { toOFunctor := Iris.oFunctorConstOF, map_contractive := ⋯ }
The space family selecting its covariant argument.
Equations
- Iris.termIdOF = Lean.ParserDescr.node `Iris.termIdOF 1024 (Lean.ParserDescr.symbol "IdOF")
Instances For
Equations
- One or more equations did not get rendered due to their size.
The mixed-variance family of non-expansive maps between two space functors.
Equations
- Iris.HomOF F1 F2 A B = (F1 B A -n> F2 A B)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Iris.instOFunctorContractiveHomOF = { toOFunctor := Iris.instOFunctorHomOF, map_contractive := ⋯ }
A predicate closed under completion of Cauchy approximation chains.
- compl (c : Chain α) : (∀ (n : Nat), P (c.chain n)) → P (IsCOFE.compl c)
Instances For
The Cauchy chain obtained by iterating a contractive endomorphism.
Equations
- Iris.Fixpoint.chain f = { chain := fun (n : Nat) => Nat.repeat f (n + 1) default, cauchy := ⋯ }
Instances For
The chain construction of the Banach fixpoint. fixpointP packages it, together with
its unfolding equation, in an irreducible definition.
Equations
Instances For
The Banach fixed point together with its unfolding equation. Irreducibility keeps elaboration from unfolding the approximation chain implicitly.
Equations
- Iris.fixpointP f = ⟨Iris.fixpointAux f, ⋯⟩
Instances For
The fixed point of a bundled contractive endomorphism.
Equations
- f.fixpoint = Iris.fixpoint f.f
Instances For
The fixed point obtained when a specified iterate is contractive.
Equations
- Iris.fixpointK k f = Iris.fixpoint (Nat.repeat f k)
Instances For
Substitute the second-variable fixed point into the first component.
Equations
- Iris.fixpointAA fA fB x = (fun (x : α) => (fA.f x).f) x (Iris.fixpointAB fB x)
Instances For
The first component of a simultaneous guarded fixed point.
Equations
- Iris.fixpointA fA fB = { f := Iris.fixpointAA fA fB, ne := ⋯, contractive := ⋯ }.fixpoint
Instances For
The second component of a simultaneous guarded fixed point.
Equations
- Iris.fixpointB fA fB = Iris.fixpointAB fB (Iris.fixpointA fA fB)
Instances For
Delay equivalence by one step index.
- next :: (
- car : A
The underlying value of a delayed equivalence space.
- )
Instances For
Equations
- Iris.isOFELater = { Dist := fun (n : Nat) (x y : Iris.Later A) => Iris.OFE.DistLater n x.car y.car, dist_eqv := ⋯, eq_dist' := ⋯, dist_lt := ⋯ }
Equations
- Iris.isCOFELater = { compl := fun (c : Iris.Chain (Iris.Later A)) => { car := Iris.IsCOFE.compl (Iris.laterChain c) }, conv_compl := ⋯ }
Apply one-step delay to a mixed-variance space functor.
Equations
- Iris.LaterOF F A B = Iris.Later (F A B)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Iris.instOFunctorContractiveLater F = { toOFunctor := Iris.instOFunctorLater F, map_contractive := ⋯ }
Transport completeness through a map onto a completion-closed subtype.
Equations
- Iris.isoCofeSubtype P f g g_dist gf Hlimit = { compl := fun (c : Iris.Chain β) => f (Iris.IsCOFE.compl (Iris.Chain.map g c)) ⋯, conv_compl := ⋯ }
Instances For
Transport completeness using a limit-preserving predicate on the source.
Equations
- Iris.isoCofeSubtype' P f g Pg g_dist gf Hlimit = Iris.isoCofeSubtype P f g g_dist gf ⋯
Instances For
Transport completeness along an isomorphism of ordered equivalence spaces.
Equations
- Iris.isoCofe f g g_dist gf = Iris.isoCofeSubtype (fun (x : α) => True) (fun (x : α) (x_1 : True) => f x) g g_dist ⋯ ⋯
Instances For
Completeness of a subtype defined by a limit-preserving predicate.
Equations
- Iris.sigCofe H = Iris.isoCofeSubtype' P (fun (x : α) (h : P x) => ⟨x, h⟩) { f := Subtype.val, ne := ⋯ } ⋯ ⋯ ⋯ H
Instances For
Equations
- Iris.instOFEIso = { Dist := fun (n : Nat) (I1 I2 : Iris.OFE.Iso α β) => Iris.OFE.Dist n I1.hom I2.hom ∧ Iris.OFE.Dist n I1.inv I2.inv, dist_eqv := ⋯, eq_dist' := ⋯, dist_lt := ⋯ }
Lift an isomorphism through both arguments of a mixed-variance space functor.
Equations
- Iris.isoOfeCong F I = { hom := Iris.COFE.OFunctor.map I.inv I.hom, inv := Iris.COFE.OFunctor.map I.hom I.inv, hom_inv := ⋯, inv_hom := ⋯ }