Home Linear Logic Proof Explorer
Theorem List (p. 3 of 4)
< Previous  Next >

Mirrors  >  Metamath Home Page  >  LLPE Home Page  >  Theorem List Contents       This page: Page List

Theorem List for Linear Logic Proof Explorer - 201-300   *Has distinct variable group(s)
TypeLabelDescription
Statement
 
Theoremlbtrimd 201 Linear biconditional is transitive. Intuitionistic deduction for lbtr 128.
(𝜑 → (𝜓𝜒))    &    (𝜑 → (𝜒𝜃))        (𝜑 → (𝜓𝜃))
 
Theoremlbsymimd 202 Linear biconditional is transitive. Intuitionistic deduction for lbsym 127.
(𝜑 → (𝜓𝜒))        (𝜑 → (𝜒𝜓))
 
1.3  Message passing

So, y'know, I was thinking to myself one day. I was thinking, hey, linear logic is pretty cool. You know what else is cool? Pi calculus. So I thought, hey, they seem pretty simiar, and maybe two great flavors go great together. So I figured I would add message passing to linear logic, since a stateful process is a great example of a resource. So let's see what happens. In pi calculus, every object is a channel. Channels are given meaning by processes, which read from and write to them. Since processes are stateful, we can consider them to be the resources manipulated by linear logic. We will say that a process is valid, i.e. can appear in front of , if it always halts. Pi calculus introduces three new operators, which operate on channel variables. They are:

Name Ref Description
Input wse 204: [XY] 𝜑 Writes to a channel and blocks
Output wre 205: [Xy] 𝜑 Reads from a channel and blocks (binding a new name in the process)
Creation wnu 206: νx𝜑 Creates a new channel

The remaining operators of pi calculus are directly implemented by the connectives of linear logic:

Name Ref Description
Concurrency wmc 105: (𝜑𝜓) Run 𝜑 and 𝜓 in parallel, allowing communication over channels
Choice wac 30: (𝜑 & 𝜓) Nondeterministically run either 𝜑 or 𝜓
Replication wpe 148: ! 𝜑 Run infinite copies of 𝜑 in parallel
Termination wone 103: 1 Halt the current process

Note that some of the channel variables are pink and capital like X, while others are red and lowercase like y. The only difference is that the red ones must be a literal channel name (similar to setvar variables in set.mm), while the pink ones can also be compound expressions. These compound expressions are known as nilads, because they act like functions that are evaluated as soon as they are encountered.

I'm almost certain that some of the axioms are redundant (or at least can be weakened), and it's very likely that this system is inconsistent, but hopefully it'll all work out.

 
1.3.1  Axioms for message passing
 
Syntaxnvar 203 A variable can be used as a nilad.
nilad x
 
Syntaxwse 204 Sending operator. Writes Y to the channel X.
wff [XY] 𝜑
 
Syntaxwre 205 Recieving operator. Reads from X and scopes the result to y.
wff [Xy] 𝜑
 
Syntaxwnu 206 Creation operator. Creates and scopes a new channel x. It also has a dual ~ νx~ 𝜑, which has a meaning I don't quite understand.
wff νx𝜑
 
Syntaxwsub 207 Proper substitution of x with Y. Although used as a primitive token in the axioms, it can actually be treated as a defined symbol; see dfsub 233. See nsub 277 for proper substitution in nilads.
wff [xY] 𝜑
 
1.3.1.1  Creation operator

These axioms characterize the channel creation operator, ν. Its behavior resembles that of the quantifier in predicate logic, but its actual semantics are quite different. ν essentially isolates variable scopes, forbidding communication along a specific variable. On its own, though, it pretty much acts like any run-of-the-mill quantifier.

 
Axiomax-int 208 Generalization. An "anti variable abstraction" can be removed from a "top-level" wff. What does that even mean?
𝜑        ~ νx~ 𝜑
 
Axiomax-nue 209* A variable abstraction can be eliminated if the expression is free in that variable.
x𝜑𝜑)
 
Axiomax-nuf 210 x is free in νx.
xνx𝜑 ⊸ νx𝜑)
 
Axiomax-ref 211 x is free in [ax].
x[ax] 𝜑 ⊸ [ax] 𝜑)
 
Axiomax-nnuf 212 x is free in ~ νx𝜑. There's that weird "anti variable abstraction" again...
x~ νx𝜑 ⊸ ~ νx𝜑)
 
Axiomax-nui 213 A wff can be surrounded by a variable abstraction
(𝜑 ⊸ νx𝜑)
 
Axiomax-nur 214 Variables can be renamed without changing the meaning of an expression.
x[ux] 𝜑 ⊸ νy[uy] 𝜑)
 
Axiomax-nuse 215 Commutation of ν with .
x[uv] 𝜑 ⧟ [uv] νx𝜑)
 
Axiomax-nure 216 Commutation of ν with .
x[uv] 𝜑 ⧟ [uv] νx𝜑)
 
Axiomax-nuad 217 Distribution of ν over .
x(𝜑𝜓) ⧟ (νx𝜑 ⊕ νx𝜓))
 
Axiomax-numc 218 Commutation of ν into . Note that x can only be bound in one factor.
x(𝜑 ⊗ νx𝜓) ⧟ (νx𝜑 ⊗ νx𝜓))
 
Axiomax-nunu 219 Commutation of ν with ν. There is no need for a distinct variable condition on x and y, since xνx𝜑 ⧟ νxνx𝜑) is a valid theorem.
xνy𝜑 ⧟ νyνx𝜑)
 
1.3.1.2  Communication
 
Axiomax-subse1 220

([xy] [xa] 𝜑 ⧟ [xy] [ya] 𝜑)
 
Axiomax-subse2 221

([xy] [ax] 𝜑 ⧟ [xy] [ay] 𝜑)
 
Axiomax-subse3 222*

([xy] [uv] 𝜑 ⧟ [uv] [xy] 𝜑)
 
Axiomax-subre1 223

([xy] [xa] 𝜑 ⧟ [xy] [ya] 𝜑)
 
Axiomax-subre2 224*

([xy] [uv] 𝜑 ⧟ [uv] [xy] 𝜑)
 
Axiomax-subnu1 225

([xy] νx𝜑 ⧟ νx𝜑)
 
Axiomax-subnu2 226*

([xy] νu𝜑 ⧟ νu[xy] 𝜑)
 
Axiomax-subid 227

([xx] 𝜑𝜑)
 
Axiomax-send 228 Message passing.
(([zy] 𝜑 ⊗ [zx] 𝜓) ⊸ (𝜑 ⊗ [xy] 𝜓))
 
Axiomax-lock1 229 Reading from a channel with nothing writing to it causes a deadlock.
x? [xa] 1 ⊸ 0)
 
Axiomax-lock2 230 Writing to a channel with nothing reading from it causes a deadlock.
x? [xa] 1 ⊸ 0)
 
1.3.2  Message passing theorems
 
Theoremsead 231 Distribution of sending over .
(([xy] 1 ⊗ (𝜑𝜓)) ⧟ (([xy] 1 ⊗ 𝜑) ⊕ ([xy] 1 ⊗ 𝜓)))
 
Theoremrech 232 Writing to a channel being read in multiple places causes a nondeterministic choice.
(([xx] 𝜑 ⊗ ([xx] 𝜓 ⊗ [xx] 𝜒)) ⧟ (𝜑 ⊗ (𝜓𝜒)))
 
Theoremdfsub 233* "Definition" of proper substitution. Or at least it would be, if I implemented proper substitution as a defined operator...

This simply sends the desired value Y along a temporary channel a, and then reads it to the desired name x.

([xY] 𝜑 ⧟ νz([zY] 1 ⊗ [zx] 𝜑))
 
Theoremabse1 234* Proper substitution into the left side of .
([xy] νa𝜑 ⧟ [ax] [ay] νa𝜑)
 
Theoremabse2 235* Proper substitution into the right side of .
([xy] νa𝜑 ⧟ [ay] [xa] νa𝜑)
 
Theoremabre1 236* Proper substitution into the left side of .
([xy] νa𝜑 ⧟ [ax] [ay] νa𝜑)
 
Theoremabf 237* Proper substitution into an expression free of that variable.
xνa𝜑 ⧟ [ax] νxνa𝜑)
 
Theoremabre2 238* Proper substitution into the right side of (which is free of that variable).
([xy] νa𝜑 ⧟ [ay] [xy] νa𝜑)
 
Theoremabid 239 Proper substitution of a variable for itself.
(𝜑 ⧟ [xx] 𝜑)
 
1.3.3  Message passing dual operators

One interesting consequence of adding pi calculus operators to linear logic is that the dualism of linear logic now applies to these operators. What even??? Wow this is crazy.

 
Syntaxwnse 240 Dual write operator.
wff [XY] 𝜑
 
Syntaxwnre 241 Dual read operator.
wff [Xy] 𝜑
 
Syntaxwnnu 242 Dual creation operator.
wffx𝜑
 
Definitiondf-nse 243 Definition of the dual write operator.
([XY] 𝜑 ⧟ ~ [XY] ~ 𝜑)
 
Definitiondf-nre 244 Definition of the dual read operator.
([Xy] 𝜑 ⧟ ~ [Xy] ~ 𝜑)
 
Definitiondf-nnu 245 Definition of the dual creation operator.
(∇x𝜑 ⧟ ~ νx~ 𝜑)
 
Syntaxweq 246 Nilad equality.
wff X = Y
 
Definitiondf-eq 247 Definition of channel equality. Two nilads are equivalent if, when written to an arbitrary channel, that channel behaves the same way. We measure this by seeing if we can successfully read from it.
(X = Y ⧟ ∇a([aX] [ab] 1 ⧟ [aY] [ab] 1))
 
Theoremeqpe 248 Equality can be !-ified.
(X = Y ⊸ ! X = Y)
 
Theoremeqeu 249 Equality is Euclidean.
((X = YY = Z) ⊸ X = Z)
 
Theoremeqtr 250 Equality is transitive.
((X = YY = Z) ⊸ X = Z)
 
Theoremeqsym 251 Equality is symmetric.
(X = YY = X)
 
Theoremeqeui 252 Equality is Euclidean. Inference for eqtr 250.
X = Y    &    X = Z        Y = Z
 
Theoremeqtri 253 Equality is transitive. Inference for eqtr 250.
X = Y    &    Y = Z        X = Z
 
Theoremeqsymi 254 Equality is symmetric. Inference for eqsym 251.
X = Y        Y = X
 
Theoremeqeud 255 Equality is Euclidean. Deduction for eqeu 249.
(𝜑X = Y)    &    (𝜑X = Z)        (𝜑Y = Z)
 
Theoremeqtrd 256 Equality is transitive. Deduction for eqtr 250.
(𝜑X = Y)    &    (𝜑Y = Z)        (𝜑X = Z)
 
Theoremeqsymd 257 Equality is symmetric. Deduction for eqsym 251.
(𝜑X = Y)        (𝜑Y = X)
 
Theoremeqeuimd 258 Equality is Euclidean. Intuitionistic deduction for eqeu 249.
(𝜑X = Y)    &    (𝜑X = Z)        (𝜑Y = Z)
 
Theoremeqtrimd 259 Equality is transitive. Intuitionistic deduction for eqtr 250.
(𝜑X = Y)    &    (𝜑Y = Z)        (𝜑X = Z)
 
Theoremeqsymimd 260 Equality is symmetric. Intuitionistic deduction for eqsym 251.
(𝜑X = Y)        (𝜑Y = X)
 
Theoremeqse1 261 Sending is closed under equality (left side).
(X = Y ⊸ ([Xa] 𝜑 ⧟ [Ya] 𝜑))
 
Theoremeqse2 262 Sending is closed under equality (right side).
(X = Y ⊸ ([aX] 𝜑 ⧟ [aY] 𝜑))
 
Theoremeqre 263 Recieving is closed under equality.
(X = Y ⊸ ([Xa] 𝜑 ⧟ [Ya] 𝜑))
 
Theoremdfsub1 264 Restatement of dfsub 233 with nilad equality.
([xY] 𝜑 ⧟ ∇x(x = Y𝜑))
 
Theoremtest 265

b[ab] 1 ⊗ ([ac] 1 ⊗ [ca] 1))
 
1.3.4  Nilad abstractions
 
Syntaxnnab 266 A nilad abstraction. When used where a variable would normally belong, the variable used is instead the first one written by 𝜑 to x. (Any other operations on x will block indefinitely, as they would on a fresh channel.) This is a very useful concept, since this allows us to reason about expressions which carry values.

Keep in mind that these must be treated linearly like everything else, so using nilad variables multiple times may carry unintended consequences. Use as necessary to avoid this.

The nilad abstraction is characterized by df-nab 267.

nilad {x | 𝜑}
 
Definitiondf-nab 267* Using a nilad abstraction is the same as running the associated process 𝜑 and using its "return value" instead. Since the input to all other operators can be modeled using , this is enough to fully describe nilad abstractions.

Unlike most defined operators, the nilad abstraction cannot directly be expanded to primitive symbols. Despite this, it is always possible to mechanically eliminate nilads from any expression that contains them by simply moving the process 𝜑 to before the variable y is used.

([x ≪ {y | 𝜑}] 𝜓 ⧟ (𝜑 ⊗ [ya] [xa] 𝜓))
 
Theoremdfnab1 268* df-nab 267 also works on nilads.
([X ≪ {y | 𝜑}] 𝜓 ⧟ (𝜑 ⊗ [ya] [Xa] 𝜓))
 
Theoremdfnab2 269* Read from a nilad.
([{x | 𝜑} ≫ y] 𝜓 ⧟ (𝜑 ⊗ [xa] [ay] 𝜓))
 
Theoremdfnab3 270* Write to a nilad.
([{x | 𝜑} ≪ Y] 𝜓 ⧟ (𝜑 ⊗ [xa] [aY] 𝜓))
 
Syntaxnvnab 271 A simple nilad abstraction. Ordinary nilad abstractions use the bound channel as a sort of return channel, while this version immediately returns a fresh channel.
niladx | 𝜑}
 
Definitiondf-vnab 272 Definition of simple nilads.
x | 𝜑} = {r | νx[rx] 𝜑}
 
Theoremvnab1 273 Write a simple nilad abstraction along a channel.
([X ≪ {νy | 𝜑}] 𝜓 ⧟ νy(𝜑 ⊗ [Xy] 𝜓))
 
Theoremvnab2 274 Read from a simple nilad abstraction.
([{νx | 𝜑} ≫ y] 𝜓 ⧟ νx(𝜑 ⊗ [xy] 𝜓))
 
Theoremvnab3 275 Write to a simple nilad abstraction.
([{νx | 𝜑} ≪ Y] 𝜓 ⧟ νx(𝜑 ⊗ [xY] 𝜓))
 
Theoremnvarjust 276* A variable is equivalent to a nilad which always returns that variable.
x = {r | [rx] 1}
 
Syntaxnsub 277 Proper substitution of x with Y in the nilad A. See also wsub 207.
nilad [xY] A
 
Definitiondf-nsub 278* The proper substitution of x with Y in F.
[xY] F = {r | νa[xy] [Ff] [rf] 1}
 
1.4  Lambda calculus
 
Syntaxnla 279 Lambda abstraction.
nilad λxY
 
Definitiondf-la 280* Definition of lambda abstraction. The lambda exposes a "handle" f which reads a temporary communication channel a. The resulting function's input x and output Y are passed along a. The ! exponential creates infinite instances of this function "provider", which can all run in parallel. Compare with df-fv 282 to see how this function is called.
λxY = {νf | ! [fa] [ax] [aY] 1}
 
Syntaxnfv 281 Function application.
nilad (F' X)
 
Definitiondf-fv 282* Definition of function application. This sends a temporary communication channel a to F, and communicates the input X and output y. Compare with df-la 280 to see how functions are defined.
(F' X) = {r | νa[Fa] [aX] [ay] [ry] 1}
 
Theoremlav 283 Lambda evaluation theorem.
xF' Y) = [xY] F
 
Syntaxnov 284 Operator application.
nilad (AFB)
 
Definitiondf-ov 285 Definition of operator application. It's simply two curried function applications.
(AFB) = ((F' A)' B)
 
Syntaxnss 286 S combinator, the input distributor.
nilad S
 
Syntaxnkk 287 K combinator, the constant generator.
nilad K
 
Syntaxnii 288 I combinator, the identity function.
nilad I
 
Syntaxniota 289 Iota combinator, from which the S, K, and I combinators can be derived.
nilad ι
 
Definitiondf-ss 290* Definition of the S combinator.
S = λaλbλc((b' a)' (c' a))
 
Definitiondf-kk 291* Definition of the K combinator.
K = λaλba
 
Definitiondf-ii 292 Definition of the I combinator.
I = λaa
 
Definitiondf-iota 293 Definition of the iota combinator in terms of S and K.
ι = λf((f' S)' K)
 
Theoremiiiota 294 Construction of I from ι.
I = (ι' ι)
 
Theoremkkiota 295 Construction of K from ι.
K = (ι' (ι' (ι' ι)))
 
Theoremssiota 296 Construction of S from ι.
S = (ι' (ι' (ι' (ι' ι))))
 
1.4.1  Intuitionistic logic but with lambda calculus
 
Syntaxntru 297 Function representing truth.
nilad True
 
Syntaxnfal 298 Function representing falsity.
nilad False
 
Definitiondf-tru 299* Church-encoding of truth. It takes two (curried) arguments and returns the first. Happens to be identical to nkk 287.
True = λxλyx
 
Definitiondf-fal 300* Church-encoding of falsity. It takes two (curried) arguments and returns the second.
False = λxλyy
    < Previous  Next >

Page List
Jump to page: Contents  1 1-100 2 101-200201-300 4 301-335
  Copyright terms: Public domain < Previous  Next >