Documentation

Cslib.Foundations.Logic.InferenceSystem

Inference systems #

This module defines the basic classes and notation for inference systems -- systems for deriving conclusions from premises.

We intend inference systems broadly, as in theory of programming languages. In applications to logic, for example, we use inference systems to capture both the concepts of satisfiability and proof systems.

class Cslib.Logic.InferenceSystem (S : Type u_1) (α : Type u_2) :
Type (max u_2 v)

The notation typeclass for inference systems. This enables the notation S⇓a, where S is a tag for the inference system and a : α is a derivable value.

  • derivation (a : α) : Sort v

    S⇓a is a derivation of a, that is, a witness that a is derivable in the system S. The meaning of this notation is type-dependent.

Instances

    Default tag for inference system instances. ⇓a is short for Default⇓a.

    @[reducible, inline]
    abbrev Cslib.Logic.HasInferenceSystem (α : Type u_1) :
    Type (max u_1 u_2)

    Class for types (α) that have a canonical inference system.

    Instances For

      S⇓a is a derivation of a, that is, a witness that a is derivable in the system S. The meaning of this notation is type-dependent.

      Instances For
        def Cslib.Logic.InferenceSystem.rwConclusion {S : Type u_1} {α : Type u_2} [InferenceSystem S α] {Γ Δ : α} (h : Γ = Δ) (p : derivation S Γ) :

        Rewrites the conclusion of a proof into an equal one.

        Instances For
          def Cslib.Logic.InferenceSystem.DerivableIn {α : Type u_1} (S : Type u_2) [InferenceSystem S α] (a : α) :

          a is derivable in S if it is the conclusion of some derivation.

          Instances For
            @[reducible, inline]

            a : α is derivable in the default inference system for α.

            Instances For

              Shows derivability from a derivation.

              @[instance_reducible]
              noncomputable def Cslib.Logic.InferenceSystem.DerivableIn.toDerivation {S : Type u_1} {α : Type u_2} [InferenceSystem S α] {a : α} (d : DerivableIn S a) :

              Extracts (noncomputably) a derivation from the fact that a conclusion is derivable.

              Instances For
                @[instance_reducible]
                noncomputable instance Cslib.Logic.InferenceSystem.instCoeDerivableInDerivation {S : Type u_1} {α : Type u_2} [InferenceSystem S α] {a : α} :

                S⇓a is a derivation of a, that is, a witness that a is derivable in the system S. The meaning of this notation is type-dependent.

                Instances For