Natural deduction for BSML #
Aloni, Anttila and Yang axiomatize BSML by a natural deduction system: the rules BSML shares with
its extensions by the global disjunction ⩔ and the emptiness operator, and three
⊥NE-translation rules that simulate ⩔, which BSML lacks. The system grows out of Anttila's
thesis. This file encodes it as Derives and proves it sound.
The ∨ rules are constrained because NE breaks downward closure: ∨I introduces only NE-free
disjuncts, and the side derivations of ¬I, ∨E and ∨Mon have NE-free undischarged
assumptions. The translation rules act on an occurrence [ψ] in the scope of no ¬ and no ◇,
where φ[ψ] is equivalent to φ[ψ ∧ NE/ψ] ⩔ φ[ψ ∧ ⊥/ψ].
Main definitions #
Formula.Context: one-hole contexts whose hole is under no¬except inside□;Formula.Context.Distributivepicks out those built from∧and∨alone.Derives: the system, writtenΓ ⊢ φ.
Main results #
Formula.Context.setOf_support_fill: the split behind the translation rules.soundness; completeness is proved inCompleteness.lean.Derives.fill: replacement in a context.strongFalsum_derives,conj_disj_derives_disj_conj,disj_conj_ne_derives_conj_ne,poss_derives_poss_conj_ne,poss_disj_conj_ne_derives_conj_poss: derivations from the papers, the last being free choice.not_atom_derives_disj_ne,not_poss_disj_derives_conj_poss: non-derivations, by soundness.
Implementation notes #
⊥ is Formula.falsum, p ∧ ¬p for the default atom, as in Aloni's original syntax; the paper
takes ⊥ as primitive. Contexts are upper bounds on undischarged assumptions, so the
NE-freeness conditions on side derivations are conditions on their contexts. The paper chains
derivations freely, but substituting a derivation for an assumption of a side derivation can break
that side derivation's condition, so composition is the rule cut; weakening follows from it.
Result numbers and pages follow arXiv:2305.11777v3.
References #
Contexts #
A one-hole context whose hole is in the scope of no ¬, except as part of □ = ¬◇¬.
These are the positions at which replacement holds ([AAY24] Lemma 4.4).
- hole {Atom : Type u_3} : Context Atom
- conjLeft {Atom : Type u_3} (C : Context Atom) (ψ : Formula Atom) : Context Atom
- conjRight {Atom : Type u_3} (φ : Formula Atom) (C : Context Atom) : Context Atom
- disjLeft {Atom : Type u_3} (C : Context Atom) (ψ : Formula Atom) : Context Atom
- disjRight {Atom : Type u_3} (φ : Formula Atom) (C : Context Atom) : Context Atom
- poss {Atom : Type u_3} (C : Context Atom) : Context Atom
- nec {Atom : Type u_3} (C : Context Atom) : Context Atom
Instances For
C.fill φ is the formula C with φ in its hole.
Equations
- BSML.Formula.Context.hole.fill x✝ = x✝
- (C.conjLeft ψ).fill x✝ = (C.fill x✝).conj ψ
- (BSML.Formula.Context.conjRight χ C).fill x✝ = χ.conj (C.fill x✝)
- (C.disjLeft ψ).fill x✝ = (C.fill x✝).disj ψ
- (BSML.Formula.Context.disjRight χ C).fill x✝ = χ.disj (C.fill x✝)
- C.poss.fill x✝ = (C.fill x✝).poss
- C.nec.fill x✝ = (C.fill x✝).nec
Instances For
A context is distributive when its hole is under no modality, so that it is built from ∧
and ∨ alone. These are the ⩔-distributive positions of [AAY24] (p. 28).
Equations
- BSML.Formula.Context.hole.Distributive = True
- (C.conjLeft ψ).Distributive = C.Distributive
- (BSML.Formula.Context.conjRight φ C).Distributive = C.Distributive
- (C.disjLeft ψ).Distributive = C.Distributive
- (BSML.Formula.Context.disjRight φ C).Distributive = C.Distributive
- C.poss.Distributive = False
- C.nec.Distributive = False
Instances For
At a distributive position, ψ splits into ψ ∧ NE and ψ ∧ ⊥. The teams supporting
C.fill ψ are those supporting C.fill (ψ ∧ NE) together with those supporting
C.fill (ψ ∧ ⊥) ([AAY24] p. 34).
The system #
The natural deduction system for BSML ([AAY24] Definition 4.33) has the
rules of Definition 4.1, boxes (a)–(f), and the three ⊥NE-translation rules. Derives Γ φ
says that φ is derivable from formulas in Γ, and cut composes derivations.
- hyp
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ : Formula Atom}
: φ ∈ Γ → Derives Γ φ
An assumption.
- cut
{Atom : Type u_1}
[Inhabited Atom]
{Γ Δ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives Γ φ → Derives (insert φ Δ) ψ → Derives (Γ ∪ Δ) ψ
Composition of derivations.
- conjI
{Atom : Type u_1}
[Inhabited Atom]
{Γ₁ Γ₂ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives Γ₁ φ → Derives Γ₂ ψ → Derives (Γ₁ ∪ Γ₂) (φ.conj ψ)
∧I. - conjE₁
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives Γ (φ.conj ψ) → Derives Γ φ
∧E, left. - conjE₂
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives Γ (φ.conj ψ) → Derives Γ ψ
∧E, right. - negI
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{α : Formula Atom}
: α.NEFree → (∀ γ ∈ Γ, γ.NEFree) → Derives (insert α Γ) Formula.falsum → Derives Γ α.neg
¬I, for classicalαandNE-free undischarged assumptions. - negE
{Atom : Type u_1}
[Inhabited Atom]
{Γ₁ Γ₂ : Set (Formula Atom)}
{α β : Formula Atom}
: α.NEFree → β.NEFree → Derives Γ₁ α → Derives Γ₂ α.neg → Derives (Γ₁ ∪ Γ₂) β
¬E, ex falso for classical formulas. - dneE
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ : Formula Atom}
: Derives Γ φ.neg.neg → Derives Γ φ
¬¬E, downward. - dneI
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ : Formula Atom}
: Derives Γ φ → Derives Γ φ.neg.neg
¬¬E, upward. - dmConjE
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives Γ (φ.conj ψ).neg → Derives Γ (φ.neg.disj ψ.neg)
DM∧, downward. - dmConjI
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives Γ (φ.neg.disj ψ.neg) → Derives Γ (φ.conj ψ).neg
DM∧, upward. - dmDisjE
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives Γ (φ.disj ψ).neg → Derives Γ (φ.neg.conj ψ.neg)
DM∨, downward. - dmDisjI
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives Γ (φ.neg.conj ψ.neg) → Derives Γ (φ.disj ψ).neg
DM∨, upward. - negNeE
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
: Derives Γ Formula.ne.neg → Derives Γ Formula.falsum
¬NEE, downward. - negNeI
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
: Derives Γ Formula.falsum → Derives Γ Formula.ne.neg
¬NEE, upward. - disjI
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: ψ.NEFree → Derives Γ φ → Derives Γ (φ.disj ψ)
∨I, for anNE-free introduced disjunct. - disjW
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ : Formula Atom}
: Derives Γ φ → Derives Γ (φ.disj φ)
∨W. - disjCom
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives Γ (φ.disj ψ) → Derives Γ (ψ.disj φ)
Com∨. - disjAss
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ ψ χ : Formula Atom}
: Derives Γ (φ.disj (ψ.disj χ)) → Derives Γ ((φ.disj ψ).disj χ)
Ass∨. - disjE
{Atom : Type u_1}
[Inhabited Atom]
{Γ Δ₁ Δ₂ : Set (Formula Atom)}
{φ ψ χ : Formula Atom}
: (∀ γ ∈ Δ₁, γ.NEFree) →
(∀ γ ∈ Δ₂, γ.NEFree) →
Derives Γ (φ.disj ψ) → Derives (insert φ Δ₁) χ → Derives (insert ψ Δ₂) χ → Derives (Γ ∪ Δ₁ ∪ Δ₂) χ
∨E, forNE-free undischarged assumptions in the side derivations. - disjMon
{Atom : Type u_1}
[Inhabited Atom]
{Γ Δ : Set (Formula Atom)}
{φ ψ χ : Formula Atom}
: (∀ γ ∈ Δ, γ.NEFree) → Derives Γ (φ.disj ψ) → Derives (insert ψ Δ) χ → Derives (Γ ∪ Δ) (φ.disj χ)
∨Mon, forNE-free undischarged assumptions in the side derivation. - falsumE
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ : Formula Atom}
: Derives Γ (Formula.falsum.disj φ) → Derives Γ φ
⊥E. - strongFalsumCtr
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ : Formula Atom}
(ψ : Formula Atom)
: Derives Γ (Formula.strongFalsum.disj φ) → Derives Γ ψ
⊥⊥Ctr. - possMon
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives {φ} ψ → Derives Γ φ.poss → Derives Γ ψ.poss
◇Mon, for a side derivation fromφalone. - necMon
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{ψ : Formula Atom}
(φs : List (Formula Atom))
: Derives {δ : Formula Atom | δ ∈ φs} ψ → (∀ δ ∈ φs, Derives Γ δ.nec) → Derives Γ ψ.nec
□Mon, for a side derivation from the boxed formulas alone. - interE
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ : Formula Atom}
: Derives Γ φ.poss.neg → Derives Γ φ.neg.nec
Inter◇□, downward. - interI
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ : Formula Atom}
: Derives Γ φ.neg.nec → Derives Γ φ.poss.neg
Inter◇□, upward. - possSep
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives Γ (φ.disj (ψ.conj Formula.ne)).poss → Derives Γ ψ.poss
◇Sep. - possJoin
{Atom : Type u_1}
[Inhabited Atom]
{Γ₁ Γ₂ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives Γ₁ φ.poss → Derives Γ₂ ψ.poss → Derives (Γ₁ ∪ Γ₂) (φ.disj ψ).poss
◇Join. - necInst
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{φ : Formula Atom}
: Derives Γ (φ.conj Formula.ne).nec → Derives Γ φ.poss
□Inst. - necPossJoin
{Atom : Type u_1}
[Inhabited Atom]
{Γ₁ Γ₂ : Set (Formula Atom)}
{φ ψ : Formula Atom}
: Derives Γ₁ φ.nec → Derives Γ₂ ψ.poss → Derives (Γ₁ ∪ Γ₂) (φ.disj ψ).nec
□◇Join. - neTrs
{Atom : Type u_1}
[Inhabited Atom]
{Γ Δ₁ Δ₂ : Set (Formula Atom)}
{ψ χ : Formula Atom}
(C : Formula.Context Atom)
: C.Distributive →
Derives Γ (C.fill ψ) →
Derives (insert (C.fill (ψ.conj Formula.ne)) Δ₁) χ →
Derives (insert (C.fill (ψ.conj Formula.falsum)) Δ₂) χ → Derives (Γ ∪ Δ₁ ∪ Δ₂) χ
⊥NETrs. - possNeTrs
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{ψ : Formula Atom}
(C : Formula.Context Atom)
: C.Distributive →
Derives Γ (C.fill ψ).poss → Derives Γ ((C.fill (ψ.conj Formula.ne)).poss.disj (C.fill (ψ.conj Formula.falsum)).poss)
◇⊥NETrs. - necNeTrs
{Atom : Type u_1}
[Inhabited Atom]
{Γ : Set (Formula Atom)}
{ψ : Formula Atom}
(C : Formula.Context Atom)
: C.Distributive →
Derives Γ (C.fill ψ).nec → Derives Γ ((C.fill (ψ.conj Formula.ne)).nec.disj (C.fill (ψ.conj Formula.falsum)).nec)
□⊥NETrs.
Instances For
The natural deduction system for BSML ([AAY24] Definition 4.33) has the
rules of Definition 4.1, boxes (a)–(f), and the three ⊥NE-translation rules. Derives Γ φ
says that φ is derivable from formulas in Γ, and cut composes derivations.
Equations
- BSML.«term_⊢_» = Lean.ParserDescr.trailingNode `BSML.«term_⊢_» 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊢ ") (Lean.ParserDescr.cat `term 51))
Instances For
Soundness #
Soundness ([AAY24] Theorem 4.34). Every team supporting the premises supports what they derive.
A derivation from one premise is a consequence in the sense of Consequence.
Derived rules #
A formula derives itself.
Replacement ([AAY24] Lemma 4.4). A derivation of ψ from φ carries
over to any context in which the hole is under no ¬ except as part of □.
Derivations from the papers #
The strong contradiction derives everything ([AAY24] Lemma 4.2).
The strong tautology ¬⊥ is derivable from no premises.
Conjunction with an NE-free formula distributes over ∨
([AAY24] Proposition 4.6 (i)). Each disjunct needs φ, which only cut
can supply without putting the premise into a side derivation.
A disjunction with an NE-conjunct is nonempty ([AAY24] Lemma 4.17).
The paper derives it with ⩔; here ⊥NETrs on the hole splits the premise, and its
⊥-branch closes by ⊥⊥Ctr.
A possibility has a nonempty witness ([AAY24] Lemma 4.21). ◇⊥NETrs
splits ◇φ into ◇(φ ∧ NE) ∨ ◇(φ ∧ ⊥), and ◇⊥ refutes itself.
Free choice ([Ant21] Proposition 4.2.5, p. 71). A possibility of a disjunction
of nonempty disjuncts yields both possibilities, by ◇Sep once directly and once after
Com∨.
Non-derivations #
Unrestricted ∨I would be unsound, since p ⊬ p ∨ NE. The empty team supports p but not
p ∨ NE ([AAY24] p. 19).
Free choice fails without enrichment, ◇(p ∨ q) ⊬ ◇p ∧ ◇q for distinct atoms. A world that
sees only a q-world is a zero-model of ◇(p ∨ q), the empty team witnessing p, but does
not support ◇p, as at the world w_∅ of the state s_b in [AAY24]
Figure 3(b) (pp. 6–7).