Encodings #
This file contains the definition of a (finite) encoding, a map from a type to strings in an alphabet, used in defining computability by Turing machines. It also contains several examples:
Examples #
finEncodingNatBool: a binary encoding ofℕin a simple alphabet.finEncodingNatΓ': a binary encoding ofℕin the alphabet used for TM's.unaryFinEncodingNat: a unary encoding ofℕfinEncodingBoolBool: an encoding ofBool.finEncodingList: an encoding ofList αin the alphabetα.finEncodingPair: an encoding ofα × βfrom encodings ofαandβ.
An encoding of a type in a certain alphabet, together with a decoding.
- Γ : Type v
The alphabet of the encoding
The encoding function
The decoding function
Decoding and encoding are inverses of each other.
Instances For
An Encoding plus a guarantee of finiteness of the alphabet.
The alphabet of the encoding is finite
Instances For
Equations
Equations
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.blank Computability.Γ'.blank = isTrue ⋯
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.blank (Computability.Γ'.bit b) = isFalse ⋯
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.blank Computability.Γ'.bra = isFalse Computability.instDecidableEqΓ'.decEq._proof_4
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.blank Computability.Γ'.ket = isFalse Computability.instDecidableEqΓ'.decEq._proof_5
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.blank Computability.Γ'.comma = isFalse Computability.instDecidableEqΓ'.decEq._proof_6
- Computability.instDecidableEqΓ'.decEq (Computability.Γ'.bit b) Computability.Γ'.blank = isFalse ⋯
- Computability.instDecidableEqΓ'.decEq (Computability.Γ'.bit a) (Computability.Γ'.bit b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Computability.instDecidableEqΓ'.decEq (Computability.Γ'.bit b) Computability.Γ'.bra = isFalse ⋯
- Computability.instDecidableEqΓ'.decEq (Computability.Γ'.bit b) Computability.Γ'.ket = isFalse ⋯
- Computability.instDecidableEqΓ'.decEq (Computability.Γ'.bit b) Computability.Γ'.comma = isFalse ⋯
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.bra Computability.Γ'.blank = isFalse Computability.instDecidableEqΓ'.decEq._proof_12
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.bra (Computability.Γ'.bit b) = isFalse ⋯
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.bra Computability.Γ'.bra = isTrue ⋯
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.bra Computability.Γ'.ket = isFalse Computability.instDecidableEqΓ'.decEq._proof_14
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.bra Computability.Γ'.comma = isFalse Computability.instDecidableEqΓ'.decEq._proof_15
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.ket Computability.Γ'.blank = isFalse Computability.instDecidableEqΓ'.decEq._proof_16
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.ket (Computability.Γ'.bit b) = isFalse ⋯
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.ket Computability.Γ'.bra = isFalse Computability.instDecidableEqΓ'.decEq._proof_18
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.ket Computability.Γ'.ket = isTrue ⋯
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.ket Computability.Γ'.comma = isFalse Computability.instDecidableEqΓ'.decEq._proof_19
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.comma Computability.Γ'.blank = isFalse Computability.instDecidableEqΓ'.decEq._proof_20
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.comma (Computability.Γ'.bit b) = isFalse ⋯
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.comma Computability.Γ'.bra = isFalse Computability.instDecidableEqΓ'.decEq._proof_22
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.comma Computability.Γ'.ket = isFalse Computability.instDecidableEqΓ'.decEq._proof_23
- Computability.instDecidableEqΓ'.decEq Computability.Γ'.comma Computability.Γ'.comma = isTrue ⋯
Instances For
Equations
- Computability.inhabitedΓ' = { default := Computability.Γ'.blank }
A binary encoding of ℕ in Bool, as a FinEncoding.
Equations
- Computability.finEncodingNatBool = { toEncoding := Computability.encodingNatBool, ΓFin := Bool.fintype }
Instances For
A binary FinEncoding of ℕ in Γ'.
Equations
- Computability.finEncodingNatΓ' = { toEncoding := Computability.encodingNatΓ', ΓFin := inferInstanceAs (Fintype Computability.Γ') }
Instances For
A unary FinEncoding of ℕ in Bool.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A decoding function from List Bool to Bool.
Equations
- Computability.decodeBool (b :: tail) = b
- Computability.decodeBool x✝ = default
Instances For
A FinEncoding of Bool in Bool.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
A FinEncoding of a List α in (finite) alphabet α, encoded directly.
Equations
- Computability.finEncodingList α = { Γ := α, encode := id, decode := some, decode_encode := ⋯, ΓFin := inferInstance }
Instances For
Given FinEncoding of α and β,
constructs a FinEncoding of α × β by concatenating the encodings,
mapping the symbols from the first encoding with Sum.inl
and those from the second with Sum.inr.
Equations
- One or more equations did not get rendered due to their size.