#include "random.h"

This page has information from files random.h and random.c.

Contents


Public Routines in File random.c

Index

random_clauserandom_nonvariable_termrandom_pathrandom_term
random_complex_termrandom_op_termrandom_permutation

Details


Clause 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.

Public Definitions in File random.h


Introduction

These are some routines I used for testing and debugging some of the low-level code. The main reason I wrote these is so that I could write and test the early code without having to input terms. Maybe I'll see how far I can go before I have to write a term parser.

And, who knows, maybe the next big breakthrough in automated theorem proving will depend on randonly generated terms!


These activities are projects of the Mathematics and Computer Science Division of Argonne National Laboratory.