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.

    Equations
    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.

      Equations
      • One or more equations did not get rendered due to their size.
      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.

        Equations
        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.

          Equations
          Instances For
            @[reducible, inline]

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

            Equations
            Instances For

              Shows derivability from a derivation.

              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.

              Equations
              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.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  Delaborator that hides InferenceSystem.Default in uses of the ⇓a notation.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For