All projects

Standalone Lean project

Iris-Lean

A Lean port of the Iris higher-order concurrent separation-logic framework.

19indexed declarationsLean 4.32.1nullcommit 37f53e0ac065Apache-2.0Repository Versions and build evidence

Flagship declarations

Start with the mathematical results

Pinned project revision
Project-declaredLean 4.32.1

Co Pset Raw eq

CoPset.coPsetRaw_eq

Plain-language statement

Two CoPsetRaw trees are equal if they have the same membership function and both are well-formed.

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.1

Inj on of nodup map

FromMathlib.inj_on_of_nodup_map

Plain-language statement

NB. Copied from Mathlib

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.1

Big Op L hom weak

Iris.Algebra.BigOpL.bigOpL_hom_weak

Plain-language statement

Weak monoid homomorphisms distribute over non-empty big ops.

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.1

Embed internal inj

Iris.BI.embed_internal_inj

Plain-language statement

⎡·⎤ reflects internal equality.

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.1

Mon Pred sbi emp valid exist

Iris.BI.MonPred.monPred_sbi_emp_valid_exist

Plain-language statement

A monotone predicate P is objective if its value does not depend on the index: P i ⊢ P j for all i j. Equivalently P ⊣⊢ <obj> P. -/ @[rocq_alias Objective] class Objective {I : BiIndex} {PROP : Type _} [BI PROP] (P : MonPred I PROP) : Prop where objective_at : ∀ i j : I.car, P.monPred_at i ⊢ P.monPred_at j namespace MonPred variable {I : BiIndex...

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.1

Chain option some

Iris.chain_option_some

Plain-language statement

If a chain of Option is ever some, it is the lift a chain by some.

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record

Project index

More declarations

Search within this project

Showing 8 of 13 additional declarations. Use project search for the complete index.

Project-declaredLean 4.32.1

Fupd mask frame acc

Iris.fupd_mask_frame_acc

Plain-language statement

A variant of [fupd_mask_frame] that works well for accessors: Tailored to eliminate updates of the form [|={E1,E1∖E2}=> Q] and provides a way to transform the closing view shift instead of letting you prove the same side-conditions twice.

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.1

Gen Heap init names

Iris.genHeap_init_names

Plain-language statement

Initialize genHeapGS with explicit ghost names. The names of the heap and the meta-data tables are exposed in the conclusion.

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.1

Ghost map alloc strong

Iris.ghost_map_alloc_strong

Project documentation

Recover fractional ownership for a read-only element. -/ @[rocq_alias ghost_map_elem_unpersist] theorem ghost_map_elem_unpersist (γ : GName) (k : K) (v : V) : ⊢@{IProp GF} (γ ↪◯MAP[k]{.discard} v) ==∗ ∃ q, (γ ↪◯MAP[k]{.own q} v) := by unfold ghost_map_elem iintro H imod iOwn_updateP update_frag_acquire $$ H with ⟨%a, %Heq, G⟩ obtain ⟨q, Heq⟩ := Heq iexist...

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.1

Wp check Sorted

Iris.HeapLang.Quicksort.wp_checkSorted

Project documentation

Returns a boolean witnessing the sortedness of a HeapLang list. acc is an option of the last value in the list. -/ def checkSorted : Val := hl_val% rec check acc l := match l with | none() => #true | some(x) => let p := !x; let head := fst(p); let tail := snd(p); let ok := (match acc with | none() => #true | some(v) => v ≤ head); ok && check (some(head)...

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.1

State init Heap self

Iris.HeapLang.State.initHeap_self

Plain-language statement

Writing back a cell's current contents leaves the state unchanged.

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.1

I Own alloc strong dep

Iris.iOwn_alloc_strong_dep

Plain-language statement

Allocation with a dependent function and a predicate on the ghost name. The predicate P must be satisfied by arbitrarily large naturals.

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.1

IProp unfoldi unit

Iris.IProp.unfoldi_unit

Plain-language statement

unfoldi preserves unit structure

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.1

Erased Step pure Steps

Iris.ProgramLogic.Language.erasedStep_pureSteps

Plain-language statement

Let t₂ be a thread pool such that t₁ under state σ₁ makes a (single) step to threadpool t₂ and state σ₂. Let thread pools t₁ and t₃ be such that each thread in t₁ makes (zero or more) pure steps to the corresponding thread in t₃. In this situation, either the step from t₁ to t₂ corresponds to one of the pure steps between t₁ and `t...

separation logicprogram logicsemantics

Source project: Iris-Lean

Person-level attribution pending.

View proof record