random_clause | random_nonvariable_term | random_path | random_term |
random_complex_term | random_op_term | random_permutation |
Topform random_clause(int v, int a0, int a1, int a2, int a3, int max_depth, int max_lits);This routin builds and returns a random clause. The arguments are like random_term(), with an extra argument giving the maximum number of literals.
Term random_complex_term(int v, int a0, int a1, int a2, int a3, int max_depth);This is like random_term(), except that the returned term will not be a variable or a constant. Subterms may be variables or constants.
Term random_nonvariable_term(int v, int a0, int a1, int a2, int a3, int max_depth);This is like random_term(), except that the returned term will not be a variable. Subterms may be variables.
Term random_op_term(int depth);
Ilist random_path(int length_max, int value_max);This routine returns a random-length list of random integers. The range for the length is [1..length_max], and the range for the values is [1..value_max].
void random_permutation(int *a, int size);This routine places a random permtation of [0..size-1] into the array a. (The randomness is not very good.)
Term random_term(int v, int a0, int a1, int a2, int a3, int max_depth);This routine generates a random term, with depth <= max_depth, and with subterms of arity <= 3. The parameters [v, a0, a1, a2, a3] tells how many variables (named v0,v1,...), constants (named a0,a1,...), unary (named g0,g1,...), binary (named f0,f1,...), ternary (named h0,h1,...), symbols to select from. For example,
random_term(3, 2, 1, 1, 0, 5)asks for a term, of depth <= 5, with <= 3 variable, <= 2 constant, <= 1 unary, <=1 binary, and 0 ternary symbols.
And, who knows, maybe the next big breakthrough in automated theorem proving will depend on randonly generated terms!