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
Claims 65
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
info : ClaimInfo
The human half of claim ^7.
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.
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.
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
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)
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)
info : ClaimInfo
The human half of claim ^214.
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.decodeheld in 20,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:16 · swiftFrameDecoder · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^901.
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.
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.encodeheld in 20,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:20 · swiftEventEncoder · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^902.
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.
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.indexheld in 20,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:24 · textIndex · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^903.
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.
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.shadowheld in 4,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:28 · textShadow · ledger: active
3 generated declarations
info : ClaimInfo
The human half of claim ^904.
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.
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.
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-clientheld in 4,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:32 · inputClientGeometry · ledger: active
3 generated declarations
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.
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.
info : ClaimInfo
The human half of claim ^905.
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.metricsheld in 20,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:36 · textMetricsHost · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^906.
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.
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.caretsheld in 11,043 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:40 · textCaretsPainted · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^907.
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.
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.monotonicheld in 1,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:44 · hostClock · ledger: active
3 generated declarations
info : ClaimInfo
The human half of claim ^908.
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.
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.
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.wakeheld in 1,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:48 · hostWake · ledger: active
3 generated declarations
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.
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.
info : ClaimInfo
The human half of claim ^909.
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-fileheld in 3,797 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:52 · hostReadFile · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^910.
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.
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-fileheld in 5,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:56 · hostWriteFile · ledger: active
3 generated declarations
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.
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.
info : ClaimInfo
The human half of claim ^911.
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.soundheld in 5,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:60 · hostPlaySound · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^912.
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.
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
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-onceheld in 1,031 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:66 · hostReplyOnce · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^914.
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.
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.everyheld in 969 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:70 · hostEvery · ledger: active
3 generated declarations
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.
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.
info : ClaimInfo
The human half of claim ^915.
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.renderheld in 2,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:156 · hostMenuRender · ledger: active
3 generated declarations
info : ClaimInfo
The human half of claim ^940.
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.
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.
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.selectheld in 1,353 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:160 · hostMenuSelect · ledger: active
3 generated declarations
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).
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).
info : ClaimInfo
The human half of claim ^941.
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-closeheld in 2,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:164 · hostMenuOpenClose · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^942.
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.
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.inertheld in 2,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:168 · hostPanelInert · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^943.
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.
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.placeheld in 2,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:172 · hostPanelPlace · ledger: active
3 generated declarations
info : ClaimInfo
The human half of claim ^944.
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.
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.
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
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.
info : ClaimInfo
The human half of claim ^945.
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.
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
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.
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.
info : ClaimInfo
The human half of claim ^946.
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
info : ClaimInfo
The human half of claim ^947.
Cairn.Fuzz.Trusted.Claims.hostControlMenuDismiss.statement
lean/Cairn/Fuzz/Trusted/Claims.lean:184statement : 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.
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.
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
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.
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.
info : ClaimInfo
The human half of claim ^948.
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
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.
info : ClaimInfo
The human half of claim ^949.
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.
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
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.
info : ClaimInfo
The human half of claim ^950.
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.
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-fileheld in 212 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:76 · hostAppendFile · ledger: active
3 generated declarations
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.
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.
info : ClaimInfo
The human half of claim ^960.
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-dirheld in 217 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:80 · hostListDir · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^961.
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.
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-fileheld in 190 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:84 · hostDeleteFile · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^962.
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.
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-fileheld in 197 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:88 · hostWatchFile · ledger: active
3 generated declarations
info : ClaimInfo
The human half of claim ^963.
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.
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.
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-appheld in 5,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:92 · hostFrontmostApp · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^964.
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.
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.permissionheld in 5,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:96 · hostPermission · ledger: active
3 generated declarations
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.
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.
info : ClaimInfo
The human half of claim ^965.
record streams the levels of exactly the samples it keeps, and nothing after its stop
assumeassumedWhile 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.recordheld in 2,500 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:100 · hostRecord · ledger: active
3 generated declarations
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.
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.
info : ClaimInfo
The human half of claim ^966.
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-wavheld in 2,500 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:108 · hostClipWav · ledger: active
3 generated declarations
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.
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.
info : ClaimInfo
The human half of claim ^967.
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-keyheld in 5,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:112 · hostGlobalKey · ledger: active
3 generated declarations
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.
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.
info : ClaimInfo
The human half of claim ^968.
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-textheld in 5,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:116 · hostTypeText · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^969.
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.
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.uploadheld in 4,398 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:120 · hostUpload · ledger: active
3 generated declarations
info : ClaimInfo
The human half of claim ^970.
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.
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.
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
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
info : ClaimInfo
The human half of claim ^972.
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.
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.
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
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.
info : ClaimInfo
The human half of claim ^973.
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.
http sends the request as given, with its secret header, and returns the response as received
assumeassumedhttp 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
info : ClaimInfo
The human half of claim ^974.
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.
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.
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
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.
info : ClaimInfo
The human half of claim ^975.
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.
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.paintedheld in 9,393 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:146 · wrapPainted · ledger: active
3 generated declarations
info : ClaimInfo
The human half of claim ^990.
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.
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.
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.coretextheld in 4,991 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:150 · wrapCoreText · ledger: active
3 generated declarations
info : ClaimInfo
The human half of claim ^991.
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.
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.
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-itemheld in 5,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:202 · hostOpenItem · ledger: active
3 generated declarations
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.
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.
info : ClaimInfo
The human half of claim ^1000.
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-runningheld in 5,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:206 · hostAppRunning · ledger: active
3 generated declarations
info : ClaimInfo
The human half of claim ^1001.
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.
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.
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-defaultheld in 5,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:210 · hostReadDefault · ledger: active
3 generated declarations
info : ClaimInfo
The human half of claim ^1002.
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.
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.
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-dirheld in 184 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:214 · hostMakeDir · ledger: active
3 generated declarations
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.
info : ClaimInfo
The human half of claim ^1003.
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.
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.boundsheld in 5,000 cases, against Lean's proved side (seed 0).
lean/Cairn/Fuzz/Trusted/Claims.lean:220 · hostPaintBounds · ledger: active
3 generated declarations
info : ClaimInfo
The human half of claim ^1004.
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.
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.
record reports started once its microphone is running, before any audio, or fails without it
assumeassumedA 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
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.
info : ClaimInfo
The human half of claim ^1005.
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.
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
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.
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.
info : ClaimInfo
The human half of claim ^1006.
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
info : ClaimInfo
The human half of claim ^1007.
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.
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.
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
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.
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.
info : ClaimInfo
The human half of claim ^1008.
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
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.
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.
info : ClaimInfo
The human half of claim ^1009.
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
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.
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.
info : ClaimInfo
The human half of claim ^1010.
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
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).
info : ClaimInfo
The human half of claim ^1011.
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).
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
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).
info : ClaimInfo
The human half of claim ^1012.
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).
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
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.
info : ClaimInfo
The human half of claim ^1020.
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.
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
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.
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.
info : ClaimInfo
The human half of claim ^1021.
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
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.
info : ClaimInfo
The human half of claim ^1022.
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.
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
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.
info : ClaimInfo
The human half of claim ^1030.
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.
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
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.
info : ClaimInfo
The human half of claim ^1031.
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.
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
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.
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.
info : ClaimInfo
The human half of claim ^1032.
Yap's host effects (workstream T, docs/effects.md "What Yap needs"), ids 960–989.
Secrets in the Keychain (M4, #205, docs/effects.md "Secrets in the Keychain"), ids 972–975.
Wrapped text (workstream V, docs/layout.md "Wrapped text"), ids 990–999.
Surfaces (workstream S, docs/surfaces.md): menus and overlay panels, ids 940–959.
Yap on Cairn (workstream W): opening files and URLs, other apps, other domains' defaults, ids 1000–.
Host-drawn content (workstream Y, docs/frame.md "Draw records"): ids 1004–1019 (^1003 is the trusted makeDir claim).
Images (docs/effects.md "Images", docs/frame.md image draws).
Requests in flight (docs/effects.md "Requests in flight").
The window's size (docs/surfaces.md, App.minSize).
Pointer input (HostView's mouse handlers). Every app relies on these, so they are Cairn's,
not an app's; they keep the ids the Counter and TodoMVC examples first gave them.
The image cache's budget (docs/effects.md, "Images"; Sub.imageCache).
Secure fields (docs/text.md, "Secure fields").
The accessibility mirror under scroll areas and on secure fields (docs/host.md, "Accessibility").
The Dock badge and announcements (docs/effects.md, "The Dock badge and announcements").
Conformance's held world (docs/conformance.md, "The world"; the debug socket's holdWorld).