logic

Definition

Linear Logic

Operators

Multiplicative Conjunction

Definition

Multiplicative Conjunction ( Linear Logic)

means “have and together, each exactly once”. Using consumes one and one to proceed. No copying, no discarding.

The operator bundles independent resources. In a proof / program, building means you can produce and from disjoint portions of your context.

Analogy: To create a pancake, both and are needed. Denote this “bundle” as:

The multiplicative conjunction forms a monoid with a neutral elementi , i.e.:

Link to original

Additive Disjunction

Definition

Additive Disjunction ( Linear Logic)

means the provider makes an internal choice: it commits to either or and proceeds on that branch (the other branch is discarded). No implicit copying or discarding beyond the chosen branch.

In a proof / program, constructing means you present either a proof of (left injection) or a proof of (right injection), tagged accordingly.

Analogy: A notification bot chooses its channel:

The additive disjunction is associative/commutative with neutral element :

Duality: .

Link to original

Additive Conjunction

Definition

Additive Conjunction ( Linear Logic)

(read “with”) means the environment makes an external choice: it may demand either or , and the provider must be ready to handle the chosen branch. Only the chosen branch continues.

In a proof / program, constructing means you can produce and (with the same context) produce ; offering promises readiness for either.

Analogy: A service menu:

The additive conjunction is associative/commutative with neutral element :

Duality: .

Link to original

No Weakening

See Monotonicity of Entailment.

In classical logic, if you know is true, you can infer that is true (contraction, idempotent), and you can also use as many times as you want. If you can prove from , and you know , then is true, and remains available. Similarly, if you have proved , you can infer even if wasn’t used (weakening).

Linear logic operates differently: Every hypothesis (premise) must be used exactly once in a derivation. You cannot simply ignore a resource. From , inferring is not allowed.