Skip to contents

Package

s7contract-package s7contract
s7contract: Behavioral Contracts and Generative Laws for S7

Interfaces

new_interface() interface_requirement()
Build a Go-like structural interface on top of S7
interface_requirements() interface_report() missing_requirements() implements() assert_implements() as_interface()
Inspect or check a Go-like structural interface

Traits

new_trait() trait_method()
Build a Rust-like explicit trait on top of S7
trait_methods() impl_trait() trait_report() has_trait() assert_trait() trait_call() trait_assoc_type() trait_assoc_const()
Inspect or use a Rust-like explicit trait

Progressive checks

`%::%`
Evaluate an S7 call under an interface or trait contract

Property laws

new_generator()
Construct a property-based test generator
gen_constant() gen_integer() gen_map() gen_product() gen_vector()
Basic property-based test generators
gen_double()
Generate finite double values
gen_sample() gen_subsequence()
Sample source positions without replacement
gen_bind() gen_sized() gen_resize() gen_recursive()
Compose dependent, sized, and recursive generators
gen_element() gen_choice()
Choose values or generators
gen_example() gen_no_shrink()
Inspect a generator or disable its shrinking
new_law() assume() check_law() format_check_result() expect_law()
Define and check a generative law
new_command()
Describe a command for a stateful protocol
gen_commands()
Generate and shrink model-valid command sequences
new_state_law()
Define a generative law for a stateful protocol