type Result = 'OK' | 'Falsified' | 'Exception';
type TestResult = {
result: Result,
seed: number,
counterexample: A | null
};
type Predicate = (a: A) => boolean;
type Gen = (s: number) => (() => A);
type Shrinker = (a: A) => [A];
function property(seed: number,
predicate: Predicate,
generator: Gen,
shrinker: Shrinker): TestResult {
return {result: 'OK', seed, counterexample: null};
}