Documentation

Cvc.Srt.SrtBij

Relates Srt-s to Type-s #

Main class Srt.Bij (α : Type) associates srt : Srt to α. It guarantees this association works both ways by asking for a proof that α = srt.toType.

class Cvc.Srt.Bij (α : Type) :

Denotes a "bijection" from the α type itself (not its values) to Srt.

"Bijection" here means that when A : SrtBij α, then A.srt.toType = α as guaranteed by valid.

  • srt : Srt

    Srt version of α.

  • h_bij : α = (srt α).toType

    Turning srt into a Type results in α.

Instances
    @[reducible, inline]
    abbrev Cvc.getSrt (α : Type) [I : Srt.Bij α] :

    Retrieves the Srt corresponding to a Type.

    Equations
    Instances For
      instance Cvc.Srt.toBijType (srt : Srt) :
      Equations
      @[reducible, inline]
      abbrev Cvc.Srt.ofType (α : Type) [I : Srt.Bij α] :

      Retrieves the Srt corresponding to a Type.

      Equations
      Instances For
        @[simp]
        theorem Cvc.Srt.toType_ofType (α : Type) [I : Srt.Bij α] :
        (ofType α).toType = α
        @[simp]
        theorem Cvc.Srt.ofType_toType (srt : Srt) :
        ofType srt.toType = srt

        Instances for simple types #

        Instances for non-Srt-parameterized types #

        instance Cvc.Srt.Bij.instAnyFloat {exp sig : UInt32} :
        Equations
        instance Cvc.Srt.Bij.instBitVec {size : Nat} :
        Equations

        Instances composite types #

        instance Cvc.Srt.Bij.instArray {α : Type} [A : Srt.Bij α] :
        Equations
        instance Cvc.Srt.Bij.instFunction {α β : Type} [A : Srt.Bij α] [B : Srt.Bij β] :
        Srt.Bij (αβ)
        Equations
        instance Cvc.Srt.Bij.instProd {α β : Type} [A : Srt.Bij α] [B : Srt.Bij β] :
        Srt.Bij (α × β)
        Equations
        instance Cvc.Srt.Bij.instTMap {α β : Type} [A : Srt.Bij α] [B : Srt.Bij β] :
        Equations
        instance Cvc.Srt.Bij.instBag {α : Type} [A : Srt.Bij α] :
        Equations
        instance Cvc.Srt.Bij.instSet {α : Type} [A : Srt.Bij α] :
        Equations

        Refinement of Srt.Bij to arithmetic sorts #

        @[reducible, inline]
        abbrev Cvc.is_arith (α : Type) [Srt.Bij α] :

        Proof that the sort associated to α is arithmetic.

        Equations
        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          @[simp]
          theorem Cvc.is_arith_def (α : Type) [inst : Srt.Bij α] :
          Cvc.is_arith αα = Int α = Rat
          Equations
          • =
          Instances For
            class Cvc.Srt.Bij.Arith (α : Type) extends Cvc.Srt.Bij α :

            Extends Srt.Bij with a proof that α's Srt is arithmetic.

            Instances

              Instances for Int and Rat (Real) #

              theorem Cvc.Srt.Bij.Arith.int_or_rat (α : Type) [inst : Bij.Arith α] :
              α = Int α = Rat
              Equations
              • =
              Instances For
                def Cvc.Srt.Bij.Arith.inspect' {β : Prop} (α : Type) [inst : Bij.Arith α] (fInt : α = Intβ) (fRat : α = Ratβ) :
                β
                Equations
                • =
                Instances For
                  def Cvc.Srt.Bij.Arith.inspect {α : Type} {β : Sort u} [inst : Bij.Arith α] (fInt : srt α = intβ) (fRat : srt α = realβ) :
                  β
                  Equations
                  Instances For