Proof-indexed finite operations #
Application lemmas for finite-operation contracts, including acceptance predicates on input and output codes, such as a floating-point result remaining finite.
Finite1, Finite2, and Finite3 state that running a code-level operation on represented
finite inputs produces the specified finite scalar result. This module turns those contracts into
the forms users normally need: a denotation equation or a new proof-indexed value.
The If families require a proof of the acceptance predicate for the actual input and output
codes. Given that proof and the input denotations, the refinement contract determines the
output's finite scalar value.
Unconditional finite-operation contracts #
Lift a commuting decoder equation to a finite unary-operation refinement.
This is the standard proof principle for formats whose codes all denote ordinary finite values.
Apply a finite unary refinement to a represented concrete input.
Observe a finite unary operation with an independently stated scalar result.
Apply a finite unary refinement to a proof-indexed finite value.
Instances For
Lift a commuting two-input decoder equation to a finite binary-operation refinement.
Input and output code types may differ, so this also covers scale-changing operations.
Apply a finite two-input refinement to represented concrete inputs.
Observe a finite two-input operation with an independently stated scalar result.
The proof-indexed inputs determine both semantic operands before automation selects the operation contract. This prevents independent metavariables for the operands from drifting across proof search branches.
Apply a finite two-input refinement to proof-indexed finite values.
Instances For
Lift a commuting three-input decoder equation to a finite ternary-operation refinement.
Apply a finite three-input refinement to represented concrete inputs.
Observe a finite three-input operation with an independently stated scalar result.
Apply a finite three-input refinement to proof-indexed finite values.
Instances For
Finite-operation contracts with a code-level acceptance condition #
Apply a condition-aware finite unary refinement to a represented concrete input.
Observe a condition-aware finite unary operation with an independently stated result.
Apply a condition-aware finite unary refinement to a proof-indexed value.
Instances For
Apply a condition-aware finite two-input refinement to represented concrete inputs.
Observe a condition-aware finite two-input operation with an independently stated result.
Apply a condition-aware finite two-input refinement to proof-indexed values.
Instances For
Apply a condition-aware finite three-input refinement to represented concrete inputs.
Observe a condition-aware finite three-input operation with an independent result.
Apply a condition-aware finite three-input refinement to proof-indexed values.