Cairn · module

Cairn.Fuzz.Trusted.Gen

lean/Cairn/Fuzz/Trusted/Gen.lean

Generators for the trusted-base fuzzer

Random frames for differential fuzzing of the Swift frame decoder (docs/fuzz.md, "Trusted base"). Built on workstream L's SplitMix64 (Cairn.Fuzz.Gen), so a seed replays exactly.

Every generated frame fits the wire (fitsFrame): integers are drawn inside i32/u32, with a bias toward the edges (0, ±1, the extremes), because that is where a hand-written decoder slips. Strings lean on what breaks text code: astral scalars (surrogate pairs in UTF-16), the last scalar before and after the surrogate block, U+10FFFF, NUL, combining marks, ZWJ sequences, skin tones, flags, CJK, right-to-left scripts, line breaks and the BOM.

Imports Cairn.Fuzz.Rng, Cairn.Frame.Encode, Cairn.Frame.Events

Order

Definitions 35

def

Cairn.Fuzz.Trusted.edgeScalars

lean/Cairn/Fuzz/Trusted/Gen.lean:20
edgeScalars : Array Nat

Scalars at the edges of UTF-8 and UTF-16 encodings, and ones text code mishandles.

def

Cairn.Fuzz.Trusted.edgeStrings

lean/Cairn/Fuzz/Trusted/Gen.lean:28
edgeStrings : Array String

Whole strings that are hard to measure or index: ZWJ families, skin tones, flags, combining stacks, mixed bidi.

def

Cairn.Fuzz.Trusted.scalar

lean/Cairn/Fuzz/Trusted/Gen.lean:33
scalar : Gen Char
def

Cairn.Fuzz.Trusted.str

lean/Cairn/Fuzz/Trusted/Gen.lean:42
str : Gen String
def

Cairn.Fuzz.Trusted.i32

lean/Cairn/Fuzz/Trusted/Gen.lean:55
i32 : Gen Int
def

Cairn.Fuzz.Trusted.u32

lean/Cairn/Fuzz/Trusted/Gen.lean:61
u32 : Gen Nat
def

Cairn.Fuzz.Trusted.byte

lean/Cairn/Fuzz/Trusted/Gen.lean:67
byte : Gen UInt8
def

Cairn.Fuzz.Trusted.opt

lean/Cairn/Fuzz/Trusted/Gen.lean:68
opt {α : Type} (g : Gen α) : Gen (Option α)
def

Cairn.Fuzz.Trusted.rect

lean/Cairn/Fuzz/Trusted/Gen.lean:71
rect : Gen Rect
def

Cairn.Fuzz.Trusted.color

lean/Cairn/Fuzz/Trusted/Gen.lean:72
color : Gen Color
def

Cairn.Fuzz.Trusted.ref

lean/Cairn/Fuzz/Trusted/Gen.lean:73
ref : Gen ControlRef
def

Cairn.Fuzz.Trusted.range

lean/Cairn/Fuzz/Trusted/Gen.lean:74
range : Gen (Nat × Nat)
def

Cairn.Fuzz.Trusted.font

lean/Cairn/Fuzz/Trusted/Gen.lean:76
font : Gen Font
def

Cairn.Fuzz.Trusted.ints

lean/Cairn/Fuzz/Trusted/Gen.lean:82
ints : Gen (List Int)
def

Cairn.Fuzz.Trusted.draw

lean/Cairn/Fuzz/Trusted/Gen.lean:86
draw : Gen Draw
def

Cairn.Fuzz.Trusted.role

lean/Cairn/Fuzz/Trusted/Gen.lean:110
role : Gen Role
def

Cairn.Fuzz.Trusted.axNode

lean/Cairn/Fuzz/Trusted/Gen.lean:114
axNode : Gen AxNode
def

Cairn.Fuzz.Trusted.textInput

lean/Cairn/Fuzz/Trusted/Gen.lean:119
textInput : Gen TextInput
def

Cairn.Fuzz.Trusted.array

lean/Cairn/Fuzz/Trusted/Gen.lean:124
array {α : Type} (n : Nat) (g : Gen α) : Gen (Array α)
def

Cairn.Fuzz.Trusted.u64

lean/Cairn/Fuzz/Trusted/Gen.lean:131
u64 : Gen Nat

A u64, edges first: around 2³² (where the two words split) and the top.

def

Cairn.Fuzz.Trusted.bytes

lean/Cairn/Fuzz/Trusted/Gen.lean:137
bytes : Gen ByteArray
def

Cairn.Fuzz.Trusted.headers

lean/Cairn/Fuzz/Trusted/Gen.lean:143
headers : Gen (List (String × String))
def

Cairn.Fuzz.Trusted.part

lean/Cairn/Fuzz/Trusted/Gen.lean:145
part : Gen Part
def

Cairn.Fuzz.Trusted.secret

lean/Cairn/Fuzz/Trusted/Gen.lean:149
secret : Gen Secret
def

Cairn.Fuzz.Trusted.request

lean/Cairn/Fuzz/Trusted/Gen.lean:155
request : Gen Request
def

Cairn.Fuzz.Trusted.effect

lean/Cairn/Fuzz/Trusted/Gen.lean:177
effect : Gen Effect
def

Cairn.Fuzz.Trusted.subCmd

lean/Cairn/Fuzz/Trusted/Gen.lean:197
subCmd : Gen SubCmd
def

Cairn.Fuzz.Trusted.canvas

lean/Cairn/Fuzz/Trusted/Gen.lean:206
canvas (big : Bool) : Gen Canvas
def

Cairn.Fuzz.Trusted.key

lean/Cairn/Fuzz/Trusted/Gen.lean:211
key : Gen Key
def

Cairn.Fuzz.Trusted.mods

lean/Cairn/Fuzz/Trusted/Gen.lean:219
mods : Gen Mods
def

Cairn.Fuzz.Trusted.menuRecord

lean/Cairn/Fuzz/Trusted/Gen.lean:221
menuRecord : Gen MenuRecord
def

Cairn.Fuzz.Trusted.status

lean/Cairn/Fuzz/Trusted/Gen.lean:227
status (big : Bool) : Gen StatusFrame
def

Cairn.Fuzz.Trusted.surface

lean/Cairn/Fuzz/Trusted/Gen.lean:231
surface (big : Bool) : Gen SurfaceFrame
def

Cairn.Fuzz.Trusted.frame

lean/Cairn/Fuzz/Trusted/Gen.lean:236
frame : Gen Frame
def

Cairn.Fuzz.Trusted.frameOf

lean/Cairn/Fuzz/Trusted/Gen.lean:242
frameOf (seed : UInt64) : Frame

The frame for a seed.