Small step operational semantics for pGCL
#
Main definitions #
pGCL.SmallStep
: The inductive definition of the probabilistic small step semantics ofpGCL
.
Probabilistic small step operational semantics for pGCL
- bot {ϖ : Type u_1} [DecidableEq ϖ] : none ⤳[Act.N,1] none
- skip {ϖ : Type u_1} [DecidableEq ϖ] {σ : States ϖ} : ·⟨pGCL.skip,σ⟩ ⤳[Act.N,1] some (none, σ)
- sink {ϖ : Type u_1} [DecidableEq ϖ] {σ : States ϖ} : some (none, σ) ⤳[Act.N,1] none
- assign {ϖ : Type u_1} [DecidableEq ϖ] {x : ϖ} {e : Exp ϖ} {σ : States ϖ} : ·⟨x ::= e,σ⟩ ⤳[Act.N,1] ·⟨pGCL.skip,σ[x ↦ e σ]⟩
- prob {ϖ : Type u_1} [DecidableEq ϖ] {C : pGCL ϖ} {p : ProbExp ϖ} {σ : States ϖ} : ·⟨C ·[p] C,σ⟩ ⤳[Act.N,1] ·⟨C,σ⟩
- prob_L {ϖ : Type u_1} [DecidableEq ϖ] {C₁ C₂ : pGCL ϖ} {p : ProbExp ϖ} {σ : States ϖ} (h : ¬C₁ = C₂) (h' : 0 < ↑p σ) : ·⟨C₁ ·[p] C₂,σ⟩ ⤳[Act.N,↑p σ] ·⟨C₁,σ⟩
- prob_R {ϖ : Type u_1} [DecidableEq ϖ] {C₁ C₂ : pGCL ϖ} {p : ProbExp ϖ} {σ : States ϖ} (h : ¬C₁ = C₂) (h' : ↑p σ < 1) : ·⟨C₁ ·[p] C₂,σ⟩ ⤳[Act.N,1 - ↑p σ] ·⟨C₂,σ⟩
- nonDet_L {ϖ : Type u_1} [DecidableEq ϖ] {C₁ C₂ : pGCL ϖ} {σ : States ϖ} : ·⟨C₁ ·[] C₂,σ⟩ ⤳[Act.L,1] ·⟨C₁,σ⟩
- nonDet_R {ϖ : Type u_1} [DecidableEq ϖ] {C₁ C₂ : pGCL ϖ} {σ : States ϖ} : ·⟨C₁ ·[] C₂,σ⟩ ⤳[Act.R,1] ·⟨C₂,σ⟩
- tick {ϖ : Type u_1} [DecidableEq ϖ] {r : Exp ϖ} {σ : States ϖ} : ·⟨pGCL.tick r,σ⟩ ⤳[Act.N,1] ·⟨pGCL.skip,σ⟩
- seq_L {ϖ : Type u_1} [DecidableEq ϖ] {C₂ : pGCL ϖ} {σ : States ϖ} : ·⟨pGCL.skip ;; C₂,σ⟩ ⤳[Act.N,1] ·⟨C₂,σ⟩
- seq_R {ϖ : Type u_1} [DecidableEq ϖ] {C₁ : pGCL ϖ} {σ : States ϖ} {α : Act} {p : ENNReal} {C₁' : pGCL ϖ} {τ : States ϖ} {C₂ : pGCL ϖ} : (·⟨C₁,σ⟩ ⤳[α,p] ·⟨C₁',τ⟩) → ·⟨C₁ ;; C₂,σ⟩ ⤳[α,p] ·⟨C₁' ;; C₂,τ⟩
- loop {ϖ : Type u_1} [DecidableEq ϖ] {b : BExpr ϖ} {C : pGCL ϖ} {σ : States ϖ} : ¬b σ = true → ·⟨pGCL.loop b C,σ⟩ ⤳[Act.N,1] ·⟨pGCL.skip,σ⟩
- loop' {ϖ : Type u_1} [DecidableEq ϖ] {b : BExpr ϖ} {C : pGCL ϖ} {σ : States ϖ} : b σ = true → ·⟨pGCL.loop b C,σ⟩ ⤳[Act.N,1] ·⟨C ;; pGCL.loop b C,σ⟩
Instances For
Probabilistic small step operational semantics for pGCL
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
pGCL.SmallStep.prob_iff
{ϖ : Type u_1}
[DecidableEq ϖ]
{σ : States ϖ}
{C₁ : pGCL ϖ}
{p : ProbExp ϖ}
{C₂ : pGCL ϖ}
{α : Act}
{p' : ENNReal}
{c' : Conf ϖ}
:
@[simp]
theorem
pGCL.SmallStep.seq_iff
{ϖ : Type u_1}
[DecidableEq ϖ]
{σ : States ϖ}
{C₁ C₂ : pGCL ϖ}
{α : Act}
{p : ENNReal}
{c' : Conf ϖ}
:
noncomputable instance
pGCL.SmallStep.instDecidableMemActSetAct
{ϖ : Type u_1}
[DecidableEq ϖ]
{c : Conf ϖ}
{α : Act}
:
noncomputable instance
pGCL.SmallStep.instFintypeElemActAct
{ϖ : Type u_1}
[DecidableEq ϖ]
{c : Conf ϖ}
:
@[simp]
noncomputable instance
pGCL.SmallStep.instDecidable
{ϖ : Type u_1}
[DecidableEq ϖ]
{c : Conf ϖ}
{α : Act}
{p : ENNReal}
{c' : Conf ϖ}
:
Equations
noncomputable instance
pGCL.SmallStep.instDecidableExistsActENNReal
{ϖ : Type u_1}
[DecidableEq ϖ]
{c c' : Conf ϖ}
:
Equations
- pGCL.SmallStep.instDecidableExistsActENNReal = Classical.propDecidable (∃ (α : pGCL.Act) (p : ENNReal), c ⤳[α,p] c')
@[irreducible]
Equations
- pGCL.SmallStep.succs_fin none pGCL.Act.N = {none}
- pGCL.SmallStep.succs_fin (some (none, snd)) pGCL.Act.N = {none}
- pGCL.SmallStep.succs_fin (·⟨pGCL.skip,σ⟩) pGCL.Act.N = {some (none, σ)}
- pGCL.SmallStep.succs_fin (·⟨pGCL.tick a,σ⟩) pGCL.Act.N = {·⟨pGCL.skip,σ⟩}
- pGCL.SmallStep.succs_fin (·⟨x ::= E,σ⟩) pGCL.Act.N = {·⟨pGCL.skip,σ[x ↦ E σ]⟩}
- pGCL.SmallStep.succs_fin (·⟨C₁ ·[p] C₂,σ⟩) pGCL.Act.N = if ↑p σ = 0 then {·⟨C₂,σ⟩} else if ↑p σ = 1 then {·⟨C₁,σ⟩} else {·⟨C₁,σ⟩, ·⟨C₂,σ⟩}
- pGCL.SmallStep.succs_fin (·⟨C₁ ·[] a,σ⟩) pGCL.Act.L = {·⟨C₁,σ⟩}
- pGCL.SmallStep.succs_fin (·⟨a ·[] C₂,σ⟩) pGCL.Act.R = {·⟨C₂,σ⟩}
- pGCL.SmallStep.succs_fin (·⟨pGCL.loop b C,σ⟩) pGCL.Act.N = if b σ = true then {·⟨C ;; pGCL.loop b C,σ⟩} else {·⟨pGCL.skip,σ⟩}
- pGCL.SmallStep.succs_fin (·⟨pGCL.skip ;; C₂,σ⟩) pGCL.Act.N = {·⟨C₂,σ⟩}
- pGCL.SmallStep.succs_fin (·⟨C₁ ;; C₂,σ⟩) α = Finset.map { toFun := C₂.after, inj' := ⋯ } (pGCL.SmallStep.succs_fin (·⟨C₁,σ⟩) α)
- pGCL.SmallStep.succs_fin c α = ∅