Pospaces, Local pospaces
Recap: every program in our setting is comprised of sequential processes $(P_1, …, P_n)$ that are turned into a control flow graph $(G_1, …, G_n)$
$μ$: multi-instruction, admissibility depends on the state of the abstract machine
A point is a tuple of arrows and vertices (e.g. $(\cdot, ↑, \cdot, …, ↑)$)
From $(\cdot, ↑, \cdot)$:
-
you can either go to the end of some arrows: e.g. $(\cdot, \cdot, \cdot)$
-
or go to an outgoing of some of the points: e.g. $(↑, ↑, \cdot)$
A directed path $γ$ is turned into a sequence of instructions
\[⟦γ⟧ = μ_0 ⋯ μ_q\]- $μ_0$ is admissible in the state $σ$
- $μ_1$ is admissible in the state $σ μ_0$
- and so on…
Admissibility tell nothing as to whether you respect the branching conditions. E.g. in the state $σ: x=3$, you may follow the (conditional) arrow $x=0$ instead of the the $x ≠ 0$ one. It is admissible, but it doesn’t correspond to a trace.
Problem:
admissibility depends on the state of the abstract machine
so what we would like to do: to remove some points in the model, so that every path is admissible (we could get rid of that state dependency) ⟹ add new constraints
Goal: knowing how many resources are held by the program just by looking at the position of the process pointer
Ex where it’s impossible to decide that:
digraph {
rankdir=LR;
"" -> "⋅" -> "P(a)" -> "⋅";
}
Potential function the amount of resources held by
digraph {
rankdir=LR;
"| 0" -> "⋅ |0"[label="0"];
"⋅ |0" -> "P(a) | 1"[label="0"];
"P(a) | 1" -> "V(a) | 0"[label="1"];
"V(a) | 0" -> "⋅ |0"[label="0"];
}
(we jot it down on the arrows too)
Directed paths
\[⟦π⟧ = \lbrace \text{ points }\rbrace \backslash \lbrace \text{forbidden}\rbrace\]Sequence of multi-instructions admissible
$γ, γ’$: directed paths on $⟦π⟧$
$⟦γ⟧, ⟦γ’⟧$ induce the same action on any initial state of the abstract machine
We would like to say that
\[γ \sim γ'\]Impossible to decide at compile time.
So we want to find another relation $\sim_h$ that is decidable at compile time such that:
\[\sim_h \; ⊆ \; \sim\]Warning: in $Set$, an iso is a mono and epi, but the converse is false (at least in $Posets$: consider the poset categories $(\lbrace a, b\rbrace, =)$) and $(\lbrace 0, 1\rbrace, ≤)$:
\[f: \begin{cases} \lbrace a, b\rbrace &⟶ \lbrace 0, 1\rbrace \\ a &⟼ 0\\ b &⟼ 1\\ \end{cases}\]$f$ is injective and surjective, but not an iso, since $0 ≤ 1$, but we don’t have $a ≤ b$.
Homology: hard to define, easy to compute (at least for simplicial sets) Homotopy: easy/intuitive to define, hard to compute
Leave a comment