~/bend-docscommunity

proofs/u32_successor.bend checks

raw source on the hub · import stelliferous@0.0.2.0/proofs/u32_successor.bend as U32_successor

4 imports
import Base
import ./natural_addition.bend as Addition
import ./word_encoding.bend as WordEncoding
import ./word_width.bend as WordWidth

Laws

law pad_nat provedsource · line 6 · raw

@+n:Nat -> @+w:Word(n) -> {Word.to_nat(1n+n, Word.shr.pad(n, w)) == Word.to_nat(n, w) : Nat}

law inc_nat provedsource · line 24 · raw

@+n:Nat -> @+w:Word(n) -> {Word.to_nat(1n+n, Word.inc(1n+n, Word.shr.pad(n, w))) == 1n+Word.to_nat(n, w) : Nat}

law adc_zero provedsource · line 42 · raw

@+n:Nat -> @+w:Word(n) -> {Word.adc(n, w, Word.zero(n), False{}, False{}) == w : Word(n)}

law adc_one provedsource · line 60 · raw

@+n:Nat -> @+w:Word(n) -> {Word.adc(n, w, Word.zero(n), False{}, True{}) == Word.inc(n, w) : Word(n)}

law add_one provedsource · line 78 · raw

@+n:Nat -> @+w:Word(n) -> {Word.add(n, w, Word.inc(n, Word.zero(n))) == Word.inc(n, w) : Word(n)}

law concat_pad provedsource · line 95 · raw

@+width:Nat -> @+word:Word(width) -> {0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/word_width.transport(Nat.add(width, 1n), 1n+width, 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/word_encoding.concat(width, 1n, word, Word.zero(1n)), 0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/natural_addition.successor_width(width)) == Word.shr.pad(width, word) : Word(1n+width)}

law successor provedsource · line 144 · raw

@+i:U32 -> Goal(i)

Definitions

def padded_successor source · line 121 · raw

@+low:Word(31n) -> {U32.to_nat(U32.add(U32{Word.shr.pad(31n, low)}, 1)) == 1n+U32.to_nat(U32{Word.shr.pad(31n, low)}) : Nat}

def Goal source · line 128 · raw

@+i:U32 -> Type

def parts source · line 131 · raw

@+parts:0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/word_encoding.Split<31n, 1n> -> Goal(U32{0x9be3b13bf249759bc81e1958bcd1a4c0/proofs/word_encoding.join(31n, 1n, parts)})

def word source · line 140 · raw

@+w:Word(32n) -> Goal(U32{w})