Concurrent language Sample Clauses
Concurrent language. For any language Λ, we define the corresponding thread-pool semantics. T ∈ ThreadPool , Exprn T ; σ → T '; σ' e1, σ1 → e2, σ2, ef ef =/ ⊥ T ++ [e1] ++ T '; σ1 → T ++ [e2] ++ T ' ++ [ef]; σ2 e1, σ1 → e2, σ2 T ++ [e1] ++ T '; σ1 → T ++ [e2] ++ T '; σ2 5 Logic To instantiate Iris, you need to define the following parameters: • A language Λ, and • COF𝖲 → CMRA a locally contractive bifunctor Σ : defining the ghost state, such that for all COFEs A, the CMRA Σ(A) has a unit. (By Lemma 1, this means that the core of Σ(A) is a total function.) As usual for higher-order logics, you can furthermore pick a signature S = (𝓨 , F, A) to add more types, symbols and axioms to the language. You have to make sure that 𝓨 includes the base types: 𝓨 ⊇ {Val, Expr, State, M, InvName, InvMask, Prop} Elements of 𝓨 are ranged over by T . Each function symbol in F has an associated arity comprising a natural number n and an ordered list of n + 1 types τ (the grammar of τ is defined below, and depends only on 𝓨 ). We write F : τ1, . . . , τn → τn+1 ∈ F to express that F is a function symbol with the indicated arity. 𝓨 F A A A Furthermore, is a set of axioms, that is, terms t of type Prop. Again, the grammar of terms and their typing rules are defined below, and depends only on and , not on . Elements of are ranged over by A.
5.1 Grammar S Syntax. Iris syntax is built up from a signature and a countably infinite set Var of variables (ranged over by metavariables x, y, z): τ ::= T | 1 | τ × τ | τ → τ t, P, ϕ ::= x | F (t1, . . . , tn) | () | (t, t) | πi t | λx : τ. t | t(t) | ε | |t| | t · t | False | True | t =τ t | P ⇒ P | P ∧ P | P ∨ P | P ∗ P | P —∗ P | µx : τ. t | ∃x : τ. P | ∀x : τ. P | | | V(t) | Phy(t) | P | .P | t|$t P | wp t {x. t} Recursive predicates must be guarded: in µx. t, the variable x can only appear under the later . modality. | $P . Note that and . bind more tightly than ∗, —∗ , ∧, ∨, and ⇒. We will write |$ P for t|$t P . If we omit the mask, then it is 𝖳 for weakest precondition wp e {x. P } and ∅ for primitive view shifts Some propositions are timeless, which intuitively means that step-indexing does not affect them. This is a meta-level assertion about propositions, defined as follows: Γ ▶ timeless(P ) , Γ | .P ▶ P ∨ .False metavariable type metavariable type 𝖲 InvMask ϕ, ψ, ζ τ → Prop (when τ is clear from context)
5.2 Types ▶ Iris terms are simply-typed. The judgment Γ t : τ expresses that, in variable context Γ, the term t has type τ . A variable context,...
