~/bend-docscommunity

proofs/lib/lemmas/src/codec.bend checks

raw source on the hub · import bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/codec.bend as Codec

2 imports
import Base
import ../types/model.bend as T

Laws

law string_roundtrip provedsource · line 44 · raw

@s:String -> {string_decode(string_encode(s)) == s : String}

law natural_roundtrip provedsource · line 50 · raw

@n:Nat -> {natural_decode(natural_encode(n)) == n : Nat}

law integer_roundtrip provedsource · line 61 · raw

@n:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> {integer_decode(integer_encode(n)) == n : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer}

law integer_injective provedsource · line 71 · raw

@a:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> @b:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> @e:{integer_encode(a) == integer_encode(b) : String} -> {a == b : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer}

law string_injective provedsource · line 82 · raw

@a:String -> @b:String -> @e:{string_encode(a) == string_encode(b) : String} -> {a == b : String}

law bit_roundtrip provedsource · line 122 · raw

@b:Bool -> {char_bit(bit_char(b)) == b : Bool}

law word_roundtrip provedsource · line 132 · raw

@n:Nat -> @w:Word(n) -> {word_decode(n, word_encode(n, w)) == w : Word(n)}

law word_injective provedsource · line 149 · raw

@+n:Nat -> @a:Word(n) -> @b:Word(n) -> @e:{word_encode(n, a) == word_encode(n, b) : String} -> {a == b : Word(n)}

law string_equality_preserved provedsource · line 161 · raw

@a:String -> @b:String -> @e:{a == b : String} -> {string_encode(a) == string_encode(b) : String}

law integer_equality_preserved provedsource · line 169 · raw

@a:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> @b:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> @e:{a == b : 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer} -> {integer_encode(a) == integer_encode(b) : String}

law word_equality_preserved provedsource · line 177 · raw

@n:Nat -> @a:Word(n) -> @b:Word(n) -> @e:{a == b : Word(n)} -> {word_encode(n, a) == word_encode(n, b) : String}

law word64_injective provedsource · line 190 · raw

@a:Word(64n) -> @b:Word(64n) -> @e:{word64_encode(a) == word64_encode(b) : String} -> {a == b : Word(64n)}

Definitions

def string_encode source · line 5 · raw

@s:String -> String

Identity preserves all Base String characters, including Chr{0}.

def string_decode source · line 8 · raw

@s:String -> String

def natural_encode source · line 13 · raw

@n:Nat -> String

A unary integer codec: chosen for a simple total inverse, not speed. Every character has code 0; the first character encodes the sign.

def natural_decode source · line 20 · raw

@s:String -> Nat

def integer_encode source · line 23 · raw

@n:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer -> String

def integer_decode_sign source · line 30 · raw

@sign:Bool -> @n:Nat -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer

def integer_decode source · line 37 · raw

@s:String -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Integer

def bit_char source · line 92 · raw

@b:Bool -> Char

Fixed-width binary words are a practical integer codec; unlike unary Integer, a 64-bit key always occupies 64 characters. Leading zero bits are retained.

def char_bit source · line 99 · raw

@c:Char -> Bool

def word_encode source · line 104 · raw

@n:Nat -> @w:Word(n) -> String

def word_decode source · line 113 · raw

@n:Nat -> @s:String -> Word(n)

def word64_encode source · line 187 · raw

@w:Word(64n) -> String

The Word64 key codec used by the adapter for bigint keys.