#!/usr/bin/env python3 """Verify the article's finite examples, independent of its illustration code.""" from fractions import Fraction as F from functools import reduce from operator import xor from pathlib import Path import json, math ROOT = Path(__file__).resolve().parents[1] out = {} assert sum(2**k for k in range(4)) == 15 < 16 assert 2**8 == 256 and 2**16 == 65536 out['counting'] = {'four_bit_inputs': 16, 'shorter_strings': 15} h = lambda p: -sum(q*math.log2(q) for q in [p, 1-p] if q) assert h(.5) == 1 and h(0) == 0 and h(1) == 0 out['binary_entropy_p_0_9'] = h(.9) codes = {'A':'0', 'B':'10', 'C':'110', 'D':'111'} assert all(not b.startswith(a) for a in codes.values() for b in codes.values() if a != b) message = 'ABACABAD' encoded = ''.join(codes[c] for c in message) assert encoded == '01001100100111' and len(encoded) == 14 pending = ''; decoded = ''; inverse = {v:k for k,v in codes.items()} for bit in encoded: pending += bit if pending in inverse: decoded += inverse[pending]; pending = '' assert decoded == message and not pending assert sum(p*len(codes[c]) for c,p in zip('ABCD',[F(1,2),F(1,4),F(1,8),F(1,8)])) == F(7,4) out['prefix_code'] = {'message': message, 'encoded': encoded, 'bits': len(encoded), 'expected_bits': 1.75} lo, hi = F(0), F(1); intervals = [] for symbol in '001': split = lo + (hi-lo)*F(3,4) if symbol == '0': hi = split else: lo = split intervals.append([str(lo),str(hi)]) assert (lo,hi) == (F(27,64), F(9,16)) assert lo <= F(8,16) < F(9,16) <= hi value = F(17,32); lo, hi = F(0), F(1); decoded = '' for _ in range(3): split = lo+(hi-lo)*F(3,4) if value < split: decoded += '0'; hi = split else: decoded += '1'; lo = split assert decoded == '001' out['arithmetic_intervals'] = intervals lz = list('101') for _ in range(9): lz.append(lz[-3]) assert ''.join(lz) == '101101101101' assert all((v >> 2) == 25 and ((v >> 2) << 2) == 100 for v in range(100,104)) out['quantization'] = {str(v): {'kept':f'{v>>2:06b}', 'decoded':(v>>2)<<2} for v in range(100,104)} for a in range(16): for b in range(16): parity = a ^ b assert a ^ parity == b and b ^ parity == a assert 0b1011 ^ 0b0110 == 0b1101 out['parity_pairs_checked'] = 256 def syndrome(bits): return reduce(xor, (i for i,b in enumerate(bits,1) if b == '1'), 0) count = 0 for n in range(128): x = f'{n:07b}' for error_position in range(8): y = list(x) if error_position: y[error_position-1] = str(1-int(y[error_position-1])) location = syndrome(x) ^ syndrome(y) assert location == error_position if location: y[location-1] = str(1-int(y[location-1])) assert ''.join(y) == x count += 1 assert syndrome('1011001') == 1 and syndrome('1011101') == 4 out['syndrome'] = {'cases_checked':count,'X':'1011001','Y':'1011101','sX':'001','sY':'100','difference':'101','position':5} for position in range(1,9): for amplitude in range(1,256): data = [amplitude if i == position else 0 for i in range(1,9)] m0 = sum(data); m1 = sum(i*v for i,v in enumerate(data,1)) assert m0 == amplitude and F(m1,m0) == position out['one_spike_measurement_cases_checked'] = 8*255 assert F(2,5)*10 == F(3,10)*10+1 out['hypothetical_model_break_even_GiB'] = 10 measurements = json.loads((ROOT/'evidence/measurements.json').read_text()) assert measurements['samples']['periodic']['byte_histogram_entropy'] == 8 assert all(v['round_trip_exact'] for s in measurements['samples'].values() for v in s['compressed'].values()) out['codec_round_trips_recorded'] = 12 (ROOT/'evidence/calculations.json').write_text(json.dumps(out,indent=2)+'\n') print(f'All worked examples verified, including {count} syndrome cases.')