Cairn · module

Cairn.Fuzz.Trusted.Claims

lean/Cairn/Fuzz/Trusted/Claims.lean

The trusted base's assumptions (docs/trusted.md), each naming the check of the trusted-base fuzzer that gathers its evidence (make fuzz-trusted, build/fuzz/trusted.json, docs/fuzz.md "Trusted base"). Evidence, not proof: these stay assumptions.

Ids 901–999 and 1000 on are for framework-level assumptions; apps' own assumptions use their apps' ranges. ^7 and ^214 are framework-level too, kept from the examples that first declared them. Not imported by Cairn (the host links that); the ledger reads this module as a root.

Imports Cairn.Claims.Core, Cairn.Claims.Elab

Order

Claims 65

^7

The host reports clicks where they happen

assumeassumed
Does

The host sends a pointer down and up at the logical point the person clicked, in order.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:254 · hostClicks · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostClicks.info

lean/Cairn/Fuzz/Trusted/Claims.lean:254
info : ClaimInfo

The human half of claim ^7.

def

Cairn.Fuzz.Trusted.Claims.hostClicks.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:254
statement : Prop

Assumed, never proved (^7 The host reports clicks where they happen): The host sends a pointer down and up at the logical point the person clicked, in order.

def

Cairn.Fuzz.Trusted.Claims.hostClicks

lean/Cairn/Fuzz/Trusted/Claims.lean:254
hostClicks : Claims.Assumption

^7 The host reports clicks where they happen (assumption)

The host sends a pointer down and up at the logical point the person clicked, in order.

^214

The host reports a double click as a second click

assumeassumed
Does

The host sends the second click of a double click as a pointer down with a click count of 2, at the same point, within the system's double-click interval; the runtime turns its release into a double press. (T20)

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:260 · doubleClick · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.doubleClick

lean/Cairn/Fuzz/Trusted/Claims.lean:260
doubleClick : Claims.Assumption

^214 The host reports a double click as a second click (assumption)

The host sends the second click of a double click as a pointer down with a click count of 2, at the same point, within the system's double-click interval; the runtime turns its release into a double press. (T20)

def

Cairn.Fuzz.Trusted.Claims.doubleClick.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:260
statement : Prop

Assumed, never proved (^214 The host reports a double click as a second click): The host sends the second click of a double click as a pointer down with a click count of 2, at the same point, within the system's double-click interval; the runtime turns its release into a double press. (T20)

def

Cairn.Fuzz.Trusted.Claims.doubleClick.info

lean/Cairn/Fuzz/Trusted/Claims.lean:260
info : ClaimInfo

The human half of claim ^214.

^901

The Swift frame decoder agrees with Lean's

assumeassumed
Does

For every byte buffer, the host's Frame(bytes:) accepts exactly when Lean's proved decodeFrame does, and then decodes the same frame.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 20k
The trusted-base fuzzer's frame.decode held in 20,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:16 · swiftFrameDecoder · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.swiftFrameDecoder

lean/Cairn/Fuzz/Trusted/Claims.lean:16
swiftFrameDecoder : Claims.Assumption

^901 The Swift frame decoder agrees with Lean's (assumption)

For every byte buffer, the host's Frame(bytes:) accepts exactly when Lean's proved decodeFrame does, and then decodes the same frame.

def

Cairn.Fuzz.Trusted.Claims.swiftFrameDecoder.info

lean/Cairn/Fuzz/Trusted/Claims.lean:16
info : ClaimInfo

The human half of claim ^901.

def

Cairn.Fuzz.Trusted.Claims.swiftFrameDecoder.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:16
statement : Prop

Assumed, never proved (^901 The Swift frame decoder agrees with Lean's): For every byte buffer, the host's Frame(bytes:) accepts exactly when Lean's proved decodeFrame does, and then decodes the same frame.

^902

Lean decodes what the Swift event encoder writes

assumeassumed
Does

For every batch of events, Lean's proved decodeEvents decodes the host's encodeEvents bytes to the same events, and Lean's encoder gives back the same bytes.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 20k
The trusted-base fuzzer's events.encode held in 20,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:20 · swiftEventEncoder · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.swiftEventEncoder

lean/Cairn/Fuzz/Trusted/Claims.lean:20
swiftEventEncoder : Claims.Assumption

^902 Lean decodes what the Swift event encoder writes (assumption)

For every batch of events, Lean's proved decodeEvents decodes the host's encodeEvents bytes to the same events, and Lean's encoder gives back the same bytes.

def

Cairn.Fuzz.Trusted.Claims.swiftEventEncoder.info

lean/Cairn/Fuzz/Trusted/Claims.lean:20
info : ClaimInfo

The human half of claim ^902.

def

Cairn.Fuzz.Trusted.Claims.swiftEventEncoder.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:20
statement : Prop

Assumed, never proved (^902 Lean decodes what the Swift event encoder writes): For every batch of events, Lean's proved decodeEvents decodes the host's encodeEvents bytes to the same events, and Lean's encoder gives back the same bytes.

^903

UTF-16 offsets and scalar indices convert exactly

assumeassumed
Does

TextIndex maps between AppKit's UTF-16 offsets and Lean's scalar indices exactly on boundaries, rounds offsets inside a surrogate pair to a whole scalar, and clamps AppKit ranges (NSNotFound, negative, past the end) to whole scalars.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 20k
The trusted-base fuzzer's text.index held in 20,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:24 · textIndex · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.textIndex

lean/Cairn/Fuzz/Trusted/Claims.lean:24
textIndex : Claims.Assumption

^903 UTF-16 offsets and scalar indices convert exactly (assumption)

TextIndex maps between AppKit's UTF-16 offsets and Lean's scalar indices exactly on boundaries, rounds offsets inside a surrogate pair to a whole scalar, and clamps AppKit ranges (NSNotFound, negative, past the end) to whole scalars.

def

Cairn.Fuzz.Trusted.Claims.textIndex.info

lean/Cairn/Fuzz/Trusted/Claims.lean:24
info : ClaimInfo

The human half of claim ^903.

def

Cairn.Fuzz.Trusted.Claims.textIndex.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:24
statement : Prop

Assumed, never proved (^903 UTF-16 offsets and scalar indices convert exactly): TextIndex maps between AppKit's UTF-16 offsets and Lean's scalar indices exactly on boundaries, rounds offsets inside a surrogate pair to a whole scalar, and clamps AppKit ranges (NSNotFound, negative, past the end) to whole scalars.

^904

The text-input shadow predicts Lean's field

assumeassumed
Does

Between an input-method call and the frame that reflects it, the host's copy of the focused field has the text, selection and marked range Lean's field will show.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 4k
The trusted-base fuzzer's text.shadow held in 4,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:28 · textShadow · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.textShadow.info

lean/Cairn/Fuzz/Trusted/Claims.lean:28
info : ClaimInfo

The human half of claim ^904.

def

Cairn.Fuzz.Trusted.Claims.textShadow.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:28
statement : Prop

Assumed, never proved (^904 The text-input shadow predicts Lean's field): Between an input-method call and the frame that reflects it, the host's copy of the focused field has the text, selection and marked range Lean's field will show.

def

Cairn.Fuzz.Trusted.Claims.textShadow

lean/Cairn/Fuzz/Trusted/Claims.lean:28
textShadow : Claims.Assumption

^904 The text-input shadow predicts Lean's field (assumption)

Between an input-method call and the frame that reflects it, the host's copy of the focused field has the text, selection and marked range Lean's field will show.

^905

Input-method geometry agrees with Lean's caret

assumeassumed
Does

selectedRange and markedRange are Lean's, firstRect at the selection is Lean's caret, and characterIndex(for:) maps points back to scalar boundaries of the field.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 4k
The trusted-base fuzzer's text.input-client held in 4,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:32 · inputClientGeometry · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.inputClientGeometry.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:32
statement : Prop

Assumed, never proved (^905 Input-method geometry agrees with Lean's caret): selectedRange and markedRange are Lean's, firstRect at the selection is Lean's caret, and characterIndex(for:) maps points back to scalar boundaries of the field.

def

Cairn.Fuzz.Trusted.Claims.inputClientGeometry

lean/Cairn/Fuzz/Trusted/Claims.lean:32
inputClientGeometry : Claims.Assumption

^905 Input-method geometry agrees with Lean's caret (assumption)

selectedRange and markedRange are Lean's, firstRect at the selection is Lean's caret, and characterIndex(for:) maps points back to scalar boundaries of the field.

def

Cairn.Fuzz.Trusted.Claims.inputClientGeometry.info

lean/Cairn/Fuzz/Trusted/Claims.lean:32
info : ClaimInfo

The human half of claim ^905.

^906

The host's text metrics are what layout assumes

assumeassumed
Does

cairn_text_metrics gives one offset per scalar boundary, from 0 and nondecreasing, with nonnegative ascent and descent, and Lean's TextMetrics.host sees those numbers unchanged.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 20k
The trusted-base fuzzer's text.metrics held in 20,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:36 · textMetricsHost · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.textMetricsHost

lean/Cairn/Fuzz/Trusted/Claims.lean:36
textMetricsHost : Claims.Assumption

^906 The host's text metrics are what layout assumes (assumption)

cairn_text_metrics gives one offset per scalar boundary, from 0 and nondecreasing, with nonnegative ascent and descent, and Lean's TextMetrics.host sees those numbers unchanged.

def

Cairn.Fuzz.Trusted.Claims.textMetricsHost.info

lean/Cairn/Fuzz/Trusted/Claims.lean:36
info : ClaimInfo

The human half of claim ^906.

def

Cairn.Fuzz.Trusted.Claims.textMetricsHost.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:36
statement : Prop

Assumed, never proved (^906 The host's text metrics are what layout assumes): cairn_text_metrics gives one offset per scalar boundary, from 0 and nondecreasing, with nonnegative ascent and descent, and Lean's TextMetrics.host sees those numbers unchanged.

^907

Carets follow the painted glyphs

assumeassumed
Does

On left-to-right text, the caret offset after each grapheme is at or right of every glyph painted for the text before it.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 11k
The trusted-base fuzzer's text.metrics.carets held in 11,043 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:40 · textCaretsPainted · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.textCaretsPainted

lean/Cairn/Fuzz/Trusted/Claims.lean:40
textCaretsPainted : Claims.Assumption

^907 Carets follow the painted glyphs (assumption)

On left-to-right text, the caret offset after each grapheme is at or right of every glyph painted for the text before it.

def

Cairn.Fuzz.Trusted.Claims.textCaretsPainted.info

lean/Cairn/Fuzz/Trusted/Claims.lean:40
info : ClaimInfo

The human half of claim ^907.

def

Cairn.Fuzz.Trusted.Claims.textCaretsPainted.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:40
statement : Prop

Assumed, never proved (^907 Carets follow the painted glyphs): On left-to-right text, the caret offset after each grapheme is at or right of every glyph painted for the text before it.

^908

The host's clock is monotonic milliseconds

assumeassumed
Does

Every batch the host sends Lean starts with exactly one clock event; its monotonic milliseconds never decrease from batch to batch and are not ahead of the system's monotonic clock, its wall time is the wall clock and its zone the current UTC offset.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 1k
The trusted-base fuzzer's clock.monotonic held in 1,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:44 · hostClock · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostClock.info

lean/Cairn/Fuzz/Trusted/Claims.lean:44
info : ClaimInfo

The human half of claim ^908.

def

Cairn.Fuzz.Trusted.Claims.hostClock

lean/Cairn/Fuzz/Trusted/Claims.lean:44
hostClock : Claims.Assumption

^908 The host's clock is monotonic milliseconds (assumption)

Every batch the host sends Lean starts with exactly one clock event; its monotonic milliseconds never decrease from batch to batch and are not ahead of the system's monotonic clock, its wall time is the wall clock and its zone the current UTC offset.

def

Cairn.Fuzz.Trusted.Claims.hostClock.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:44
statement : Prop

Assumed, never proved (^908 The host's clock is monotonic milliseconds): Every batch the host sends Lean starts with exactly one clock event; its monotonic milliseconds never decrease from batch to batch and are not ahead of the system's monotonic clock, its wall time is the wall clock and its zone the current UTC offset.

^909

The host wakes Lean by wake

assumeassumed
Does

When a frame carries a wake deadline, the host sends a clock-only batch whose time is at or past the deadline, soon after it, and sends none for a deadline that a later frame cleared or met.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 1k
The trusted-base fuzzer's clock.wake held in 1,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:48 · hostWake · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostWake

lean/Cairn/Fuzz/Trusted/Claims.lean:48
hostWake : Claims.Assumption

^909 The host wakes Lean by wake (assumption)

When a frame carries a wake deadline, the host sends a clock-only batch whose time is at or past the deadline, soon after it, and sends none for a deadline that a later frame cleared or met.

def

Cairn.Fuzz.Trusted.Claims.hostWake.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:48
statement : Prop

Assumed, never proved (^909 The host wakes Lean by wake): When a frame carries a wake deadline, the host sends a clock-only batch whose time is at or past the deadline, soon after it, and sends none for a deadline that a later frame cleared or met.

def

Cairn.Fuzz.Trusted.Claims.hostWake.info

lean/Cairn/Fuzz/Trusted/Claims.lean:48
info : ClaimInfo

The human half of claim ^909.

^910

readFile replies with the file's bytes, or failed

assumeassumed
Does

readFile answers with exactly the bytes the file holds, notFound for a missing file, a failure for a directory or an unreadable file, and invalid for a path that can't name a file.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 3.8k
The trusted-base fuzzer's effects.read-file held in 3,797 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:52 · hostReadFile · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostReadFile.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:52
statement : Prop

Assumed, never proved (^910 readFile replies with the file's bytes, or failed): readFile answers with exactly the bytes the file holds, notFound for a missing file, a failure for a directory or an unreadable file, and invalid for a path that can't name a file.

def

Cairn.Fuzz.Trusted.Claims.hostReadFile.info

lean/Cairn/Fuzz/Trusted/Claims.lean:52
info : ClaimInfo

The human half of claim ^910.

def

Cairn.Fuzz.Trusted.Claims.hostReadFile

lean/Cairn/Fuzz/Trusted/Claims.lean:52
hostReadFile : Claims.Assumption

^910 readFile replies with the file's bytes, or failed (assumption)

readFile answers with exactly the bytes the file holds, notFound for a missing file, a failure for a directory or an unreadable file, and invalid for a path that can't name a file.

^911

writeFile is atomic, and replies done only when the bytes are there

assumeassumed
Does

writeFile answers done only when the file then holds exactly the bytes, creating missing directories; a reader alongside sees the old bytes or the new ones, never a mix; a failed write leaves the old file unchanged; a path that can't name a file is invalid.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 5k
The trusted-base fuzzer's effects.write-file held in 5,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:56 · hostWriteFile · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostWriteFile

lean/Cairn/Fuzz/Trusted/Claims.lean:56
hostWriteFile : Claims.Assumption

^911 writeFile is atomic, and replies done only when the bytes are there (assumption)

writeFile answers done only when the file then holds exactly the bytes, creating missing directories; a reader alongside sees the old bytes or the new ones, never a mix; a failed write leaves the old file unchanged; a path that can't name a file is invalid.

def

Cairn.Fuzz.Trusted.Claims.hostWriteFile.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:56
statement : Prop

Assumed, never proved (^911 writeFile is atomic, and replies done only when the bytes are there): writeFile answers done only when the file then holds exactly the bytes, creating missing directories; a reader alongside sees the old bytes or the new ones, never a mix; a failed write leaves the old file unchanged; a path that can't name a file is invalid.

def

Cairn.Fuzz.Trusted.Claims.hostWriteFile.info

lean/Cairn/Fuzz/Trusted/Claims.lean:56
info : ClaimInfo

The human half of claim ^911.

^912

playSound starts a known sound and refuses an unknown one

assumeassumed
Does

playSound finds every system sound by its name and answers done once it starts; any other name is answered notFound, once, without playing anything.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 5k
The trusted-base fuzzer's effects.sound held in 5,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:60 · hostPlaySound · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostPlaySound.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:60
statement : Prop

Assumed, never proved (^912 playSound starts a known sound and refuses an unknown one): playSound finds every system sound by its name and answers done once it starts; any other name is answered notFound, once, without playing anything.

def

Cairn.Fuzz.Trusted.Claims.hostPlaySound.info

lean/Cairn/Fuzz/Trusted/Claims.lean:60
info : ClaimInfo

The human half of claim ^912.

def

Cairn.Fuzz.Trusted.Claims.hostPlaySound

lean/Cairn/Fuzz/Trusted/Claims.lean:60
hostPlaySound : Claims.Assumption

^912 playSound starts a known sound and refuses an unknown one (assumption)

playSound finds every system sound by its name and answers done once it starts; any other name is answered notFound, once, without playing anything.

^913

http sends the request as given and returns the response as received

assumeretired

Retired: Reissued as ^974: http gained a secret header and captured reply fields (#205), so a request with them is no longer sent and answered exactly as given; a published claim keeps its statement.

lean/Cairn/Fuzz/Trusted/Claims.lean:64 · retired_913 · ledger: retired

1 generated declaration
def

Cairn.Fuzz.Trusted.Claims.retired_913

lean/Cairn/Fuzz/Trusted/Claims.lean:64
retired_913 : ClaimInfo

The human half of claim ^913.

^914

The host answers every request exactly once, with its id

assumeassumed
Does

Every request the host runs is answered at most once and, when its handler answers, exactly once, under its own id with the handler's first answer; a kind with no handler is answered invalid; after the app starts over no answer to an earlier request is sent.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 1.0k
The trusted-base fuzzer's effects.reply-once held in 1,031 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:66 · hostReplyOnce · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostReplyOnce.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:66
statement : Prop

Assumed, never proved (^914 The host answers every request exactly once, with its id): Every request the host runs is answered at most once and, when its handler answers, exactly once, under its own id with the handler's first answer; a kind with no handler is answered invalid; after the app starts over no answer to an earlier request is sent.

def

Cairn.Fuzz.Trusted.Claims.hostReplyOnce.info

lean/Cairn/Fuzz/Trusted/Claims.lean:66
info : ClaimInfo

The human half of claim ^914.

def

Cairn.Fuzz.Trusted.Claims.hostReplyOnce

lean/Cairn/Fuzz/Trusted/Claims.lean:66
hostReplyOnce : Claims.Assumption

^914 The host answers every request exactly once, with its id (assumption)

Every request the host runs is answered at most once and, when its handler answers, exactly once, under its own id with the handler's first answer; a kind with no handler is answered invalid; after the app starts over no answer to an earlier request is sent.

^915

every ms ticks while started and never after it is stopped

assumeassumed
Does

An every subscription ticks under its id only while it is started and not yet stopped, at most once per period, and the host's running subscriptions are exactly those the frames started and did not stop.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 969
The trusted-base fuzzer's subs.every held in 969 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:70 · hostEvery · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostEvery

lean/Cairn/Fuzz/Trusted/Claims.lean:70
hostEvery : Claims.Assumption

^915 every ms ticks while started and never after it is stopped (assumption)

An every subscription ticks under its id only while it is started and not yet stopped, at most once per period, and the host's running subscriptions are exactly those the frames started and did not stop.

def

Cairn.Fuzz.Trusted.Claims.hostEvery.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:70
statement : Prop

Assumed, never proved (^915 every ms ticks while started and never after it is stopped): An every subscription ticks under its id only while it is started and not yet stopped, at most once per period, and the host's running subscriptions are exactly those the frames started and did not stop.

def

Cairn.Fuzz.Trusted.Claims.hostEvery.info

lean/Cairn/Fuzz/Trusted/Claims.lean:70
info : ClaimInfo

The human half of claim ^915.

^940

The native menu shows exactly the frame's menu records

assumeassumed
Does

After each frame, a status item's NSMenu tree holds the frame's menu records in order: each item's title, enabled state, checkmark, key equivalent and ref, separators where they are, each submenu under its item with its own records, and status lines shown but not actionable; updating it in place or rebuilding it gives the same tree.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 2k
The trusted-base fuzzer's menu.render held in 2,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:156 · hostMenuRender · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostMenuRender.info

lean/Cairn/Fuzz/Trusted/Claims.lean:156
info : ClaimInfo

The human half of claim ^940.

def

Cairn.Fuzz.Trusted.Claims.hostMenuRender.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:156
statement : Prop

Assumed, never proved (^940 The native menu shows exactly the frame's menu records): After each frame, a status item's NSMenu tree holds the frame's menu records in order: each item's title, enabled state, checkmark, key equivalent and ref, separators where they are, each submenu under its item with its own records, and status lines shown but not actionable; updating it in place or rebuilding it gives the same tree.

def

Cairn.Fuzz.Trusted.Claims.hostMenuRender

lean/Cairn/Fuzz/Trusted/Claims.lean:156
hostMenuRender : Claims.Assumption

^940 The native menu shows exactly the frame's menu records (assumption)

After each frame, a status item's NSMenu tree holds the frame's menu records in order: each item's title, enabled state, checkmark, key equivalent and ref, separators where they are, each submenu under its item with its own records, and status lines shown but not actionable; updating it in place or rebuilding it gives the same tree.

^941

Choosing a menu item reports that item's ref

assumeassumed
Does

When AppKit performs a menu item's action, the host sends exactly one menuSelect with the status item's place and that item's ref, and nothing for a status line, separator or submenu; Lean checks the ref against the menu it is showing (menu_select_stale).

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 1.4k
The trusted-base fuzzer's menu.select held in 1,353 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:160 · hostMenuSelect · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostMenuSelect.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:160
statement : Prop

Assumed, never proved (^941 Choosing a menu item reports that item's ref): When AppKit performs a menu item's action, the host sends exactly one menuSelect with the status item's place and that item's ref, and nothing for a status line, separator or submenu; Lean checks the ref against the menu it is showing (menu_select_stale).

def

Cairn.Fuzz.Trusted.Claims.hostMenuSelect

lean/Cairn/Fuzz/Trusted/Claims.lean:160
hostMenuSelect : Claims.Assumption

^941 Choosing a menu item reports that item's ref (assumption)

When AppKit performs a menu item's action, the host sends exactly one menuSelect with the status item's place and that item's ref, and nothing for a status line, separator or submenu; Lean checks the ref against the menu it is showing (menu_select_stale).

def

Cairn.Fuzz.Trusted.Claims.hostMenuSelect.info

lean/Cairn/Fuzz/Trusted/Claims.lean:160
info : ClaimInfo

The human half of claim ^941.

^942

Opening and closing the menu are reported once each

assumeassumed
Does

When the status item's menu opens the host sends one menuOpen with its place, and one menuClose when it closes; submenus opening and closing send nothing.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 2k
The trusted-base fuzzer's menu.open-close held in 2,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:164 · hostMenuOpenClose · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostMenuOpenClose

lean/Cairn/Fuzz/Trusted/Claims.lean:164
hostMenuOpenClose : Claims.Assumption

^942 Opening and closing the menu are reported once each (assumption)

When the status item's menu opens the host sends one menuOpen with its place, and one menuClose when it closes; submenus opening and closing send nothing.

def

Cairn.Fuzz.Trusted.Claims.hostMenuOpenClose.info

lean/Cairn/Fuzz/Trusted/Claims.lean:164
info : ClaimInfo

The human half of claim ^942.

def

Cairn.Fuzz.Trusted.Claims.hostMenuOpenClose.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:164
statement : Prop

Assumed, never proved (^942 Opening and closing the menu are reported once each): When the status item's menu opens the host sends one menuOpen with its place, and one menuClose when it closes; submenus opening and closing send nothing.

^943

An overlay panel never takes focus or clicks

assumeassumed
Does

Every overlay panel is a non-activating panel that cannot become key or main, ignores the mouse, sits at status-bar level on every Space and over full-screen apps, is not hidden when the app deactivates and is transparent, whatever frames it is given.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 2k
The trusted-base fuzzer's panel.inert held in 2,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:168 · hostPanelInert · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostPanelInert.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:168
statement : Prop

Assumed, never proved (^943 An overlay panel never takes focus or clicks): Every overlay panel is a non-activating panel that cannot become key or main, ignores the mouse, sits at status-bar level on every Space and over full-screen apps, is not hidden when the app deactivates and is transparent, whatever frames it is given.

def

Cairn.Fuzz.Trusted.Claims.hostPanelInert.info

lean/Cairn/Fuzz/Trusted/Claims.lean:168
info : ClaimInfo

The human half of claim ^943.

def

Cairn.Fuzz.Trusted.Claims.hostPanelInert

lean/Cairn/Fuzz/Trusted/Claims.lean:168
hostPanelInert : Claims.Assumption

^943 An overlay panel never takes focus or clicks (assumption)

Every overlay panel is a non-activating panel that cannot become key or main, ignores the mouse, sits at status-bar level on every Space and over full-screen apps, is not hidden when the app deactivates and is transparent, whatever frames it is given.

^944

An overlay panel is where its anchor says

assumeassumed
Does

A shown panel's frame has its canvas's size, horizontally centred in the chosen screen's visible frame and the anchor's offset above its bottom, on whole points; the screen is chosen when it appears and kept until it is hidden.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 2k
The trusted-base fuzzer's panel.place held in 2,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:172 · hostPanelPlace · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostPanelPlace.info

lean/Cairn/Fuzz/Trusted/Claims.lean:172
info : ClaimInfo

The human half of claim ^944.

def

Cairn.Fuzz.Trusted.Claims.hostPanelPlace.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:172
statement : Prop

Assumed, never proved (^944 An overlay panel is where its anchor says): A shown panel's frame has its canvas's size, horizontally centred in the chosen screen's visible frame and the anchor's offset above its bottom, on whole points; the screen is chosen when it appears and kept until it is hidden.

def

Cairn.Fuzz.Trusted.Claims.hostPanelPlace

lean/Cairn/Fuzz/Trusted/Claims.lean:172
hostPanelPlace : Claims.Assumption

^944 An overlay panel is where its anchor says (assumption)

A shown panel's frame has its canvas's size, horizontally centred in the chosen screen's visible frame and the anchor's offset above its bottom, on whole points; the screen is chosen when it appears and kept until it is hidden.

^945

A control's menu shows exactly the frame's menu records

assumeassumed
Does

While the window's frame record shows a control's menu (its status: the owner and the menu records), the host's native menu for it holds those records as a status item's does (^940), for that owner, at the window's place; a frame with no menu records shows none.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:176 · hostControlMenuRender · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostControlMenuRender

lean/Cairn/Fuzz/Trusted/Claims.lean:176
hostControlMenuRender : Claims.Assumption

^945 A control's menu shows exactly the frame's menu records (assumption)

While the window's frame record shows a control's menu (its status: the owner and the menu records), the host's native menu for it holds those records as a status item's does (^940), for that owner, at the window's place; a frame with no menu records shows none.

def

Cairn.Fuzz.Trusted.Claims.hostControlMenuRender.info

lean/Cairn/Fuzz/Trusted/Claims.lean:176
info : ClaimInfo

The human half of claim ^945.

def

Cairn.Fuzz.Trusted.Claims.hostControlMenuRender.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:176
statement : Prop

Assumed, never proved (^945 A control's menu shows exactly the frame's menu records): While the window's frame record shows a control's menu (its status: the owner and the menu records), the host's native menu for it holds those records as a status item's does (^940), for that owner, at the window's place; a frame with no menu records shows none.

^946

Choosing a control menu's item reports its ref, then the close

assumeassumed
Does

When AppKit performs an item's action in a control's menu, the host sends exactly one menuSelect with the window's place and that item's ref, and nothing for a status line, separator or submenu; when the menu closes, chosen from or not, it sends one menuClose with the window's place, after any menuSelect.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:180 · hostControlMenuSelect · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostControlMenuSelect

lean/Cairn/Fuzz/Trusted/Claims.lean:180
hostControlMenuSelect : Claims.Assumption

^946 Choosing a control menu's item reports its ref, then the close (assumption)

When AppKit performs an item's action in a control's menu, the host sends exactly one menuSelect with the window's place and that item's ref, and nothing for a status line, separator or submenu; when the menu closes, chosen from or not, it sends one menuClose with the window's place, after any menuSelect.

def

Cairn.Fuzz.Trusted.Claims.hostControlMenuSelect.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:180
statement : Prop

Assumed, never proved (^946 Choosing a control menu's item reports its ref, then the close): When AppKit performs an item's action in a control's menu, the host sends exactly one menuSelect with the window's place and that item's ref, and nothing for a status line, separator or submenu; when the menu closes, chosen from or not, it sends one menuClose with the window's place, after any menuSelect.

def

Cairn.Fuzz.Trusted.Claims.hostControlMenuSelect.info

lean/Cairn/Fuzz/Trusted/Claims.lean:180
info : ClaimInfo

The human half of claim ^946.

^947

The host shows a control menu only while Lean has it open

assumeassumed
Does

The host shows a control's menu exactly when the last frame shows one, except that after the host closed it, a frame that does not yet account for that close (its events are numbered below the close) does not open it again; a frame without the menu, or without a window, dismisses one that is open.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:184 · hostControlMenuDismiss · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostControlMenuDismiss.info

lean/Cairn/Fuzz/Trusted/Claims.lean:184
info : ClaimInfo

The human half of claim ^947.

def

Cairn.Fuzz.Trusted.Claims.hostControlMenuDismiss.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:184
statement : Prop

Assumed, never proved (^947 The host shows a control menu only while Lean has it open): The host shows a control's menu exactly when the last frame shows one, except that after the host closed it, a frame that does not yet account for that close (its events are numbered below the close) does not open it again; a frame without the menu, or without a window, dismisses one that is open.

def

Cairn.Fuzz.Trusted.Claims.hostControlMenuDismiss

lean/Cairn/Fuzz/Trusted/Claims.lean:184
hostControlMenuDismiss : Claims.Assumption

^947 The host shows a control menu only while Lean has it open (assumption)

The host shows a control's menu exactly when the last frame shows one, except that after the host closed it, a frame that does not yet account for that close (its events are numbered below the close) does not open it again; a frame without the menu, or without a window, dismisses one that is open.

^948

AXShowMenu opens a control's menu as a right click does

assumeassumed
Does

An assistive app may perform AXShowMenu on exactly the AX elements of controls with a menu, and doing so sends a secondary click (move, down, up) at the node's centre, then puts the pointer back; a control that is a menu button is an AXMenuButton.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:188 · hostAxShowMenu · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostAxShowMenu.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:188
statement : Prop

Assumed, never proved (^948 AXShowMenu opens a control's menu as a right click does): An assistive app may perform AXShowMenu on exactly the AX elements of controls with a menu, and doing so sends a secondary click (move, down, up) at the node's centre, then puts the pointer back; a control that is a menu button is an AXMenuButton.

def

Cairn.Fuzz.Trusted.Claims.hostAxShowMenu

lean/Cairn/Fuzz/Trusted/Claims.lean:188
hostAxShowMenu : Claims.Assumption

^948 AXShowMenu opens a control's menu as a right click does (assumption)

An assistive app may perform AXShowMenu on exactly the AX elements of controls with a menu, and doing so sends a secondary click (move, down, up) at the node's centre, then puts the pointer back; a control that is a menu button is an AXMenuButton.

def

Cairn.Fuzz.Trusted.Claims.hostAxShowMenu.info

lean/Cairn/Fuzz/Trusted/Claims.lean:188
info : ClaimInfo

The human half of claim ^948.

^949

The menu bar shows the app's menu items

assumeassumed
Does

After each frame with a menuBar surface, each of its top-level submenus is a menu in the main menu before the host's Window menu, with its records as a status item's menu has them (^940), and every other top-level entry is at the top of the app menu, in order, followed by a separator and the host's own Hide and Quit, unchanged; Edit and Window stay where they are.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:192 · hostMenuBarRender · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostMenuBarRender.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:192
statement : Prop

Assumed, never proved (^949 The menu bar shows the app's menu items): After each frame with a menuBar surface, each of its top-level submenus is a menu in the main menu before the host's Window menu, with its records as a status item's menu has them (^940), and every other top-level entry is at the top of the app menu, in order, followed by a separator and the host's own Hide and Quit, unchanged; Edit and Window stay where they are.

def

Cairn.Fuzz.Trusted.Claims.hostMenuBarRender.info

lean/Cairn/Fuzz/Trusted/Claims.lean:192
info : ClaimInfo

The human half of claim ^949.

def

Cairn.Fuzz.Trusted.Claims.hostMenuBarRender

lean/Cairn/Fuzz/Trusted/Claims.lean:192
hostMenuBarRender : Claims.Assumption

^949 The menu bar shows the app's menu items (assumption)

After each frame with a menuBar surface, each of its top-level submenus is a menu in the main menu before the host's Window menu, with its records as a status item's menu has them (^940), and every other top-level entry is at the top of the app menu, in order, followed by a separator and the host's own Hide and Quit, unchanged; Edit and Window stay where they are.

^950

A menu bar item, by click or key equivalent, reports that item's ref

assumeassumed
Does

When AppKit performs an enabled menu bar item's action, chosen with the pointer or by its key equivalent (NSMenu.performKeyEquivalent with the keys a keyboard gives, a capital for a shifted letter), the host sends exactly one menuSelect with the menuBar surface's place and that item's ref; the key equivalent of a greyed item sends nothing.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:196 · hostMenuBarSelect · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostMenuBarSelect.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:196
statement : Prop

Assumed, never proved (^950 A menu bar item, by click or key equivalent, reports that item's ref): When AppKit performs an enabled menu bar item's action, chosen with the pointer or by its key equivalent (NSMenu.performKeyEquivalent with the keys a keyboard gives, a capital for a shifted letter), the host sends exactly one menuSelect with the menuBar surface's place and that item's ref; the key equivalent of a greyed item sends nothing.

def

Cairn.Fuzz.Trusted.Claims.hostMenuBarSelect.info

lean/Cairn/Fuzz/Trusted/Claims.lean:196
info : ClaimInfo

The human half of claim ^950.

def

Cairn.Fuzz.Trusted.Claims.hostMenuBarSelect

lean/Cairn/Fuzz/Trusted/Claims.lean:196
hostMenuBarSelect : Claims.Assumption

^950 A menu bar item, by click or key equivalent, reports that item's ref (assumption)

When AppKit performs an enabled menu bar item's action, chosen with the pointer or by its key equivalent (NSMenu.performKeyEquivalent with the keys a keyboard gives, a capital for a shifted letter), the host sends exactly one menuSelect with the menuBar surface's place and that item's ref; the key equivalent of a greyed item sends nothing.

^960

appendFile adds exactly the bytes at the end, or fails and adds nothing

assumeassumed
Does

appendFile answers done only when the file then holds its old bytes followed by exactly the new ones, creating the file with mode 600 and missing directories; appends from several threads each land whole; a directory, a path under a file, a read-only file and a path that can't name a file fail and leave the file unchanged.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 212
The trusted-base fuzzer's effects.append-file held in 212 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:76 · hostAppendFile · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostAppendFile.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:76
statement : Prop

Assumed, never proved (^960 appendFile adds exactly the bytes at the end, or fails and adds nothing): appendFile answers done only when the file then holds its old bytes followed by exactly the new ones, creating the file with mode 600 and missing directories; appends from several threads each land whole; a directory, a path under a file, a read-only file and a path that can't name a file fail and leave the file unchanged.

def

Cairn.Fuzz.Trusted.Claims.hostAppendFile

lean/Cairn/Fuzz/Trusted/Claims.lean:76
hostAppendFile : Claims.Assumption

^960 appendFile adds exactly the bytes at the end, or fails and adds nothing (assumption)

appendFile answers done only when the file then holds its old bytes followed by exactly the new ones, creating the file with mode 600 and missing directories; appends from several threads each land whole; a directory, a path under a file, a read-only file and a path that can't name a file fail and leave the file unchanged.

def

Cairn.Fuzz.Trusted.Claims.hostAppendFile.info

lean/Cairn/Fuzz/Trusted/Claims.lean:76
info : ClaimInfo

The human half of claim ^960.

^961

listDir lists exactly the directory's names, sorted

assumeassumed
Does

listDir answers with exactly the names in the directory, without . and .., sorted by their UTF-8 bytes; a missing directory is notFound, a file invalid, an unreadable directory denied.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 217
The trusted-base fuzzer's effects.list-dir held in 217 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:80 · hostListDir · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostListDir

lean/Cairn/Fuzz/Trusted/Claims.lean:80
hostListDir : Claims.Assumption

^961 listDir lists exactly the directory's names, sorted (assumption)

listDir answers with exactly the names in the directory, without . and .., sorted by their UTF-8 bytes; a missing directory is notFound, a file invalid, an unreadable directory denied.

def

Cairn.Fuzz.Trusted.Claims.hostListDir.info

lean/Cairn/Fuzz/Trusted/Claims.lean:80
info : ClaimInfo

The human half of claim ^961.

def

Cairn.Fuzz.Trusted.Claims.hostListDir.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:80
statement : Prop

Assumed, never proved (^961 listDir lists exactly the directory's names, sorted): listDir answers with exactly the names in the directory, without . and .., sorted by their UTF-8 bytes; a missing directory is notFound, a file invalid, an unreadable directory denied.

^962

deleteFile removes a file or a link, never a directory

assumeassumed
Does

deleteFile answers done only when the file or link (not its target) is gone, notFound when there is none, invalid for a directory, which stays, and denied when its directory is read-only, leaving the file.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 190
The trusted-base fuzzer's effects.delete-file held in 190 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:84 · hostDeleteFile · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostDeleteFile

lean/Cairn/Fuzz/Trusted/Claims.lean:84
hostDeleteFile : Claims.Assumption

^962 deleteFile removes a file or a link, never a directory (assumption)

deleteFile answers done only when the file or link (not its target) is gone, notFound when there is none, invalid for a directory, which stays, and denied when its directory is read-only, leaving the file.

def

Cairn.Fuzz.Trusted.Claims.hostDeleteFile.info

lean/Cairn/Fuzz/Trusted/Claims.lean:84
info : ClaimInfo

The human half of claim ^962.

def

Cairn.Fuzz.Trusted.Claims.hostDeleteFile.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:84
statement : Prop

Assumed, never proved (^962 deleteFile removes a file or a link, never a directory): deleteFile answers done only when the file or link (not its target) is gone, notFound when there is none, invalid for a directory, which stays, and denied when its directory is read-only, leaving the file.

^963

watchFile reports every change to its file, and nothing after its stop

assumeassumed
Does

While a watchFile subscription runs, every write, replacement, append, creation, removal, touch or mode change of its file is followed by a changed event within a few polls, an untouched file brings none, and after its stop has been handled none is sent.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 197
The trusted-base fuzzer's subs.watch-file held in 197 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:88 · hostWatchFile · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostWatchFile.info

lean/Cairn/Fuzz/Trusted/Claims.lean:88
info : ClaimInfo

The human half of claim ^963.

def

Cairn.Fuzz.Trusted.Claims.hostWatchFile

lean/Cairn/Fuzz/Trusted/Claims.lean:88
hostWatchFile : Claims.Assumption

^963 watchFile reports every change to its file, and nothing after its stop (assumption)

While a watchFile subscription runs, every write, replacement, append, creation, removal, touch or mode change of its file is followed by a changed event within a few polls, an untouched file brings none, and after its stop has been handled none is sent.

def

Cairn.Fuzz.Trusted.Claims.hostWatchFile.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:88
statement : Prop

Assumed, never proved (^963 watchFile reports every change to its file, and nothing after its stop): While a watchFile subscription runs, every write, replacement, append, creation, removal, touch or mode change of its file is followed by a changed event within a few polls, an untouched file brings none, and after its stop has been handled none is sent.

^964

frontmostApp answers the app in front

assumeassumed
Does

frontmostApp answers with the process id and name of the app the system reports in front, notFound when there is none; the pid names a running process.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 5k
The trusted-base fuzzer's effects.frontmost-app held in 5,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:92 · hostFrontmostApp · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostFrontmostApp.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:92
statement : Prop

Assumed, never proved (^964 frontmostApp answers the app in front): frontmostApp answers with the process id and name of the app the system reports in front, notFound when there is none; the pid names a running process.

def

Cairn.Fuzz.Trusted.Claims.hostFrontmostApp.info

lean/Cairn/Fuzz/Trusted/Claims.lean:92
info : ClaimInfo

The human half of claim ^964.

def

Cairn.Fuzz.Trusted.Claims.hostFrontmostApp

lean/Cairn/Fuzz/Trusted/Claims.lean:92
hostFrontmostApp : Claims.Assumption

^964 frontmostApp answers the app in front (assumption)

frontmostApp answers with the process id and name of the app the system reports in front, notFound when there is none; the pid names a running process.

^965

permission answers whether the app holds it, and prompts only when asked

assumeassumed
Does

permission answers flag true exactly when the app holds Accessibility (AXIsProcessTrusted) or the microphone (authorized); the system is asked to prompt only when prompt is set, the microphone only while undecided, answering with the person's choice; each request is answered once.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 5k
The trusted-base fuzzer's effects.permission held in 5,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:96 · hostPermission · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostPermission

lean/Cairn/Fuzz/Trusted/Claims.lean:96
hostPermission : Claims.Assumption

^965 permission answers whether the app holds it, and prompts only when asked (assumption)

permission answers flag true exactly when the app holds Accessibility (AXIsProcessTrusted) or the microphone (authorized); the system is asked to prompt only when prompt is set, the microphone only while undecided, answering with the person's choice; each request is answered once.

def

Cairn.Fuzz.Trusted.Claims.hostPermission.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:96
statement : Prop

Assumed, never proved (^965 permission answers whether the app holds it, and prompts only when asked): permission answers flag true exactly when the app holds Accessibility (AXIsProcessTrusted) or the microphone (authorized); the system is asked to prompt only when prompt is set, the microphone only while undecided, answering with the person's choice; each request is answered once.

def

Cairn.Fuzz.Trusted.Claims.hostPermission.info

lean/Cairn/Fuzz/Trusted/Claims.lean:96
info : ClaimInfo

The human half of claim ^965.

^966

record streams the levels of exactly the samples it keeps, and nothing after its stop

assumeassumed
Does

While a record subscription runs, its audio events count every sample the clip keeps, in order, and their windows are the 20 ms levels (sum of squares and peak of each 320 samples) of those samples from the start of the clip, however the microphone split them; after its stop has been handled none is sent and the clip is finished; a microphone that can't start (no permission, no device) is one failed event and an empty clip, and the microphone is never started without the permission.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 2.5k
The trusted-base fuzzer's subs.record held in 2,500 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:100 · hostRecord · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostRecord

lean/Cairn/Fuzz/Trusted/Claims.lean:100
hostRecord : Claims.Assumption

^966 record streams the levels of exactly the samples it keeps, and nothing after its stop (assumption)

While a record subscription runs, its audio events count every sample the clip keeps, in order, and their windows are the 20 ms levels (sum of squares and peak of each 320 samples) of those samples from the start of the clip, however the microphone split them; after its stop has been handled none is sent and the clip is finished; a microphone that can't start (no permission, no device) is one failed event and an empty clip, and the microphone is never started without the permission.

def

Cairn.Fuzz.Trusted.Claims.hostRecord.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:100
statement : Prop

Assumed, never proved (^966 record streams the levels of exactly the samples it keeps, and nothing after its stop): While a record subscription runs, its audio events count every sample the clip keeps, in order, and their windows are the 20 ms levels (sum of squares and peak of each 320 samples) of those samples from the start of the clip, however the microphone split them; after its stop has been handled none is sent and the clip is finished; a microphone that can't start (no permission, no device) is one failed event and an empty clip, and the microphone is never started without the permission.

def

Cairn.Fuzz.Trusted.Claims.hostRecord.info

lean/Cairn/Fuzz/Trusted/Claims.lean:100
info : ClaimInfo

The human half of claim ^966.

^967

A clip's WAV for a range of windows holds exactly those samples

assumeassumed
Does

An upload's wav part for clip c and windows s to e is a 16 kHz mono 16-bit RIFF/WAVE file of exactly samples 320 s to 320 e of the clip (to the end of the clip when e is none, waiting for a clip whose recording is being stopped); a range past the end or backwards is invalid, an unknown or forgotten clip notFound, and forgetClip answers done once and notFound after.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 2.5k
The trusted-base fuzzer's effects.clip-wav held in 2,500 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:108 · hostClipWav · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostClipWav

lean/Cairn/Fuzz/Trusted/Claims.lean:108
hostClipWav : Claims.Assumption

^967 A clip's WAV for a range of windows holds exactly those samples (assumption)

An upload's wav part for clip c and windows s to e is a 16 kHz mono 16-bit RIFF/WAVE file of exactly samples 320 s to 320 e of the clip (to the end of the clip when e is none, waiting for a clip whose recording is being stopped); a range past the end or backwards is invalid, an unknown or forgotten clip notFound, and forgetClip answers done once and notFound after.

def

Cairn.Fuzz.Trusted.Claims.hostClipWav.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:108
statement : Prop

Assumed, never proved (^967 A clip's WAV for a range of windows holds exactly those samples): An upload's wav part for clip c and windows s to e is a 16 kHz mono 16-bit RIFF/WAVE file of exactly samples 320 s to 320 e of the clip (to the end of the clip when e is none, waiting for a clip whose recording is being stopped); a range past the end or backwards is invalid, an unknown or forgotten clip notFound, and forgetClip answers done once and notFound after.

def

Cairn.Fuzz.Trusted.Claims.hostClipWav.info

lean/Cairn/Fuzz/Trusted/Claims.lean:108
info : ClaimInfo

The human half of claim ^967.

^968

globalKey reports the hotkey's press and release, and other keys while it is held

assumeassumed
Does

A globalKey subscription reports keyDown and keyUp of the hotkey and otherKey for any other key pressed while it is down, as Yap's PushToTalk does (a modifier by its flag in flagsChanged, an ordinary key by key down without repeats and key up, no repeated state), with monotonic times; without Accessibility it reports failed denied and installs nothing; after its stop has been handled none is sent.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 5k
The trusted-base fuzzer's subs.global-key held in 5,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:112 · hostGlobalKey · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostGlobalKey

lean/Cairn/Fuzz/Trusted/Claims.lean:112
hostGlobalKey : Claims.Assumption

^968 globalKey reports the hotkey's press and release, and other keys while it is held (assumption)

A globalKey subscription reports keyDown and keyUp of the hotkey and otherKey for any other key pressed while it is down, as Yap's PushToTalk does (a modifier by its flag in flagsChanged, an ordinary key by key down without repeats and key up, no repeated state), with monotonic times; without Accessibility it reports failed denied and installs nothing; after its stop has been handled none is sent.

def

Cairn.Fuzz.Trusted.Claims.hostGlobalKey.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:112
statement : Prop

Assumed, never proved (^968 globalKey reports the hotkey's press and release, and other keys while it is held): A globalKey subscription reports keyDown and keyUp of the hotkey and otherKey for any other key pressed while it is down, as Yap's PushToTalk does (a modifier by its flag in flagsChanged, an ordinary key by key down without repeats and key up, no repeated state), with monotonic times; without Accessibility it reports failed denied and installs nothing; after its stop has been handled none is sent.

def

Cairn.Fuzz.Trusted.Claims.hostGlobalKey.info

lean/Cairn/Fuzz/Trusted/Claims.lean:112
info : ClaimInfo

The human half of claim ^968.

^969

typeText types exactly the text into that app, or nothing

assumeassumed
Does

typeText posts the text as key events whose payloads, in order, are exactly its UTF-16 units, at most 20 per event and never splitting a character, then Return only when asked, and only after the app with that pid is in front; empty text is invalid, no Accessibility denied, no such app notFound and an app that won't come forward failed, and then nothing is posted.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 5k
The trusted-base fuzzer's effects.type-text held in 5,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:116 · hostTypeText · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostTypeText.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:116
statement : Prop

Assumed, never proved (^969 typeText types exactly the text into that app, or nothing): typeText posts the text as key events whose payloads, in order, are exactly its UTF-16 units, at most 20 per event and never splitting a character, then Return only when asked, and only after the app with that pid is in front; empty text is invalid, no Accessibility denied, no such app notFound and an app that won't come forward failed, and then nothing is posted.

def

Cairn.Fuzz.Trusted.Claims.hostTypeText.info

lean/Cairn/Fuzz/Trusted/Claims.lean:116
info : ClaimInfo

The human half of claim ^969.

def

Cairn.Fuzz.Trusted.Claims.hostTypeText

lean/Cairn/Fuzz/Trusted/Claims.lean:116
hostTypeText : Claims.Assumption

^969 typeText types exactly the text into that app, or nothing (assumption)

typeText posts the text as key events whose payloads, in order, are exactly its UTF-16 units, at most 20 per event and never splitting a character, then Return only when asked, and only after the app with that pid is in front; empty text is invalid, no Accessibility denied, no such app notFound and an app that won't come forward failed, and then nothing is posted.

^970

upload sends the body assembled from its parts, with the secret in its header

assumeassumed
Does

upload sends one request whose body is its parts in order, each wav part replaced by the clip's WAV, with its headers and, for a secret, the header scheme ++ value; a missing clip, bad range or missing secret fails before anything is sent; otherwise it answers as http does.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 4.4k
The trusted-base fuzzer's effects.upload held in 4,398 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:120 · hostUpload · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostUpload.info

lean/Cairn/Fuzz/Trusted/Claims.lean:120
info : ClaimInfo

The human half of claim ^970.

def

Cairn.Fuzz.Trusted.Claims.hostUpload

lean/Cairn/Fuzz/Trusted/Claims.lean:120
hostUpload : Claims.Assumption

^970 upload sends the body assembled from its parts, with the secret in its header (assumption)

upload sends one request whose body is its parts in order, each wav part replaced by the clip's WAV, with its headers and, for a secret, the header scheme ++ value; a missing clip, bad range or missing secret fails before anything is sent; otherwise it answers as http does.

def

Cairn.Fuzz.Trusted.Claims.hostUpload.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:120
statement : Prop

Assumed, never proved (^970 upload sends the body assembled from its parts, with the secret in its header): upload sends one request whose body is its parts in order, each wav part replaced by the clip's WAV, with its headers and, for a secret, the header scheme ++ value; a missing clip, bad range or missing secret fails before anything is sent; otherwise it answers as http does.

^971

A secret is read from the environment or its file, and never shown

assumeretired

Retired: Reissued as ^975 for environment secrets: a secret can now also be a Keychain item (^972, #205); a published claim keeps its statement.

lean/Cairn/Fuzz/Trusted/Claims.lean:124 · retired_971 · ledger: retired

1 generated declaration
def

Cairn.Fuzz.Trusted.Claims.retired_971

lean/Cairn/Fuzz/Trusted/Claims.lean:124
retired_971 : ClaimInfo

The human half of claim ^971.

^972

The Keychain keeps what it was given for this app

assumeassumed
Does

The host's Keychain store keeps one generic password item per account, under the app's service (its bundle identifier), in the login keychain (file-based, not synchronized to iCloud, no access group): reading an account gives the value last written to it, exactly, until it is deleted; writing one account changes no other; forgetSecret deletes the item and answers done, also when there was none; a Keychain secret whose item is missing answers failed notFound. Values never appear in a reply, failure message, frame, dump or debug description.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:128 · hostKeychain · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostKeychain.info

lean/Cairn/Fuzz/Trusted/Claims.lean:128
info : ClaimInfo

The human half of claim ^972.

def

Cairn.Fuzz.Trusted.Claims.hostKeychain.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:128
statement : Prop

Assumed, never proved (^972 The Keychain keeps what it was given for this app): The host's Keychain store keeps one generic password item per account, under the app's service (its bundle identifier), in the login keychain (file-based, not synchronized to iCloud, no access group): reading an account gives the value last written to it, exactly, until it is deleted; writing one account changes no other; forgetSecret deletes the item and answers done, also when there was none; a Keychain secret whose item is missing answers failed notFound. Values never appear in a reply, failure message, frame, dump or debug description.

def

Cairn.Fuzz.Trusted.Claims.hostKeychain

lean/Cairn/Fuzz/Trusted/Claims.lean:128
hostKeychain : Claims.Assumption

^972 The Keychain keeps what it was given for this app (assumption)

The host's Keychain store keeps one generic password item per account, under the app's service (its bundle identifier), in the login keychain (file-based, not synchronized to iCloud, no access group): reading an account gives the value last written to it, exactly, until it is deleted; writing one account changes no other; forgetSecret deletes the item and answers done, also when there was none; a Keychain secret whose item is missing answers failed notFound. Values never appear in a reply, failure message, frame, dump or debug description.

^973

Captured reply fields go to the Keychain and never to Lean

assumeassumed
Does

For an http request with captures, a 2xx reply whose body is a JSON object with each listed top-level field present once as a string has each value written exactly to its account's Keychain item, and Lean receives the body with each of those values written as an empty string and every other byte as the server sent it; a body that is not a JSON object, or a listed field that is missing, repeated or not a string, answers failed invalid and writes nothing, and a failed write leaves every item as it was. Any other reply passes through unchanged. A captured value appears in no reply, failure message, frame, dump or debug description.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:132 · hostCapture · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostCapture

lean/Cairn/Fuzz/Trusted/Claims.lean:132
hostCapture : Claims.Assumption

^973 Captured reply fields go to the Keychain and never to Lean (assumption)

For an http request with captures, a 2xx reply whose body is a JSON object with each listed top-level field present once as a string has each value written exactly to its account's Keychain item, and Lean receives the body with each of those values written as an empty string and every other byte as the server sent it; a body that is not a JSON object, or a listed field that is missing, repeated or not a string, answers failed invalid and writes nothing, and a failed write leaves every item as it was. Any other reply passes through unchanged. A captured value appears in no reply, failure message, frame, dump or debug description.

def

Cairn.Fuzz.Trusted.Claims.hostCapture.info

lean/Cairn/Fuzz/Trusted/Claims.lean:132
info : ClaimInfo

The human half of claim ^973.

def

Cairn.Fuzz.Trusted.Claims.hostCapture.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:132
statement : Prop

Assumed, never proved (^973 Captured reply fields go to the Keychain and never to Lean): For an http request with captures, a 2xx reply whose body is a JSON object with each listed top-level field present once as a string has each value written exactly to its account's Keychain item, and Lean receives the body with each of those values written as an empty string and every other byte as the server sent it; a body that is not a JSON object, or a listed field that is missing, repeated or not a string, answers failed invalid and writes nothing, and a failed write leaves every item as it was. Any other reply passes through unchanged. A captured value appears in no reply, failure message, frame, dump or debug description.

^974

http sends the request as given, with its secret header, and returns the response as received

assumeassumed
Does

http sends the method, URL, headers and body as given, plus for a secret the header scheme ++ value, and answers with the response's status, headers sorted by name and body exactly (captured fields aside, ^973); a missing secret is notFound and sends nothing; a request with a secret never follows a redirect, answering the 3xx; a connection failure is network, no answer in time is timeout, and a non-http URL, a bad method, a header (the secret's too) that could inject another, or an empty account is invalid and sends nothing.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:136 · hostHttpSecret · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostHttpSecret.info

lean/Cairn/Fuzz/Trusted/Claims.lean:136
info : ClaimInfo

The human half of claim ^974.

def

Cairn.Fuzz.Trusted.Claims.hostHttpSecret

lean/Cairn/Fuzz/Trusted/Claims.lean:136
hostHttpSecret : Claims.Assumption

^974 http sends the request as given, with its secret header, and returns the response as received (assumption)

http sends the method, URL, headers and body as given, plus for a secret the header scheme ++ value, and answers with the response's status, headers sorted by name and body exactly (captured fields aside, ^973); a missing secret is notFound and sends nothing; a request with a secret never follows a redirect, answering the 3xx; a connection failure is network, no answer in time is timeout, and a non-http URL, a bad method, a header (the secret's too) that could inject another, or an empty account is invalid and sends nothing.

def

Cairn.Fuzz.Trusted.Claims.hostHttpSecret.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:136
statement : Prop

Assumed, never proved (^974 http sends the request as given, with its secret header, and returns the response as received): http sends the method, URL, headers and body as given, plus for a secret the header scheme ++ value, and answers with the response's status, headers sorted by name and body exactly (captured fields aside, ^973); a missing secret is notFound and sends nothing; a request with a secret never follows a redirect, answering the 3xx; a connection failure is network, no answer in time is timeout, and a non-http URL, a bad method, a header (the secret's too) that could inject another, or an empty account is invalid and sends nothing.

^975

An environment secret is read from the environment or its file, and never shown

assumeassumed
Does

An environment secret's value is the environment variable if set and not empty, else its line in the KEY=value file as Yap's Secrets.parseDotEnv reads it (comments, export, quotes, a later line wins); a missing one is failed notFound; the value appears in the request's header and in no reply, failure message or debug description.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:140 · hostEnvSecret · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostEnvSecret

lean/Cairn/Fuzz/Trusted/Claims.lean:140
hostEnvSecret : Claims.Assumption

^975 An environment secret is read from the environment or its file, and never shown (assumption)

An environment secret's value is the environment variable if set and not empty, else its line in the KEY=value file as Yap's Secrets.parseDotEnv reads it (comments, export, quotes, a later line wins); a missing one is failed notFound; the value appears in the request's header and in no reply, failure message or debug description.

def

Cairn.Fuzz.Trusted.Claims.hostEnvSecret.info

lean/Cairn/Fuzz/Trusted/Claims.lean:140
info : ClaimInfo

The human half of claim ^975.

def

Cairn.Fuzz.Trusted.Claims.hostEnvSecret.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:140
statement : Prop

Assumed, never proved (^975 An environment secret is read from the environment or its file, and never shown): An environment secret's value is the environment variable if set and not empty, else its line in the KEY=value file as Yap's Secrets.parseDotEnv reads it (comments, export, quotes, a later line wins); a missing one is failed notFound; the value appears in the request's header and in no reply, failure message or debug description.

^990

Wrapped lines paint as wide as Lean measured them

assumeassumed
Does

On left-to-right text without controls or tabs, each line Lean's wrapping chose, shaped again on its own by the host, is within 1 + ceil(0.15 em) points of the width Lean took from the whole string's carets, and so fits the width up to that slack; laid lines sit at x 0, one line height apart.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 9.4k
The trusted-base fuzzer's text.wrap.painted held in 9,393 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:146 · wrapPainted · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.wrapPainted.info

lean/Cairn/Fuzz/Trusted/Claims.lean:146
info : ClaimInfo

The human half of claim ^990.

def

Cairn.Fuzz.Trusted.Claims.wrapPainted

lean/Cairn/Fuzz/Trusted/Claims.lean:146
wrapPainted : Claims.Assumption

^990 Wrapped lines paint as wide as Lean measured them (assumption)

On left-to-right text without controls or tabs, each line Lean's wrapping chose, shaped again on its own by the host, is within 1 + ceil(0.15 em) points of the width Lean took from the whole string's carets, and so fits the width up to that slack; laid lines sit at x 0, one line height apart.

def

Cairn.Fuzz.Trusted.Claims.wrapPainted.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:146
statement : Prop

Assumed, never proved (^990 Wrapped lines paint as wide as Lean measured them): On left-to-right text without controls or tabs, each line Lean's wrapping chose, shaped again on its own by the host, is within 1 + ceil(0.15 em) points of the width Lean took from the whole string's carets, and so fits the width up to that slack; laid lines sit at x 0, one line height apart.

^991

Lean breaks lines where Core Text would

assumeassumed
Does

On left-to-right letters, digits and spaces, Lean's lines are Core Text's (CTTypesetterSuggestLineBreak, trailing spaces trimmed) except where a line is within one point of the width or a word is cut, where the cut is within two scalars of Core Text's.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 5.0k
The trusted-base fuzzer's text.wrap.coretext held in 4,991 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:150 · wrapCoreText · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.wrapCoreText.info

lean/Cairn/Fuzz/Trusted/Claims.lean:150
info : ClaimInfo

The human half of claim ^991.

def

Cairn.Fuzz.Trusted.Claims.wrapCoreText.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:150
statement : Prop

Assumed, never proved (^991 Lean breaks lines where Core Text would): On left-to-right letters, digits and spaces, Lean's lines are Core Text's (CTTypesetterSuggestLineBreak, trailing spaces trimmed) except where a line is within one point of the width or a word is cut, where the cut is within two scalars of Core Text's.

def

Cairn.Fuzz.Trusted.Claims.wrapCoreText

lean/Cairn/Fuzz/Trusted/Claims.lean:150
wrapCoreText : Claims.Assumption

^991 Lean breaks lines where Core Text would (assumption)

On left-to-right letters, digits and spaces, Lean's lines are Core Text's (CTTypesetterSuggestLineBreak, trailing spaces trimmed) except where a line is within one point of the width or a word is cut, where the cut is within two scalars of Core Text's.

^1000

openItem opens exactly the URL or existing file it names

assumeassumed
Does

openItem with a target that has a URL scheme asks the system to open that URL; with a path (a leading ~/ is the home folder) it opens that file or folder with its default app only when it exists, and answers notFound otherwise; it answers done exactly when the system took it, and an empty target or one with NUL is invalid and opens nothing.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 5k
The trusted-base fuzzer's effects.open-item held in 5,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:202 · hostOpenItem · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostOpenItem

lean/Cairn/Fuzz/Trusted/Claims.lean:202
hostOpenItem : Claims.Assumption

^1000 openItem opens exactly the URL or existing file it names (assumption)

openItem with a target that has a URL scheme asks the system to open that URL; with a path (a leading ~/ is the home folder) it opens that file or folder with its default app only when it exists, and answers notFound otherwise; it answers done exactly when the system took it, and an empty target or one with NUL is invalid and opens nothing.

def

Cairn.Fuzz.Trusted.Claims.hostOpenItem.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:202
statement : Prop

Assumed, never proved (^1000 openItem opens exactly the URL or existing file it names): openItem with a target that has a URL scheme asks the system to open that URL; with a path (a leading ~/ is the home folder) it opens that file or folder with its default app only when it exists, and answers notFound otherwise; it answers done exactly when the system took it, and an empty target or one with NUL is invalid and opens nothing.

def

Cairn.Fuzz.Trusted.Claims.hostOpenItem.info

lean/Cairn/Fuzz/Trusted/Claims.lean:202
info : ClaimInfo

The human half of claim ^1000.

^1001

appRunning answers whether an app with that bundle id runs

assumeassumed
Does

appRunning answers flag true exactly when the system lists a running, not terminated app with that bundle identifier; an empty identifier is invalid.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 5k
The trusted-base fuzzer's effects.app-running held in 5,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:206 · hostAppRunning · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostAppRunning.info

lean/Cairn/Fuzz/Trusted/Claims.lean:206
info : ClaimInfo

The human half of claim ^1001.

def

Cairn.Fuzz.Trusted.Claims.hostAppRunning.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:206
statement : Prop

Assumed, never proved (^1001 appRunning answers whether an app with that bundle id runs): appRunning answers flag true exactly when the system lists a running, not terminated app with that bundle identifier; an empty identifier is invalid.

def

Cairn.Fuzz.Trusted.Claims.hostAppRunning

lean/Cairn/Fuzz/Trusted/Claims.lean:206
hostAppRunning : Claims.Assumption

^1001 appRunning answers whether an app with that bundle id runs (assumption)

appRunning answers flag true exactly when the system lists a running, not terminated app with that bundle identifier; an empty identifier is invalid.

^1002

readDefault answers the default's value as text

assumeassumed
Does

readDefault answers the value CFPreferences holds for the key in the domain as UTF-8 bytes: a string as it is, a boolean as 1 or 0, a number as its decimal text; a missing value is notFound, any other type and an empty domain or key invalid. It never writes a default.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 5k
The trusted-base fuzzer's effects.read-default held in 5,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:210 · hostReadDefault · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostReadDefault.info

lean/Cairn/Fuzz/Trusted/Claims.lean:210
info : ClaimInfo

The human half of claim ^1002.

def

Cairn.Fuzz.Trusted.Claims.hostReadDefault.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:210
statement : Prop

Assumed, never proved (^1002 readDefault answers the default's value as text): readDefault answers the value CFPreferences holds for the key in the domain as UTF-8 bytes: a string as it is, a boolean as 1 or 0, a number as its decimal text; a missing value is notFound, any other type and an empty domain or key invalid. It never writes a default.

def

Cairn.Fuzz.Trusted.Claims.hostReadDefault

lean/Cairn/Fuzz/Trusted/Claims.lean:210
hostReadDefault : Claims.Assumption

^1002 readDefault answers the default's value as text (assumption)

readDefault answers the value CFPreferences holds for the key in the domain as UTF-8 bytes: a string as it is, a boolean as 1 or 0, a number as its decimal text; a missing value is notFound, any other type and an empty domain or key invalid. It never writes a default.

^1003

makeDir makes a private directory and its parents

assumeassumed
Does

makeDir answers done only when the path is then a directory, each directory it made mode 700 whatever the umask, one already there done and left as it was; a file in the way, a path under a file, a read-only parent, NUL and the empty path fail.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 184
The trusted-base fuzzer's effects.make-dir held in 184 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:214 · hostMakeDir · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostMakeDir.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:214
statement : Prop

Assumed, never proved (^1003 makeDir makes a private directory and its parents): makeDir answers done only when the path is then a directory, each directory it made mode 700 whatever the umask, one already there done and left as it was; a file in the way, a path under a file, a read-only parent, NUL and the empty path fail.

def

Cairn.Fuzz.Trusted.Claims.hostMakeDir.info

lean/Cairn/Fuzz/Trusted/Claims.lean:214
info : ClaimInfo

The human half of claim ^1003.

def

Cairn.Fuzz.Trusted.Claims.hostMakeDir

lean/Cairn/Fuzz/Trusted/Claims.lean:214
hostMakeDir : Claims.Assumption

^1003 makeDir makes a private directory and its parents (assumption)

makeDir answers done only when the path is then a directory, each directory it made mode 700 whatever the umask, one already there done and left as it was; a file in the way, a path under a file, a read-only parent, NUL and the empty path fail.

^1004

A painter's pixels stay inside its box

assumeassumed
Does

A paint draw changes no pixel outside its rect (snapped to device pixels as rects are) within the clip in force, whatever its painter draws and whatever data, time or scale it is given; a paint naming no registered painter changes nothing. Checked offscreen against the same frame without its paint draws, with Yap's tape painter and painters whose triangles cover the whole target or land anywhere.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
fuzzed 5k
The trusted-base fuzzer's render.paint.bounds held in 5,000 cases, against Lean's proved side (seed 0).

lean/Cairn/Fuzz/Trusted/Claims.lean:220 · hostPaintBounds · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostPaintBounds.info

lean/Cairn/Fuzz/Trusted/Claims.lean:220
info : ClaimInfo

The human half of claim ^1004.

def

Cairn.Fuzz.Trusted.Claims.hostPaintBounds.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:220
statement : Prop

Assumed, never proved (^1004 A painter's pixels stay inside its box): A paint draw changes no pixel outside its rect (snapped to device pixels as rects are) within the clip in force, whatever its painter draws and whatever data, time or scale it is given; a paint naming no registered painter changes nothing. Checked offscreen against the same frame without its paint draws, with Yap's tape painter and painters whose triangles cover the whole target or land anywhere.

def

Cairn.Fuzz.Trusted.Claims.hostPaintBounds

lean/Cairn/Fuzz/Trusted/Claims.lean:220
hostPaintBounds : Claims.Assumption

^1004 A painter's pixels stay inside its box (assumption)

A paint draw changes no pixel outside its rect (snapped to device pixels as rects are) within the clip in force, whatever its painter draws and whatever data, time or scale it is given; a paint naming no registered painter changes nothing. Checked offscreen against the same frame without its paint draws, with Yap's tape painter and painters whose triangles cover the whole target or land anywhere.

^1005

record reports started once its microphone is running, before any audio, or fails without it

assumeassumed
Does

A record subscription's first event is started, sent once, only after the microphone's start has returned (the engine is running), and before every audio event of it, with the host's monotonic milliseconds (the clock of key events) read after the return; a microphone that can't start sends failed and never started. So an app that waits for started shows nothing for a microphone that fails, as Yap shows its overlay only once AudioCapture.start has returned.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:104 · hostRecordStarted · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostRecordStarted

lean/Cairn/Fuzz/Trusted/Claims.lean:104
hostRecordStarted : Claims.Assumption

^1005 record reports started once its microphone is running, before any audio, or fails without it (assumption)

A record subscription's first event is started, sent once, only after the microphone's start has returned (the engine is running), and before every audio event of it, with the host's monotonic milliseconds (the clock of key events) read after the return; a microphone that can't start sends failed and never started. So an app that waits for started shows nothing for a microphone that fails, as Yap shows its overlay only once AudioCapture.start has returned.

def

Cairn.Fuzz.Trusted.Claims.hostRecordStarted.info

lean/Cairn/Fuzz/Trusted/Claims.lean:104
info : ClaimInfo

The human half of claim ^1005.

def

Cairn.Fuzz.Trusted.Claims.hostRecordStarted.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:104
statement : Prop

Assumed, never proved (^1005 record reports started once its microphone is running, before any audio, or fails without it): A record subscription's first event is started, sent once, only after the microphone's start has returned (the engine is running), and before every audio event of it, with the host's monotonic milliseconds (the clock of key events) read after the return; a microphone that can't start sends failed and never started. So an app that waits for started shows nothing for a microphone that fails, as Yap shows its overlay only once AudioCapture.start has returned.

^1006

loadImage answers the image's pixel size, or the fault

assumeassumed
Does

loadImage of a file path (~/ is home, relative to the working directory) or an http(s) URL decodes the first image with ImageIO, applying its EXIF orientation, keeps it for image draws naming the same source and answers image with the oriented pixel size, exactly once; a missing file is notFound, an unreadable one denied, a directory, an empty source, NUL or bytes that are no image invalid; HTTP 404 and 410 notFound, 401 and 403 denied, any other status outside 2xx other, a failed connection network, a timeout timeout. Without reload a kept source is answered from the store without reading; with reload it is read again, and a failure removes it.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:226 · hostLoadImage · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostLoadImage.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:226
statement : Prop

Assumed, never proved (^1006 loadImage answers the image's pixel size, or the fault): loadImage of a file path (~/ is home, relative to the working directory) or an http(s) URL decodes the first image with ImageIO, applying its EXIF orientation, keeps it for image draws naming the same source and answers image with the oriented pixel size, exactly once; a missing file is notFound, an unreadable one denied, a directory, an empty source, NUL or bytes that are no image invalid; HTTP 404 and 410 notFound, 401 and 403 denied, any other status outside 2xx other, a failed connection network, a timeout timeout. Without reload a kept source is answered from the store without reading; with reload it is read again, and a failure removes it.

def

Cairn.Fuzz.Trusted.Claims.hostLoadImage

lean/Cairn/Fuzz/Trusted/Claims.lean:226
hostLoadImage : Claims.Assumption

^1006 loadImage answers the image's pixel size, or the fault (assumption)

loadImage of a file path (~/ is home, relative to the working directory) or an http(s) URL decodes the first image with ImageIO, applying its EXIF orientation, keeps it for image draws naming the same source and answers image with the oriented pixel size, exactly once; a missing file is notFound, an unreadable one denied, a directory, an empty source, NUL or bytes that are no image invalid; HTTP 404 and 410 notFound, 401 and 403 denied, any other status outside 2xx other, a failed connection network, a timeout timeout. Without reload a kept source is answered from the store without reading; with reload it is read again, and a failure removes it.

def

Cairn.Fuzz.Trusted.Claims.hostLoadImage.info

lean/Cairn/Fuzz/Trusted/Claims.lean:226
info : ClaimInfo

The human half of claim ^1006.

^1007

An image's pixels stay inside its box

assumeassumed
Does

An image draw changes no pixel outside its rect (snapped to device pixels as rects are) within the clip in force, whatever its destination rect and scale; a draw naming a source the host holds no image for changes nothing.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:230 · hostImageBounds · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostImageBounds.info

lean/Cairn/Fuzz/Trusted/Claims.lean:230
info : ClaimInfo

The human half of claim ^1007.

def

Cairn.Fuzz.Trusted.Claims.hostImageBounds

lean/Cairn/Fuzz/Trusted/Claims.lean:230
hostImageBounds : Claims.Assumption

^1007 An image's pixels stay inside its box (assumption)

An image draw changes no pixel outside its rect (snapped to device pixels as rects are) within the clip in force, whatever its destination rect and scale; a draw naming a source the host holds no image for changes nothing.

def

Cairn.Fuzz.Trusted.Claims.hostImageBounds.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:230
statement : Prop

Assumed, never proved (^1007 An image's pixels stay inside its box): An image draw changes no pixel outside its rect (snapped to device pixels as rects are) within the clip in force, whatever its destination rect and scale; a draw naming a source the host holds no image for changes nothing.

^1008

An image is drawn where its oriented pixels are

assumeassumed
Does

An image draw scales the oriented image to its destination rect: each quadrant of the image lands in the same quadrant of the destination, in its colour (within 8 per channel, 40 for JPEG and HEIC), whatever the EXIF orientation, format and scale.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:234 · hostImagePixels · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostImagePixels.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:234
statement : Prop

Assumed, never proved (^1008 An image is drawn where its oriented pixels are): An image draw scales the oriented image to its destination rect: each quadrant of the image lands in the same quadrant of the destination, in its colour (within 8 per channel, 40 for JPEG and HEIC), whatever the EXIF orientation, format and scale.

def

Cairn.Fuzz.Trusted.Claims.hostImagePixels

lean/Cairn/Fuzz/Trusted/Claims.lean:234
hostImagePixels : Claims.Assumption

^1008 An image is drawn where its oriented pixels are (assumption)

An image draw scales the oriented image to its destination rect: each quadrant of the image lands in the same quadrant of the destination, in its colour (within 8 per channel, 40 for JPEG and HEIC), whatever the EXIF orientation, format and scale.

def

Cairn.Fuzz.Trusted.Claims.hostImagePixels.info

lean/Cairn/Fuzz/Trusted/Claims.lean:234
info : ClaimInfo

The human half of claim ^1008.

^1009

cancelRequest stops a running request's work; it is still answered once

assumeassumed
Does

On cancelRequest for a request still running, the host stops its work where it can (an http, upload or loadImage download's URLSession task is cancelled) and still answers it exactly once, failed if the work was stopped, at once if its handler had not started; a cancelled loadImage leaves the image store as it was; a cancel of an id already answered or never requested does nothing.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:240 · hostCancelRequest · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostCancelRequest.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:240
statement : Prop

Assumed, never proved (^1009 cancelRequest stops a running request's work; it is still answered once): On cancelRequest for a request still running, the host stops its work where it can (an http, upload or loadImage download's URLSession task is cancelled) and still answers it exactly once, failed if the work was stopped, at once if its handler had not started; a cancelled loadImage leaves the image store as it was; a cancel of an id already answered or never requested does nothing.

def

Cairn.Fuzz.Trusted.Claims.hostCancelRequest

lean/Cairn/Fuzz/Trusted/Claims.lean:240
hostCancelRequest : Claims.Assumption

^1009 cancelRequest stops a running request's work; it is still answered once (assumption)

On cancelRequest for a request still running, the host stops its work where it can (an http, upload or loadImage download's URLSession task is cancelled) and still answers it exactly once, failed if the work was stopped, at once if its handler had not started; a cancelled loadImage leaves the image store as it was; a cancel of an id already answered or never requested does nothing.

def

Cairn.Fuzz.Trusted.Claims.hostCancelRequest.info

lean/Cairn/Fuzz/Trusted/Claims.lean:240
info : ClaimInfo

The human half of claim ^1009.

^1010

The window is never smaller than the app's minimum size

assumeassumed
Does

The host sets the window's contentMinSize to the minimum size of the frame's window record (a negative side as 0), so a person can't drag it smaller, clamps every live resize AppKit proposes to it, and grows a window already smaller to it, keeping its top-left corner; a minimum the window meets leaves it alone. So every resize Lean hears is at least the minimum the app asked for, from the first frame that asks for it.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:246 · hostWindowMinSize · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostWindowMinSize

lean/Cairn/Fuzz/Trusted/Claims.lean:246
hostWindowMinSize : Claims.Assumption

^1010 The window is never smaller than the app's minimum size (assumption)

The host sets the window's contentMinSize to the minimum size of the frame's window record (a negative side as 0), so a person can't drag it smaller, clamps every live resize AppKit proposes to it, and grows a window already smaller to it, keeping its top-left corner; a minimum the window meets leaves it alone. So every resize Lean hears is at least the minimum the app asked for, from the first frame that asks for it.

def

Cairn.Fuzz.Trusted.Claims.hostWindowMinSize.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:246
statement : Prop

Assumed, never proved (^1010 The window is never smaller than the app's minimum size): The host sets the window's contentMinSize to the minimum size of the frame's window record (a negative side as 0), so a person can't drag it smaller, clamps every live resize AppKit proposes to it, and grows a window already smaller to it, keeping its top-left corner; a minimum the window meets leaves it alone. So every resize Lean hears is at least the minimum the app asked for, from the first frame that asks for it.

def

Cairn.Fuzz.Trusted.Claims.hostWindowMinSize.info

lean/Cairn/Fuzz/Trusted/Claims.lean:246
info : ClaimInfo

The human half of claim ^1010.

^1011

The image cache reports every image it drops, after it is gone

assumeassumed
Does

While an imageCache subscription runs, the host keeps its decoded images within the smallest running budget: past it, it drops the images used least recently, never one the latest published frame draws nor the one just loaded, and sends evicted for every image it drops (a failed reload's removal too) after the pixels are gone. It answers loadImage ready only after it held the pixels for that load. With Images.evicted on the Lean side, an image the app takes for ready has its pixels with the host once every message is heard (Images.Cache.ready_held_quiet).

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:273 · hostImageCache · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostImageCache

lean/Cairn/Fuzz/Trusted/Claims.lean:273
hostImageCache : Claims.Assumption

^1011 The image cache reports every image it drops, after it is gone (assumption)

While an imageCache subscription runs, the host keeps its decoded images within the smallest running budget: past it, it drops the images used least recently, never one the latest published frame draws nor the one just loaded, and sends evicted for every image it drops (a failed reload's removal too) after the pixels are gone. It answers loadImage ready only after it held the pixels for that load. With Images.evicted on the Lean side, an image the app takes for ready has its pixels with the host once every message is heard (Images.Cache.ready_held_quiet).

def

Cairn.Fuzz.Trusted.Claims.hostImageCache.info

lean/Cairn/Fuzz/Trusted/Claims.lean:273
info : ClaimInfo

The human half of claim ^1011.

def

Cairn.Fuzz.Trusted.Claims.hostImageCache.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:273
statement : Prop

Assumed, never proved (^1011 The image cache reports every image it drops, after it is gone): While an imageCache subscription runs, the host keeps its decoded images within the smallest running budget: past it, it drops the images used least recently, never one the latest published frame draws nor the one just loaded, and sends evicted for every image it drops (a failed reload's removal too) after the pixels are gone. It answers loadImage ready only after it held the pixels for that load. With Images.evicted on the Lean side, an image the app takes for ready has its pixels with the host once every message is heard (Images.Cache.ready_held_quiet).

^1012

The host reports scrolls where they happen, toward the end positive

assumeassumed
Does

The host sends each wheel or trackpad scroll as a scroll event at the logical point under the pointer, with positive dy toward the end of the content (AppKit's deltas negated, natural scrolling already applied) and 16 points to a wheel line; fractions carry, so the total stays within a point of AppKit's. The runtime moves the scroll box under that point by it (Runtime.wheel).

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:266 · hostScroll · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostScroll

lean/Cairn/Fuzz/Trusted/Claims.lean:266
hostScroll : Claims.Assumption

^1012 The host reports scrolls where they happen, toward the end positive (assumption)

The host sends each wheel or trackpad scroll as a scroll event at the logical point under the pointer, with positive dy toward the end of the content (AppKit's deltas negated, natural scrolling already applied) and 16 points to a wheel line; fractions carry, so the total stays within a point of AppKit's. The runtime moves the scroll box under that point by it (Runtime.wheel).

def

Cairn.Fuzz.Trusted.Claims.hostScroll.info

lean/Cairn/Fuzz/Trusted/Claims.lean:266
info : ClaimInfo

The human half of claim ^1012.

def

Cairn.Fuzz.Trusted.Claims.hostScroll.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:266
statement : Prop

Assumed, never proved (^1012 The host reports scrolls where they happen, toward the end positive): The host sends each wheel or trackpad scroll as a scroll event at the logical point under the pointer, with positive dy toward the end of the content (AppKit's deltas negated, natural scrolling already applied) and 16 points to a wheel line; fractions carry, so the total stays within a point of AppKit's. The runtime moves the scroll box under that point by it (Runtime.wheel).

^1020

Secure event input is on exactly while a secure field has focus

assumeassumed
Does

The host turns the system's secure event input on (EnableSecureEventInput) when the applied frame's text input is a secure field, its window is key and the view is live, and off (DisableSecureEventInput) when any of those stops, the view is shut down or released; it calls them in pairs, never twice the same way in a row, so it never leaves secure input on. While it is on, no other process can read the keystrokes.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:279 · hostSecureInput · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostSecureInput.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:279
statement : Prop

Assumed, never proved (^1020 Secure event input is on exactly while a secure field has focus): The host turns the system's secure event input on (EnableSecureEventInput) when the applied frame's text input is a secure field, its window is key and the view is live, and off (DisableSecureEventInput) when any of those stops, the view is shut down or released; it calls them in pairs, never twice the same way in a row, so it never leaves secure input on. While it is on, no other process can read the keystrokes.

def

Cairn.Fuzz.Trusted.Claims.hostSecureInput.info

lean/Cairn/Fuzz/Trusted/Claims.lean:279
info : ClaimInfo

The human half of claim ^1020.

def

Cairn.Fuzz.Trusted.Claims.hostSecureInput

lean/Cairn/Fuzz/Trusted/Claims.lean:279
hostSecureInput : Claims.Assumption

^1020 Secure event input is on exactly while a secure field has focus (assumption)

The host turns the system's secure event input on (EnableSecureEventInput) when the applied frame's text input is a secure field, its window is key and the view is live, and off (DisableSecureEventInput) when any of those stops, the view is shut down or released; it calls them in pairs, never twice the same way in a row, so it never leaves secure input on. While it is on, no other process can read the keystrokes.

^1021

Assistive apps reach only what a scroll area shows

assumeassumed
Does

The host's accessibility tree holds exactly the frame's AX nodes that are not scrolled out, each under its frame parent in frame order: a node is scrolled out when it or a node above it has an empty rect with a scroll area above that (the frame gives each node its visible rect, Frame.ofLaid). A scroll area is an AXScrollArea; a hit test answers only elements in the tree; the focused element is the focused node's even when it is scrolled out.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:285 · hostAxScroll · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostAxScroll.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:285
statement : Prop

Assumed, never proved (^1021 Assistive apps reach only what a scroll area shows): The host's accessibility tree holds exactly the frame's AX nodes that are not scrolled out, each under its frame parent in frame order: a node is scrolled out when it or a node above it has an empty rect with a scroll area above that (the frame gives each node its visible rect, Frame.ofLaid). A scroll area is an AXScrollArea; a hit test answers only elements in the tree; the focused element is the focused node's even when it is scrolled out.

def

Cairn.Fuzz.Trusted.Claims.hostAxScroll

lean/Cairn/Fuzz/Trusted/Claims.lean:285
hostAxScroll : Claims.Assumption

^1021 Assistive apps reach only what a scroll area shows (assumption)

The host's accessibility tree holds exactly the frame's AX nodes that are not scrolled out, each under its frame parent in frame order: a node is scrolled out when it or a node above it has an empty rect with a scroll area above that (the frame gives each node its visible rect, Frame.ofLaid). A scroll area is an AXScrollArea; a hit test answers only elements in the tree; the focused element is the focused node's even when it is scrolled out.

def

Cairn.Fuzz.Trusted.Claims.hostAxScroll.info

lean/Cairn/Fuzz/Trusted/Claims.lean:285
info : ClaimInfo

The human half of claim ^1021.

^1022

A secure field shows assistive apps nothing typed

assumeassumed
Does

A frame node marked secure is an AXTextField with subrole AXSecureTextField, no value, no characters, no selected text and an empty string for every range, whatever its node or the text input holds; no other element shows its text. The debug socket's description of an http request shows no header value, body or secret, and no URL when the request is redact.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:289 · hostAxSecure · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostAxSecure.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:289
statement : Prop

Assumed, never proved (^1022 A secure field shows assistive apps nothing typed): A frame node marked secure is an AXTextField with subrole AXSecureTextField, no value, no characters, no selected text and an empty string for every range, whatever its node or the text input holds; no other element shows its text. The debug socket's description of an http request shows no header value, body or secret, and no URL when the request is redact.

def

Cairn.Fuzz.Trusted.Claims.hostAxSecure.info

lean/Cairn/Fuzz/Trusted/Claims.lean:289
info : ClaimInfo

The human half of claim ^1022.

def

Cairn.Fuzz.Trusted.Claims.hostAxSecure

lean/Cairn/Fuzz/Trusted/Claims.lean:289
hostAxSecure : Claims.Assumption

^1022 A secure field shows assistive apps nothing typed (assumption)

A frame node marked secure is an AXTextField with subrole AXSecureTextField, no value, no characters, no selected text and an empty string for every range, whatever its node or the text input holds; no other element shows its text. The debug socket's description of an http request shows no header value, body or secret, and no URL when the request is redact.

^1030

The badge the host shows is the label of the last badge effect, or none

assumeassumed
Does

The host sets the Dock tile's badge label (NSApp.dockTile.badgeLabel) to exactly the label of each badge effect, as it is, in the order the frames hand them over, and clears it for badge none; it never sets the badge otherwise. So the badge shown is the label of the last badge effect, or none.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:295 · hostBadge · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostBadge

lean/Cairn/Fuzz/Trusted/Claims.lean:295
hostBadge : Claims.Assumption

^1030 The badge the host shows is the label of the last badge effect, or none (assumption)

The host sets the Dock tile's badge label (NSApp.dockTile.badgeLabel) to exactly the label of each badge effect, as it is, in the order the frames hand them over, and clears it for badge none; it never sets the badge otherwise. So the badge shown is the label of the last badge effect, or none.

def

Cairn.Fuzz.Trusted.Claims.hostBadge.info

lean/Cairn/Fuzz/Trusted/Claims.lean:295
info : ClaimInfo

The human half of claim ^1030.

def

Cairn.Fuzz.Trusted.Claims.hostBadge.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:295
statement : Prop

Assumed, never proved (^1030 The badge the host shows is the label of the last badge effect, or none): The host sets the Dock tile's badge label (NSApp.dockTile.badgeLabel) to exactly the label of each badge effect, as it is, in the order the frames hand them over, and clears it for badge none; it never sets the badge otherwise. So the badge shown is the label of the last badge effect, or none.

^1031

An announcement is posted once, with exactly its text

assumeassumed
Does

For each announce effect the host posts one announcementRequested accessibility notification (NSAccessibility.post) for its window, carrying exactly the effect's text and its priority (low or high), in order, and posts none otherwise. Its text is the app's: the fuzzer checks that text typed into a secure field never reaches an effect's dump, announcements included.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:299 · hostAnnounce · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostAnnounce

lean/Cairn/Fuzz/Trusted/Claims.lean:299
hostAnnounce : Claims.Assumption

^1031 An announcement is posted once, with exactly its text (assumption)

For each announce effect the host posts one announcementRequested accessibility notification (NSAccessibility.post) for its window, carrying exactly the effect's text and its priority (low or high), in order, and posts none otherwise. Its text is the app's: the fuzzer checks that text typed into a secure field never reaches an effect's dump, announcements included.

def

Cairn.Fuzz.Trusted.Claims.hostAnnounce.info

lean/Cairn/Fuzz/Trusted/Claims.lean:299
info : ClaimInfo

The human half of claim ^1031.

def

Cairn.Fuzz.Trusted.Claims.hostAnnounce.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:299
statement : Prop

Assumed, never proved (^1031 An announcement is posted once, with exactly its text): For each announce effect the host posts one announcementRequested accessibility notification (NSAccessibility.post) for its window, carrying exactly the effect's text and its priority (low or high), in order, and posts none otherwise. Its text is the app's: the fuzzer checks that text typed into a secure field never reaches an effect's dump, announcements included.

^1032

Under holdWorld the host sends no clock, wake or reply of its own

assumeassumed
Does

Once Engine.holdClock and World.holdRequests have returned, every batch Lean hears is exactly the events the caller sent, in order (the driver's clock and reply events among them): the host adds no clock, sends no wake whatever the frame's wake deadline, and runs and answers no request handed over afterwards; a request from before the hold is answered at most once. Lean never hears an empty batch.

assumed
Recorded, never proved. Theorems that rely on it take it as a hypothesis.
unchecked
No check of the trusted-base fuzzer names it.

lean/Cairn/Fuzz/Trusted/Claims.lean:305 · hostHoldWorld · ledger: active

3 generated declarations
def

Cairn.Fuzz.Trusted.Claims.hostHoldWorld

lean/Cairn/Fuzz/Trusted/Claims.lean:305
hostHoldWorld : Claims.Assumption

^1032 Under holdWorld the host sends no clock, wake or reply of its own (assumption)

Once Engine.holdClock and World.holdRequests have returned, every batch Lean hears is exactly the events the caller sent, in order (the driver's clock and reply events among them): the host adds no clock, sends no wake whatever the frame's wake deadline, and runs and answers no request handed over afterwards; a request from before the hold is answered at most once. Lean never hears an empty batch.

def

Cairn.Fuzz.Trusted.Claims.hostHoldWorld.statement

lean/Cairn/Fuzz/Trusted/Claims.lean:305
statement : Prop

Assumed, never proved (^1032 Under holdWorld the host sends no clock, wake or reply of its own): Once Engine.holdClock and World.holdRequests have returned, every batch Lean hears is exactly the events the caller sent, in order (the driver's clock and reply events among them): the host adds no clock, sends no wake whatever the frame's wake deadline, and runs and answers no request handed over afterwards; a request from before the hold is answered at most once. Lean never hears an empty batch.

def

Cairn.Fuzz.Trusted.Claims.hostHoldWorld.info

lean/Cairn/Fuzz/Trusted/Claims.lean:305
info : ClaimInfo

The human half of claim ^1032.