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