- axL: {L : LO.FirstOrder.Language} → {k : ℕ} → L.Rel k → (Fin k → LO.FirstOrder.SyntacticTerm L) → LO.FirstOrder.Derivation.Code L
- verum: {L : LO.FirstOrder.Language} → LO.FirstOrder.Derivation.Code L
- and: {L : LO.FirstOrder.Language} → LO.FirstOrder.SyntacticFormula L → LO.FirstOrder.SyntacticFormula L → LO.FirstOrder.Derivation.Code L
- or: {L : LO.FirstOrder.Language} → LO.FirstOrder.SyntacticFormula L → LO.FirstOrder.SyntacticFormula L → LO.FirstOrder.Derivation.Code L
- all: {L : LO.FirstOrder.Language} → LO.FirstOrder.SyntacticSemiformula L 1 → LO.FirstOrder.Derivation.Code L
- ex: {L : LO.FirstOrder.Language} → LO.FirstOrder.SyntacticSemiformula L 1 → LO.FirstOrder.SyntacticTerm L → LO.FirstOrder.Derivation.Code L
- wk: {L : LO.FirstOrder.Language} → List (LO.FirstOrder.SyntacticFormula L) → LO.FirstOrder.Derivation.Code L
Instances For
def
LO.FirstOrder.Derivation.Code.equiv
(L : LO.FirstOrder.Language)
:
LO.FirstOrder.Derivation.Code L ≃ (k : ℕ) × L.Rel k × (Fin k → LO.FirstOrder.SyntacticTerm L) ⊕ Unit ⊕ LO.FirstOrder.SyntacticFormula L × LO.FirstOrder.SyntacticFormula L ⊕ LO.FirstOrder.SyntacticFormula L × LO.FirstOrder.SyntacticFormula L ⊕ LO.FirstOrder.SyntacticSemiformula L 1 ⊕ LO.FirstOrder.SyntacticSemiformula L 1 × LO.FirstOrder.SyntacticTerm L ⊕ List (LO.FirstOrder.SyntacticFormula L)
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance
LO.FirstOrder.Derivation.instPrimcodableCode
{L : LO.FirstOrder.Language}
[(k : ℕ) → Primcodable (L.Func k)]
[(k : ℕ) → Primcodable (L.Rel k)]
[UniformlyPrimcodable L.Func]
[UniformlyPrimcodable L.Rel]
:
Equations
- One or more equations did not get rendered due to their size.
@[reducible, inline]
Equations
Instances For
Instances For
def
LO.FirstOrder.Derivation.ProofList.isProper
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
:
Equations
- One or more equations did not get rendered due to their size.
- LO.FirstOrder.Derivation.ProofList.isProper [] = true
- LO.FirstOrder.Derivation.ProofList.isProper ((LO.FirstOrder.Derivation.Code.verum, Γ) :: l) = (LO.FirstOrder.Derivation.ProofList.isProper l && decide (⊤ ∈ Γ))
Instances For
instance
LO.FirstOrder.Derivation.ProofList.instPrimcodableProdListSyntacticFormulaCodeSumUnitSyntacticSemiformulaOfNatNatSyntacticTerm
{L : LO.FirstOrder.Language}
[(k : ℕ) → Primcodable (L.Func k)]
[(k : ℕ) → Primcodable (L.Rel k)]
[UniformlyPrimcodable L.Func]
[UniformlyPrimcodable L.Rel]
:
Primcodable
((((List (LO.FirstOrder.SyntacticFormula L) × List (List (LO.FirstOrder.SyntacticFormula L))) × LO.FirstOrder.Derivation.Code L) × (Unit ⊕ LO.FirstOrder.SyntacticFormula L × LO.FirstOrder.SyntacticFormula L ⊕ LO.FirstOrder.SyntacticFormula L × LO.FirstOrder.SyntacticFormula L ⊕ LO.FirstOrder.SyntacticSemiformula L 1 ⊕ LO.FirstOrder.SyntacticSemiformula L 1 × LO.FirstOrder.SyntacticTerm L ⊕ List (LO.FirstOrder.SyntacticFormula L))) × (LO.FirstOrder.SyntacticFormula L × LO.FirstOrder.SyntacticFormula L ⊕ LO.FirstOrder.SyntacticFormula L × LO.FirstOrder.SyntacticFormula L ⊕ LO.FirstOrder.SyntacticSemiformula L 1 ⊕ LO.FirstOrder.SyntacticSemiformula L 1 × LO.FirstOrder.SyntacticTerm L ⊕ List (LO.FirstOrder.SyntacticFormula L)))
Equations
- LO.FirstOrder.Derivation.ProofList.instPrimcodableProdListSyntacticFormulaCodeSumUnitSyntacticSemiformulaOfNatNatSyntacticTerm = Primcodable.prod
theorem
LO.FirstOrder.Derivation.ProofList.isProper_primrec
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
[(k : ℕ) → Primcodable (L.Func k)]
[(k : ℕ) → Primcodable (L.Rel k)]
[UniformlyPrimcodable L.Func]
[UniformlyPrimcodable L.Rel]
:
Primrec LO.FirstOrder.Derivation.ProofList.isProper
@[simp]
theorem
LO.FirstOrder.Derivation.ProofList.sequents_append
{L : LO.FirstOrder.Language}
{l₁ : LO.FirstOrder.Derivation.ProofList L}
{l₂ : LO.FirstOrder.Derivation.ProofList L}
:
theorem
LO.FirstOrder.Derivation.ProofList.isProper_append
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
{l₁ : LO.FirstOrder.Derivation.ProofList L}
{l₂ : LO.FirstOrder.Derivation.ProofList L}
(h₁ : l₁.isProper = true)
(h₂ : l₂.isProper = true)
:
theorem
LO.FirstOrder.Derivation.ProofList.derivation_of_isProper
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
(l : LO.FirstOrder.Derivation.ProofList L)
:
@[irreducible]
noncomputable def
LO.FirstOrder.Derivation.ProofList.ofDerivation
{L : LO.FirstOrder.Language}
{Γ : LO.FirstOrder.Sequent L}
:
{ d : ⊢¹ Γ // LO.FirstOrder.Derivation.CutFree d } → LO.FirstOrder.Derivation.ProofList L
Equations
- One or more equations did not get rendered due to their size.
- LO.FirstOrder.Derivation.ProofList.ofDerivation ⟨LO.FirstOrder.Derivation.verum Γ, property⟩ = [(LO.FirstOrder.Derivation.Code.verum, ⊤ :: Γ)]
- LO.FirstOrder.Derivation.ProofList.ofDerivation ⟨b.wk a, H⟩ = (LO.FirstOrder.Derivation.Code.wk Γ, x) :: LO.FirstOrder.Derivation.ProofList.ofDerivation ⟨b, ⋯⟩
Instances For
theorem
LO.FirstOrder.Derivation.ProofList.mem_ofDerivation
{L : LO.FirstOrder.Language}
{Γ : LO.FirstOrder.Sequent L}
(b : { d : ⊢¹ Γ // LO.FirstOrder.Derivation.CutFree d })
:
Γ ∈ (LO.FirstOrder.Derivation.ProofList.ofDerivation b).sequents
theorem
LO.FirstOrder.Derivation.ProofList.iff_mem_sequents
{L : LO.FirstOrder.Language}
{Γ : List (LO.FirstOrder.SyntacticFormula L)}
{l : LO.FirstOrder.Derivation.ProofList L}
:
(∃ (c : LO.FirstOrder.Derivation.Code L), (c, Γ) ∈ l) ↔ Γ ∈ l.sequents
@[simp]
theorem
LO.FirstOrder.Derivation.ProofList.sequents_cons
{L : LO.FirstOrder.Language}
{c : LO.FirstOrder.Derivation.Code L}
{Γ : List (LO.FirstOrder.SyntacticFormula L)}
{l : LO.FirstOrder.Derivation.ProofList L}
:
LO.FirstOrder.Derivation.ProofList.sequents ((c, Γ) :: l) = Γ :: l.sequents
theorem
LO.FirstOrder.Derivation.ProofList.Finset.mem_cons_cons
{α : Type u_1}
[DecidableEq α]
(s : Finset α)
(a : α)
(b : α)
:
@[irreducible]
theorem
LO.FirstOrder.Derivation.ProofList.isProper_ofDerivation
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
{Γ : LO.FirstOrder.Sequent L}
(b : { d : ⊢¹ Γ // LO.FirstOrder.Derivation.CutFree d })
:
(LO.FirstOrder.Derivation.ProofList.ofDerivation b).isProper = true
theorem
LO.FirstOrder.Derivation.ProofList.derivable_iff_isProper
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
{Γ : LO.FirstOrder.Sequent L}
:
theorem
LO.FirstOrder.Derivation.ProofList.provable_iff
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
{T : LO.FirstOrder.Theory L}
[DecidablePred T]
{σ : LO.FirstOrder.Sentence L}
:
T ⊢! σ ↔ ∃ (l : LO.FirstOrder.Derivation.ProofList L) (U : List (LO.FirstOrder.Sentence L)),
(U.all fun (x : LO.FirstOrder.Sentence L) => decide (T x)) = true ∧ List.map (⇑LO.FirstOrder.Rew.emb.hom) (σ :: List.map (fun (x : LO.FirstOrder.Sentence L) => ~x) U) ∈ l.sequents ∧ l.isProper = true
def
LO.FirstOrder.isProofFn
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
[(k : ℕ) → Primcodable (L.Func k)]
[(k : ℕ) → Primcodable (L.Rel k)]
[UniformlyPrimcodable L.Func]
[UniformlyPrimcodable L.Rel]
(T : LO.FirstOrder.Theory L)
[DecidablePred T]
:
LO.FirstOrder.Sentence L → ℕ → Bool
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- LO.FirstOrder.Bool.toOpt b = bif b then some () else none
Instances For
@[simp]
@[simp]
def
LO.FirstOrder.provableFn
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
[(k : ℕ) → Primcodable (L.Func k)]
[(k : ℕ) → Primcodable (L.Rel k)]
[UniformlyPrimcodable L.Func]
[UniformlyPrimcodable L.Rel]
(T : LO.FirstOrder.Theory L)
[DecidablePred T]
:
Equations
- LO.FirstOrder.provableFn T x = Nat.rfindOpt fun (e : ℕ) => LO.FirstOrder.Bool.toOpt (LO.FirstOrder.isProofFn T x e)
Instances For
theorem
LO.FirstOrder.provable_iff_isProofFn
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
[(k : ℕ) → Primcodable (L.Func k)]
[(k : ℕ) → Primcodable (L.Rel k)]
[UniformlyPrimcodable L.Func]
[UniformlyPrimcodable L.Rel]
{T : LO.FirstOrder.Theory L}
[DecidablePred T]
{σ : LO.FirstOrder.Sentence L}
:
theorem
LO.FirstOrder.provable_iff_provableFn
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
[(k : ℕ) → Primcodable (L.Func k)]
[(k : ℕ) → Primcodable (L.Rel k)]
[UniformlyPrimcodable L.Func]
[UniformlyPrimcodable L.Rel]
{T : LO.FirstOrder.Theory L}
[DecidablePred T]
{σ : LO.FirstOrder.Sentence L}
{u : Unit}
:
T ⊢! σ ↔ u ∈ LO.FirstOrder.provableFn T σ
class
LO.FirstOrder.Theory.Computable
{L : LO.FirstOrder.Language}
[(k : ℕ) → Primcodable (L.Func k)]
[(k : ℕ) → Primcodable (L.Rel k)]
[UniformlyPrimcodable L.Func]
[UniformlyPrimcodable L.Rel]
(T : LO.FirstOrder.Theory L)
[DecidablePred T]
:
- comp : Computable fun (x : LO.FirstOrder.Sentence L) => decide (T x)
Instances
theorem
LO.FirstOrder.Theory.Computable.comp
{L : LO.FirstOrder.Language}
[(k : ℕ) → Primcodable (L.Func k)]
[(k : ℕ) → Primcodable (L.Rel k)]
[UniformlyPrimcodable L.Func]
[UniformlyPrimcodable L.Rel]
{T : LO.FirstOrder.Theory L}
[DecidablePred T]
[self : T.Computable]
:
Computable fun (x : LO.FirstOrder.Sentence L) => decide (T x)
theorem
LO.FirstOrder.isProofFn_computable
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
[(k : ℕ) → Primcodable (L.Func k)]
[(k : ℕ) → Primcodable (L.Rel k)]
[UniformlyPrimcodable L.Func]
[UniformlyPrimcodable L.Rel]
(T : LO.FirstOrder.Theory L)
[DecidablePred T]
[T.Computable]
:
theorem
LO.FirstOrder.provableFn_partrec
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
[(k : ℕ) → Primcodable (L.Func k)]
[(k : ℕ) → Primcodable (L.Rel k)]
[UniformlyPrimcodable L.Func]
[UniformlyPrimcodable L.Rel]
(T : LO.FirstOrder.Theory L)
[DecidablePred T]
[T.Computable]
:
theorem
LO.FirstOrder.provable_RePred
{L : LO.FirstOrder.Language}
[(k : ℕ) → DecidableEq (L.Func k)]
[(k : ℕ) → DecidableEq (L.Rel k)]
[(k : ℕ) → Primcodable (L.Func k)]
[(k : ℕ) → Primcodable (L.Rel k)]
[UniformlyPrimcodable L.Func]
[UniformlyPrimcodable L.Rel]
(T : LO.FirstOrder.Theory L)
[DecidablePred T]
[T.Computable]
:
RePred fun (x : LO.FirstOrder.Sentence L) => T ⊢! x