# 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$

$γ, γ’$: 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

Tags:

Updated: