vault backup: 2025-04-14 16:15:00
This commit is contained in:
parent
98ff6f91e8
commit
013bc0d902
2 changed files with 90 additions and 3 deletions
5
.obsidian/workspace.json
vendored
5
.obsidian/workspace.json
vendored
|
@ -36,7 +36,8 @@
|
||||||
"title": "12 - CCS (che non so cosa voglia dire)"
|
"title": "12 - CCS (che non so cosa voglia dire)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"currentTab": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "dd628773839aa478",
|
"id": "dd628773839aa478",
|
||||||
|
@ -237,7 +238,7 @@
|
||||||
"companion:Toggle completion": false
|
"companion:Toggle completion": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "fbeaa35cc5a8abf1",
|
"active": "84845736e00d5c98",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
"Concurrent Systems/slides/class 12.pdf",
|
"Concurrent Systems/slides/class 12.pdf",
|
||||||
"Concurrent Systems/notes/12 - CCS (che non so cosa voglia dire).md",
|
"Concurrent Systems/notes/12 - CCS (che non so cosa voglia dire).md",
|
||||||
|
|
|
@ -30,7 +30,93 @@ Dove:
|
||||||
- **$\alpha _{i}.P_{i}$:** the process $P_{i}$ can perform the action $a$ and continue as the process $P_{i}$
|
- **$\alpha _{i}.P_{i}$:** the process $P_{i}$ can perform the action $a$ and continue as the process $P_{i}$
|
||||||
- $A(a_{1}\dots a_{n})$ parametric call to a process
|
- $A(a_{1}\dots a_{n})$ parametric call to a process
|
||||||
- $P|Q$ parallel composition: P and Q are in a concurrent execution and can communicate to each-other
|
- $P|Q$ parallel composition: P and Q are in a concurrent execution and can communicate to each-other
|
||||||
- $P\setminus a$ as described before, is the process P without $a$ (the action is hidden / )
|
- $P\setminus a$ as described before, is the process P without $a$ (the action is hidden / visible only internally by P)
|
||||||
|
|
||||||
|
**Recap:**
|
||||||
|
- `P ⟶ᵃ P'` means: _Process `P` can perform action `a` and become `P'`_
|
||||||
|
- `α` is an action: input (`a`), output (`ā`), or internal (`τ`)
|
||||||
|
- `{a₁/x₁, ..., aₙ/xₙ}` is a **substitution** (used in process definitions with parameters)
|
||||||
|
|
||||||
|
#### 📜 Inference rules
|
||||||
|
##### 1. **Choice (Summation Rule)**
|
||||||
|
|
||||||
|
**$$∑_{i ∈ I} αᵢ.Pᵢ ⟶^{αⱼ} Pⱼ\space\space\spac, for \space all \space j \in I$$
|
||||||
|
|
||||||
|
> A process that has multiple options (`α₁.P₁ + α₂.P₂ + ...`) can nondeterministically choose any one of them.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. **Process Definition (Call/Expansion)**
|
||||||
|
|
||||||
|
**`P{a₁/x₁ ... aₙ/xₙ} ⟶ᵅ P'`
|
||||||
|
`A(x₁...xₙ) ≜ P`
|
||||||
|
——————————————
|
||||||
|
`A(a₁...aₙ) ⟶ᵅ P'`**
|
||||||
|
|
||||||
|
> If a process `A(x₁...xₙ)` is defined as `P`, then invoking `A(a₁...aₙ)` behaves like `P` with the arguments substituted.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. **Restriction (Hiding)**
|
||||||
|
|
||||||
|
**`P ⟶ᵅ P'` and `α ∉ {a, ā}`
|
||||||
|
——————————————
|
||||||
|
`P \ a ⟶ᵅ P' \ a`**
|
||||||
|
|
||||||
|
> If process `P` can do action `α` and it’s **not** the hidden action (`a` or `ā`), then `P \ a` can also do it, and the resulting process remains restricted.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. **Parallel Composition – Independent Actions**
|
||||||
|
|
||||||
|
There are three rules here for different situations in `P₁ | P₂`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### a. **Left process makes a move:**
|
||||||
|
|
||||||
|
**`P₁ ⟶ᵅ P₁'`
|
||||||
|
———————————
|
||||||
|
`P₁ | P₂ ⟶ᵅ P₁' | P₂`**
|
||||||
|
|
||||||
|
> If `P₁` makes a move alone, the parallel composition can reflect it.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### b. **Right process makes a move:**
|
||||||
|
|
||||||
|
**`P₂ ⟶ᵅ P₂'`
|
||||||
|
———————————
|
||||||
|
`P₁ | P₂ ⟶ᵅ P₁ | P₂'`**
|
||||||
|
|
||||||
|
> Symmetrical to the previous: `P₂` makes the move.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### c. **Synchronization rule (communication):**
|
||||||
|
|
||||||
|
**`P₁ ⟶ᵃ P₁'` and `P₂ ⟶ā P₂'`
|
||||||
|
——————————————
|
||||||
|
`P₁ | P₂ ⟶^τ P₁' | P₂'`**
|
||||||
|
|
||||||
|
> If one process can **send** (`a`) and the other can **receive** (`ā`), they **synchronize**, and the result is an **internal (τ)** action. This models communication.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧠 Summary Table:
|
||||||
|
|
||||||
|
|Rule Type|Description|
|
||||||
|
|---|---|
|
||||||
|
|Choice|Select one summand to act|
|
||||||
|
|Process Call|Expand definition by substituting parameters|
|
||||||
|
|Restriction|Only allows transitions not involving the restricted action|
|
||||||
|
|Parallel (independent)|A single component acts, the other stays the same|
|
||||||
|
|Parallel (sync)|Two components synchronize to produce τ|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Let me know if you want to **trace an example** using these rules step-by-step — like watching how a CCS process evolves over time. It's super helpful to solidify the concepts!
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue