Alphabet

+:[proc × proc] ⟶ proc
*:[proc × proc] ⟶ proc
delta:proc
sigma:[data → proc] ⟶ proc

Variables

X:proc
Y:proc
Z:proc
D:data
P:data → proc
Q:data → proc

Rules

+(X, X)⇒X
*(+(X, Y), Z)⇒+(*(X, Z), *(Y, Z))
*(*(X, Y), Z)⇒*(X, *(Y, Z))
+(X, delta)⇒X
*(delta, X)⇒delta
sigma(λd:data.X)⇒X
+(sigma(λd:data.P · d), P · D)⇒sigma(λd:data.P · d)
sigma(λd:data.+(P · d, Q · d))⇒+(sigma(λd:data.P · d), sigma(λd:data.Q · d))
*(sigma(λd:data.P · d), X)⇒sigma(λd:data.*(P · d, X))