Flypitch.FOL.Proof defines the natural-deduction proof system for the first-order language
developed in this repository, together with the structural operations on derivations that are
used throughout the completeness proof.
Natural-deduction derivations from a set of assumptions.
- axm {L : Language} {Γ : Set (formula L)} {A : formula L} : A ∈ Γ → Γ ⊢ A
- impI {L : Language} {Γ : Set (formula L)} {A B : formula L} : insert A Γ ⊢ B → Γ ⊢ A ⟹ B
- impE {L : Language} {Γ : Set (formula L)} (A : preformula L 0) {B : preformula L 0} : Γ ⊢ A ⟹ B → Γ ⊢ A → Γ ⊢ B
- falsumE {L : Language} {Γ : Set (formula L)} {A : formula L} : insert (∼A) Γ ⊢ ⊥ → Γ ⊢ A
- allI {L : Language} {Γ : Set (preformula L 0)} {A : formula L} : lift_formula1 '' Γ ⊢ A → Γ ⊢ ∀' A
- allE₂ {L : Language} {Γ : Set (formula L)} (A : formula L) (t : term L) : Γ ⊢ ∀' A → Γ ⊢ subst_formula A t 0
- ref {L : Language} (Γ : Set (formula L)) (t : term L) : Γ ⊢ t ≃ t
- subst₂ {L : Language} {Γ : Set (formula L)} (s t : term L) (f : formula L) : Γ ⊢ s ≃ t → Γ ⊢ subst_formula f s 0 → Γ ⊢ subst_formula f t 0
Instances For
Equations
- Flypitch.fol.«term_⊢_» = Lean.ParserDescr.trailingNode `Flypitch.fol.«term_⊢_» 51 52 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊢ ") (Lean.ParserDescr.cat `term 52))
Instances For
Equations
- Flypitch.fol.«term_⊢'_» = Lean.ParserDescr.trailingNode `Flypitch.fol.«term_⊢'_» 51 52 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊢' ") (Lean.ParserDescr.cat `term 52))
Instances For
Eliminate a universal quantifier and rewrite to a chosen target formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equality substitution followed by a rewrite to a chosen target formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The most recently inserted assumption is available immediately.
Equations
Instances For
The second most recently inserted assumption is available immediately.
Equations
Instances For
Truncated equality substitution.
Conjunction introduction.
Equations
- Flypitch.fol.andI h₁ h₂ = (Flypitch.fol.prf.impE f₂ (Flypitch.fol.prf.impE f₁ Flypitch.fol.axm1 (Flypitch.fol.weakening1 h₁)) (Flypitch.fol.weakening1 h₂)).impI
Instances For
Right projection from a conjunction.
Equations
- Flypitch.fol.andE2 f₁ h = (Flypitch.fol.prf.impE (f₁ ⟹ ∼f₂) (Flypitch.fol.weakening1 h) Flypitch.fol.axm2.impI).falsumE
Instances For
Extract the forward implication from a biconditional.
Equations
- Flypitch.fol.biimpE1 h = Flypitch.fol.deduction (Flypitch.fol.andE1 (f₂ ⟹ f₁) h)
Instances For
Extract the backward implication from a biconditional.
Equations
- Flypitch.fol.biimpE2 h = Flypitch.fol.deduction (Flypitch.fol.andE2 (f₁ ⟹ f₂) h)
Instances For
Existential introduction by providing a witness term.
Equations
- Flypitch.fol.exI t h = (Flypitch.fol.prf.impE (Flypitch.fol.subst_formula f t 0) (Flypitch.fol.prf.allE₂ (∼f) t Flypitch.fol.axm1) (Flypitch.fol.weakening1 h)).impI
Instances For
Existential elimination using a lifted derivation from a fresh witness.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Cancel a single lifting step by substituting the fresh variable back in.
Equations
- Flypitch.fol.reflect_prf_lift1 h = ⋯.mp (cast ⋯ (⋯.mpr (⋯.mp (Flypitch.fol.substitution (&0) 0 h))))