Na figura 1.1 temos um exemplo de um programa para calcular o mínimo múltiplo comum de dois números a e b. Este programa é puramente sequencial. Outro programa sequencial, que serve para calcular o factorial de um número x, é apresentado na figura 1.2.
in a, b : int where (a > 0 /\ b > 0) local y1, y2: int where y1 = a, y2 = b out g : int l0: [ l1: while (y1 != y2) do l2: [ l3: when (y1 > y2) do l4: y1 := y1 - y2 or l5: when (y2 > y1) do l6: y2 := y2 - y1 ]; l7: g := y1 ]; l8: |
in x: int where x >= 0 local y: int where y=0 out z: int where z=1 l0: while (~(x=y)) do l1: (y,z) := (y+1, (y+1)*z ); l2: |
Um exemplo muito simples de um programa concorrente é apresentado na
figura 1.3. Este programa incrementa o valor de x em
duas unidades.
local x : int where x=0 P1 :: [l0: x := x+1; l1: ] || P2 :: [m0: x := x+1; m1: ] |