
# This is a shell archive.  Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
#
# Wrapped by quinlan on Fri Sep 27 09:29:52 EST 1996
# Contents:  Release2/ Release2/Examples/ Release2/Src/ Release2/MANUAL.foil6
#	Release2/README Release2/Examples/ackermann.d Release2/Examples/gcd.d
#	Release2/Examples/mesh_a.d Release2/Examples/mesh_b.d
#	Release2/Examples/mesh_c.d Release2/Examples/mesh_d.d
#	Release2/Examples/mesh_e.d Release2/Examples/qs44.d
#	Release2/Examples/sort.d Release2/Src/Makefile Release2/Src/constants.c
#	Release2/Src/defns.i Release2/Src/determinate.c
#	Release2/Src/evaluatelit.c Release2/Src/extern.i Release2/Src/finddef.c
#	Release2/Src/global.c Release2/Src/input.c Release2/Src/interpret.c
#	Release2/Src/join.c Release2/Src/literal.c Release2/Src/main.c
#	Release2/Src/order.c Release2/Src/output.c Release2/Src/prune.c
#	Release2/Src/search.c Release2/Src/state.c Release2/Src/utility.c
 
echo mkdir - Release2
mkdir Release2
chmod u=rwx,g=,o= Release2
 
echo mkdir - Release2/Examples
mkdir Release2/Examples
chmod u=rwx,g=rx,o=rx Release2/Examples
 
echo x - Release2/MANUAL.foil6
sed 's/^@//' > "Release2/MANUAL.foil6" <<'@//E*O*F Release2/MANUAL.foil6//'
NAME
	foil6 - produce Horn clauses from relational data

SYNOPSIS
	foil6 [ -n ] [ -N ] [ -v verb ] [ -V vars ] [ -s frac ] [ -m maxt ]
	      [ -d depth ] [ -w weaklits ] [ -a accur ] [ -l alter ]
	      [ -t chkpt ] [ -f gain ] [ -g max ]

DESCRIPTION
	FOIL is a program that reads extensional specifications of a set of
	relations and produces Horn clause definitions of one or more of them.

INPUT
*****

Input to the program consists of three sections:

        * specification of types
          blank line
        * extensional definitions of relations
          blank line                            |  these are
        * test cases for learned definitions    |  optional

Types
-----

Each discrete type specification consists of the type name followed by a colon,
then a series of constants separated by commas and terminated with a period.
This may occupy several lines and the same constant can appear in many types.

There are three kinds of discrete types:

	* ordered types (type name preceded by '*')
	  The constants have a natural order and appear in this order in
	  the type definition, smallest constant first.
	* unordered types (type name preceded by '#')
	  The constants do not have any natural order.
	* possibly ordered types
	  FOIL will attempt to discover an ordering of the constants that
	  may be useful for recursive definitions.

Each continuous type specification consists of the type name followed by
": continuous." on one line.  The constants corresponding to a continuous type
are the usual integers and real numbers -- any string that can be converted to
a float by C's atof() should work when specifying a value in a tuple.

Constants
---------

A non-numeric constant consist of any string of characters with the exception
that any occurrence of certain delimiter characters (left and right parenthesis,
period, comma, semicolon) must be prefixed by the escape character '\'.
A "theory" constant that can appear in a definition should be preceded by
'*'.  Two one-character constants have a special meaning and should not
be used otherwise:

	* '?' indicates a missing or unknown value
	      (see Cameron-Jones and Quinlan, 1993b)
	* '^' indicates an out-of-closed-world value
	      (see Quinlan and Cameron-Jones, 1994)

Relations
---------

All relations are defined in terms of the set of positive tuples of constants
for which the relation is true, and optionally the set of negative tuples of
constants for which it is false.  If only positive tuples are given, all other
constant tuples of the correct types are considered to be negative.

Each relation is defined by a header and one or two sets of constant tuples.
The header can be specified as follows:

    name(type, type, ... , type) key/key/.../key

The header of all relations other than target relations begins with '*'.
The header consists of relation name, argument types and optional keys.
Keys limit the ways the relation may be used and consist of one character
for each type.  The character '#' indicates that the corresponding argument in
a literal must be bound; the character '-' indicates that the argument can be
bound or unbound.  Each key thus gives a permissible way of accessing the
relation.  If no keys appear, all possible combinations of bound and unbound
arguments are allowed.

Following the header line are a series of lines containing constant tuples:

    positive tuple
    positive tuple
      . . .
    ;			| these
    negative tuple	| are
    negative tuple	| optional
      . . .		|
    .

Each tuple consists of constants separated by commas and must appear on a
single line.  The character ';' separates positive tuples from negative
tuples, which are optional.

Tests
-----

The optional test relations may be given to test the learned Horn clause 
definitions.  The additional input consists of

        a blank line (indicating start of test relation specification)
        relation name
        test tuples
        .
        relation name
        test tuples
        .
          and so on

Each test tuple consists of a constant tuple followed by ": +" if it is 
belongs to the relation and ": -" if it does not.  The definition interpreter is
simple; right-hand sides of the clauses are checked with reference to the
given tuples, not to the definitions of the relations that may have been
learned.

OPTIONS
*******

Options and their meanings are:

        -n      Negative literals are not considered.  This may be useful in
                domains where negated literals wouldn't make sense, or if
                learned definitions must be Horn clauses.

	-N	This is similar, but permits negated equality literals
		A<>B and A<>constant.

        -vverb	Set verbosity level [0, 1, 2, 3, or 4; default 1]
                The program produces rather voluminous trace output controlled
                by this variable.  The default value of 1 gives a fair
                amount of detail; 0 produces very little output; 3 gives
                a blow-by-blow account of what the system is doing;
                4 gives details of tuples in training sets etc.

	-Vvars	Set the maximum number of variables that can be used during
		the search for a definition. [default: 52]

        -sfrac	In some predicates of high arity, the closed world assumption
                will generate very many negative tuples.  This option causes
                only a randomly-selected neg% of negative tuples to be used.
                Note that this option has no effect if negative tuples are
                given explicitly.

	-mmaxt	Set the maximum number of tuples; the default is 100000.
		If the default setting results in warnings that literals are
		being excluded due to the tuple limit, expanding the limit
		may be useful (but time-consuming).

        -ddepth	Set the maximum variable depth [default 4].  This limits the
                possible depth of variables in literals.

	-wwklts Set the maximum number of weak (zero-gain) literals that
		can appear in sequence [default: 4].  A batch of determinate
		literals counts as one literal in this respect.

        -aaccur	Set the minimum accuracy of any clause [default 80%]
                FOIL will not accept any clause with an accuracy lower
                than this.

	-lalter Set the maximum number of alternatives to any literal
		[default 5].  This limits the amount of backup from any 
		one point.

        -tchkpt	Set the maximum number of checkpoints at any one time 
		[default 20].

        -fgain	Any alternative literal must have at least gain%
                of the best literal gain [default 80%].  

        -gmax	Determinate literals are automatically included, unless
                there is a literal which has at least max% of the maximum
                possible gain.  (The maximum possible gain is achieved
                by a literal that is satisfied by all + tuples, but no
                - tuples, in the current training set.)  Obviously, if
                max is zero, no determinate literals are included unless
                there are no other literals.


SEE ALSO

	Quinlan, J.R. (1990), "Learning Logical Definitions from Relations",
	Machine Learning 5, 239-266.

	Quinlan, J.R. (1991), "Determinate Literals in Inductive Logic
	Programming", Proceedings 12th International Joint Conference on
	Artificial Intelligence, 746-750, Morgan Kaufmann.

	Quinlan, J.R. and Cameron-Jones, R.M. (1993), "FOIL: a midterm report",
	3-20, Proceedings European Conference on Machine Learning, Springer
	Verlag.

	Cameron-Jones, R.M. and Quinlan, J.R. (1993a), "Avoiding Pitfalls When
	Learning Recursive Theories", Proceedings IJCAI 93, 1050-1055,
	Morgan Kaufmann.

	Cameron-Jones, R.M. and Quinlan, J.R., (1993b), "First Order Learning,
	Zeroth Order Data", Sixth Australian Joint Conference on Artificial
	Intelligence, World Scientific.

	Quinlan, J.R. and Cameron-Jones, R.M., (1994), "Living in a Closed
	World", draft available by anonymous ftp from ftp.cs.su.oz.au
	(file pub/q+cj.closed.ps).
@//E*O*F Release2/MANUAL.foil6//
chmod u=rw,g=r,o=r Release2/MANUAL.foil6
 
echo x - Release2/README
sed 's/^@//' > "Release2/README" <<'@//E*O*F Release2/README//'
FFOIL 1.0
---------

This program is based on FOIL release 6.3.  Input is very similar --
I haven't written a manual yet, but the FOIL6 manual (copied here)
should suffice.  The principal differences are
  *  the target relation must be functional, the last constant in each
     tuple being the value of the function
  *  negative examples are not needed (and should not be specified!)
  *  a couple of FOIL6 options to do with negative examples (e.g. -s)
     are no longer relevant
  *  the -s option now has no argument and means "do not carry out
     global clause simplification".  ffoil2 with the -s option
     behaves similarly to ffoil1.
Several sample files are provided with file names ending in .d;
for these examples, I recommend using the -n option with all but
the past tense task files (ph----) for which -N is more appropriate.

This is the first release of FFOIL, so I would appreciate reports on
any bugs encountered (to quinlan@cs.su.oz.au).

Ross
@//E*O*F Release2/README//
chmod u=rw,g=r,o=r Release2/README
 
echo mkdir - Release2/Src
mkdir Release2/Src
chmod u=rwx,g=rx,o=rx Release2/Src
 
echo x - Release2/Examples/ackermann.d
sed 's/^@//' > "Release2/Examples/ackermann.d" <<'@//E*O*F Release2/Examples/ackermann.d//'
*N: *0,*1,2,3,4,5,6,7,8,9,10,
   11,12,13,14,15,16,17,18,19,20.

Ackermann(N,N,N) ##-
0,0,1
0,1,2
0,2,3
0,3,4
0,4,5
0,5,6
0,6,7
0,7,8
0,8,9
0,9,10
0,10,11
0,11,12
0,12,13
0,13,14
0,14,15
0,15,16
0,16,17
0,17,18
0,18,19
0,19,20
1,0,2
1,1,3
1,2,4
1,3,5
1,4,6
1,5,7
1,6,8
1,7,9
1,8,10
1,9,11
1,10,12
1,11,13
1,12,14
1,13,15
1,14,16
1,15,17
1,16,18
1,17,19
1,18,20
2,0,3
2,1,5
2,2,7
2,3,9
2,4,11
2,5,13
2,6,15
2,7,17
2,8,19
3,0,5
3,1,13
4,0,13
@.
*succ(N,N)
0,1
1,2
2,3
3,4
4,5
5,6
6,7
7,8
8,9
9,10
10,11
11,12
12,13
13,14
14,15
15,16
16,17
17,18
18,19
19,20
@.
@//E*O*F Release2/Examples/ackermann.d//
chmod u=r,g=r,o=r Release2/Examples/ackermann.d
 
echo x - Release2/Examples/gcd.d
sed 's/^@//' > "Release2/Examples/gcd.d" <<'@//E*O*F Release2/Examples/gcd.d//'
*I: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20.

*plus(I,I,I)
1,1,2
1,2,3
1,3,4
1,4,5
1,5,6
1,6,7
1,7,8
1,8,9
1,9,10
1,10,11
1,11,12
1,12,13
1,13,14
1,14,15
1,15,16
1,16,17
1,17,18
1,18,19
1,19,20
2,1,3
2,2,4
2,3,5
2,4,6
2,5,7
2,6,8
2,7,9
2,8,10
2,9,11
2,10,12
2,11,13
2,12,14
2,13,15
2,14,16
2,15,17
2,16,18
2,17,19
2,18,20
3,1,4
3,2,5
3,3,6
3,4,7
3,5,8
3,6,9
3,7,10
3,8,11
3,9,12
3,10,13
3,11,14
3,12,15
3,13,16
3,14,17
3,15,18
3,16,19
3,17,20
4,1,5
4,2,6
4,3,7
4,4,8
4,5,9
4,6,10
4,7,11
4,8,12
4,9,13
4,10,14
4,11,15
4,12,16
4,13,17
4,14,18
4,15,19
4,16,20
5,1,6
5,2,7
5,3,8
5,4,9
5,5,10
5,6,11
5,7,12
5,8,13
5,9,14
5,10,15
5,11,16
5,12,17
5,13,18
5,14,19
5,15,20
6,1,7
6,2,8
6,3,9
6,4,10
6,5,11
6,6,12
6,7,13
6,8,14
6,9,15
6,10,16
6,11,17
6,12,18
6,13,19
6,14,20
7,1,8
7,2,9
7,3,10
7,4,11
7,5,12
7,6,13
7,7,14
7,8,15
7,9,16
7,10,17
7,11,18
7,12,19
7,13,20
8,1,9
8,2,10
8,3,11
8,4,12
8,5,13
8,6,14
8,7,15
8,8,16
8,9,17
8,10,18
8,11,19
8,12,20
9,1,10
9,2,11
9,3,12
9,4,13
9,5,14
9,6,15
9,7,16
9,8,17
9,9,18
9,10,19
9,11,20
10,1,11
10,2,12
10,3,13
10,4,14
10,5,15
10,6,16
10,7,17
10,8,18
10,9,19
10,10,20
11,1,12
11,2,13
11,3,14
11,4,15
11,5,16
11,6,17
11,7,18
11,8,19
11,9,20
12,1,13
12,2,14
12,3,15
12,4,16
12,5,17
12,6,18
12,7,19
12,8,20
13,1,14
13,2,15
13,3,16
13,4,17
13,5,18
13,6,19
13,7,20
14,1,15
14,2,16
14,3,17
14,4,18
14,5,19
14,6,20
15,1,16
15,2,17
15,3,18
15,4,19
15,5,20
16,1,17
16,2,18
16,3,19
16,4,20
17,1,18
17,2,19
17,3,20
18,1,19
18,2,20
19,1,20
@.
gcd(I,I,I) ##-
1,1,1
1,2,1
1,3,1
1,4,1
1,5,1
1,6,1
1,7,1
1,8,1
1,9,1
1,10,1
1,11,1
1,12,1
1,13,1
1,14,1
1,15,1
1,16,1
1,17,1
1,18,1
1,19,1
1,20,1
2,1,1
2,2,2
2,3,1
2,4,2
2,5,1
2,6,2
2,7,1
2,8,2
2,9,1
2,10,2
2,11,1
2,12,2
2,13,1
2,14,2
2,15,1
2,16,2
2,17,1
2,18,2
2,19,1
2,20,2
3,1,1
3,2,1
3,3,3
3,4,1
3,5,1
3,6,3
3,7,1
3,8,1
3,9,3
3,10,1
3,11,1
3,12,3
3,13,1
3,14,1
3,15,3
3,16,1
3,17,1
3,18,3
3,19,1
3,20,1
4,1,1
4,2,2
4,3,1
4,4,4
4,5,1
4,6,2
4,7,1
4,8,4
4,9,1
4,10,2
4,11,1
4,12,4
4,13,1
4,14,2
4,15,1
4,16,4
4,17,1
4,18,2
4,19,1
4,20,4
5,1,1
5,2,1
5,3,1
5,4,1
5,5,5
5,6,1
5,7,1
5,8,1
5,9,1
5,10,5
5,11,1
5,12,1
5,13,1
5,14,1
5,15,5
5,16,1
5,17,1
5,18,1
5,19,1
5,20,5
6,1,1
6,2,2
6,3,3
6,4,2
6,5,1
6,6,6
6,7,1
6,8,2
6,9,3
6,10,2
6,11,1
6,12,6
6,13,1
6,14,2
6,15,3
6,16,2
6,17,1
6,18,6
6,19,1
6,20,2
7,1,1
7,2,1
7,3,1
7,4,1
7,5,1
7,6,1
7,7,7
7,8,1
7,9,1
7,10,1
7,11,1
7,12,1
7,13,1
7,14,7
7,15,1
7,16,1
7,17,1
7,18,1
7,19,1
7,20,1
8,1,1
8,2,2
8,3,1
8,4,4
8,5,1
8,6,2
8,7,1
8,8,8
8,9,1
8,10,2
8,11,1
8,12,4
8,13,1
8,14,2
8,15,1
8,16,8
8,17,1
8,18,2
8,19,1
8,20,4
9,1,1
9,2,1
9,3,3
9,4,1
9,5,1
9,6,3
9,7,1
9,8,1
9,9,9
9,10,1
9,11,1
9,12,3
9,13,1
9,14,1
9,15,3
9,16,1
9,17,1
9,18,9
9,19,1
9,20,1
10,1,1
10,2,2
10,3,1
10,4,2
10,5,5
10,6,2
10,7,1
10,8,2
10,9,1
10,10,10
10,11,1
10,12,2
10,13,1
10,14,2
10,15,5
10,16,2
10,17,1
10,18,2
10,19,1
10,20,10
11,1,1
11,2,1
11,3,1
11,4,1
11,5,1
11,6,1
11,7,1
11,8,1
11,9,1
11,10,1
11,11,11
11,12,1
11,13,1
11,14,1
11,15,1
11,16,1
11,17,1
11,18,1
11,19,1
11,20,1
12,1,1
12,2,2
12,3,3
12,4,4
12,5,1
12,6,6
12,7,1
12,8,4
12,9,3
12,10,2
12,11,1
12,12,12
12,13,1
12,14,2
12,15,3
12,16,4
12,17,1
12,18,6
12,19,1
12,20,4
13,1,1
13,2,1
13,3,1
13,4,1
13,5,1
13,6,1
13,7,1
13,8,1
13,9,1
13,10,1
13,11,1
13,12,1
13,13,13
13,14,1
13,15,1
13,16,1
13,17,1
13,18,1
13,19,1
13,20,1
14,1,1
14,2,2
14,3,1
14,4,2
14,5,1
14,6,2
14,7,7
14,8,2
14,9,1
14,10,2
14,11,1
14,12,2
14,13,1
14,14,14
14,15,1
14,16,2
14,17,1
14,18,2
14,19,1
14,20,2
15,1,1
15,2,1
15,3,3
15,4,1
15,5,5
15,6,3
15,7,1
15,8,1
15,9,3
15,10,5
15,11,1
15,12,3
15,13,1
15,14,1
15,15,15
15,16,1
15,17,1
15,18,3
15,19,1
15,20,5
16,1,1
16,2,2
16,3,1
16,4,4
16,5,1
16,6,2
16,7,1
16,8,8
16,9,1
16,10,2
16,11,1
16,12,4
16,13,1
16,14,2
16,15,1
16,16,16
16,17,1
16,18,2
16,19,1
16,20,4
17,1,1
17,2,1
17,3,1
17,4,1
17,5,1
17,6,1
17,7,1
17,8,1
17,9,1
17,10,1
17,11,1
17,12,1
17,13,1
17,14,1
17,15,1
17,16,1
17,17,17
17,18,1
17,19,1
17,20,1
18,1,1
18,2,2
18,3,3
18,4,2
18,5,1
18,6,6
18,7,1
18,8,2
18,9,9
18,10,2
18,11,1
18,12,6
18,13,1
18,14,2
18,15,3
18,16,2
18,17,1
18,18,18
18,19,1
18,20,2
19,1,1
19,2,1
19,3,1
19,4,1
19,5,1
19,6,1
19,7,1
19,8,1
19,9,1
19,10,1
19,11,1
19,12,1
19,13,1
19,14,1
19,15,1
19,16,1
19,17,1
19,18,1
19,19,19
19,20,1
20,1,1
20,2,2
20,3,1
20,4,4
20,5,5
20,6,2
20,7,1
20,8,4
20,9,1
20,10,10
20,11,1
20,12,4
20,13,1
20,14,2
20,15,5
20,16,4
20,17,1
20,18,2
20,19,1
20,20,20
@.
@//E*O*F Release2/Examples/gcd.d//
chmod u=r,g=r,o=r Release2/Examples/gcd.d
 
echo x - Release2/Examples/mesh_a.d
sed 's/^@//' > "Release2/Examples/mesh_a.d" <<'@//E*O*F Release2/Examples/mesh_a.d//'
#Elt:
 a1, a2, a3, a4, a5, a6, a7, a8, a9,a10,
a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,
a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,
a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,
a41,a42,a43,a44,a45,a46,a47,a48,a49,a50,
a51,a52,a53,a54,a55,
 b1, b2, b3, b4, b5, b6, b7, b8, b9,b10,
b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,
b21,b22,b23,b24,b25,b26,b27,b28,b29,b30,
b31,b32,b33,b34,b35,b36,b37,b38,b39,b40,
b41,b42,
 c1, c2, c3, c4, c5, c6, c7, c8, c9,c10,
c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,
c21,c22,c23,c24,c25,c26,c27,c28,
 d1, d2, d3, d4, d5, d6, d7, d8, d9,d10,
d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,
d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,
d31,d32,d33,d34,d35,d36,d37,d38,d39,d40,
d41,d42,d43,d44,d45,d46,d47,d48,d49,d50,
d51,d52,d53,d54,d55,d56,d57,
 e1, e2, e3, e4, e5, e6, e7, e8, e9,e10,
e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,
e21,e22,e23,e24,e25,e26,e27,e28,e29,e30,
e31,e32,e33,e34,e35,e36,e37,e38,e39,e40,
e41,e42,e43,e44,e45,e46,e47,e48,e49,e50,
e51,e52,e53,e54,e55,e56,e57,e58,e59,e60,
e61,e62,e63,e64,e65,e66,e67,e68,e69,e70,
e71,e72,e73,e74,e75,e76,e77,e78,e79,e80,
e81,e82,e83,e84,e85,e86,e87,e88,e89,e90,
e91,e92,e93,e94,e95,e96.
No:
*0,*1,*2,*3,*4,*5,*6,*7,*8,*9,*10,*11,*12.

*long(Elt)
a1
a34
a54
b19
b39
e19
e22
@.
*usual(Elt)
a3
a39
b11
b13
b15
b24
b25
b27
b31
b32
c5
c6
c8
c10
c12
c14
d1
d2
d28
d29
e2
e4
e5
e6
e7
e8
e14
e15
e16
e17
e18
e20
e21
e24
e25
e26
e27
e28
e29
e32
e34
e35
e37
e40
e43
e44
e45
e46
e48
e49
e50
e52
e55
e57
e58
e60
e62
e63
e65
e66
e67
e69
e70
e71
e72
e73
e74
e80
e81
e83
e86
e88
e89
e90
e91
e92
e93
e94
e95
@.
*short(Elt)
a6
a9
a11
a13
a15
a19
a22
a25
a26
a28
a31
a35
a40
a44
b5
b7
b8
b10
b16
b18
b26
b33
b36
b37
c7
c13
d3
d4
d6
d8
d10
d12
d14
d15
d16
d18
d20
d22
d24
d26
d27
e1
e3
e9
e12
e23
e30
e31
e33
e36
e38
e51
e53
e54
e56
e59
e61
e64
e68
e82
e87
@.
*circuit(Elt)
c15
c16
c17
c18
c19
c24
c25
c26
c27
c28
d30
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d45
d46
d47
d48
d49
d50
d51
d52
d53
d54
d55
d56
d57
@.
*half_circuit(Elt)
a36
a37
a45
a46
a47
a48
a49
a50
a51
a52
a53
b3
b6
b9
b12
b17
b20
b41
b42
@.
*quarter_circuit(Elt)
e75
e76
e77
e78
e84
e85
@.
*short_for_hole(Elt)
a16
a17
a18
a23
a33
b28
b30
b34
b35
c3
c4
e13
e96
@.
*long_for_hole(Elt)
c2
e41
e79
@.
*circuit_hole(Elt)
c20
c21
c22
c23
@.
*half_circuit_hole(Elt)
a38
a42
a43
a55
b1
b14
b22
b29
b38
b40
e10
e11
e39
e47
@.
*not_important(Elt)
a2
a4
a5
a7
a8
a10
a12
a14
a20
a21
a24
a27
a29
a30
a32
a41
b2
b4
b21
b23
c1
c9
c11
d5
d7
d9
d11
d13
d17
d19
d21
d23
d25
e42
@.
*free(Elt)
a39
a40
c6
c7
c11
c12
c13
c15
c16
c17
c18
c19
c20
c27
c28
d3
d4
d5
d6
d7
d8
d9
d10
d11
d12
d13
d14
d15
d16
d17
d18
d19
d20
d21
d22
d23
d24
d25
d26
d27
d29
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d45
d46
d47
d48
d49
d50
d51
d52
d53
d54
d55
d56
d57
e6
e16
e19
e20
e22
e23
e26
e27
e28
e29
e30
e31
e32
e33
e34
e35
e36
e45
e48
e49
e51
e52
e53
e54
e66
e71
e73
e83
e86
e88
e90
e92
e93
e94
@.
*one_side_fixed(Elt)
a34
a35
a41
c2
c3
c5
c8
c10
c14
e5
e7
e15
e17
e18
e21
e24
e37
e44
e46
e50
e65
e67
e69
e74
e76
e77
e78
e82
e84
e85
e89
e91
e95
@.
*two_side_fixed(Elt)
a36
a37
a38
a42
a43
a45
a46
a47
a48
a49
a50
a51
a52
a53
a55
b6
b9
b12
b14
b17
b20
b22
b29
b38
b40
b41
b42
e10
e11
e39
e47
@.
*fixed(Elt)
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
a11
a12
a13
a14
a15
a16
a17
a18
a19
a20
a21
a22
a23
a24
a25
a26
a27
a28
a29
a30
a31
a32
a33
a44
a54
b1
b2
b3
b4
b5
b7
b8
b10
b11
b13
b15
b16
b18
b19
b21
b23
b24
b25
b26
b27
b28
b30
b31
b32
b33
b34
b35
b36
b37
b39
c1
c4
c9
c21
c22
c23
c24
c25
c26
d1
d2
d28
d30
e1
e2
e3
e4
e8
e9
e12
e13
e14
e25
e38
e40
e41
e42
e43
e55
e56
e57
e58
e59
e60
e61
e62
e63
e64
e68
e70
e72
e75
e79
e80
e81
e87
e96
@.
*not_loaded(Elt)
a1
a2
a3
a4
a5
a6
a7
a23
a24
a25
a26
a27
a28
a29
a33
a36
a37
a42
a44
a45
a46
b1
b2
b3
b4
b5
b6
b7
b8
b9
b10
b11
b12
b13
b14
b15
b16
b17
b18
b19
b20
b21
b23
b24
c1
c2
c3
c4
c5
c6
c7
c8
c9
c15
c17
c18
c20
c21
c22
c23
c26
d1
d2
d3
d4
d5
d6
d7
d8
d9
d10
d11
d12
d13
d14
d15
d16
d20
d21
d22
d23
d24
d25
d26
d27
d28
d29
d30
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d49
d50
d51
d52
d53
d54
d55
d56
d57
e1
e2
e3
e4
e5
e6
e7
e8
e9
e10
e11
e12
e13
e14
e15
e16
e17
e18
e19
e20
e21
e22
e23
e24
e25
e26
e27
e28
e29
e30
e31
e32
e33
e34
e35
e39
e40
e41
e42
e43
e44
e45
e46
e47
e48
e49
e50
e51
e52
e53
e54
e55
e56
e57
e58
e62
e63
e64
e65
e66
e67
e68
e69
e70
e71
e72
e73
e74
e77
e78
e79
e80
e81
e82
e83
e84
e85
e86
e87
e88
e89
e90
e91
e92
e93
e94
e95
e96
@.
*one_side_loaded(Elt)
a34
a35
a40
a41
a54
d45
d46
d47
d48
e36
e38
e59
e61
@.
*two_side_loaded(Elt)
e37
@.
*cont_loaded(Elt)
a8
a9
a10
a11
a12
a13
a14
a15
a16
a17
a18
a19
a20
a21
a22
a30
a31
a32
a38
a39
a43
a47
a48
a49
a50
a51
a52
a53
b22
b25
b26
b27
b28
b29
b30
b31
b32
b33
b34
b35
b36
b37
b38
b39
b40
b41
b42
c10
c11
c12
c13
c14
c16
c19
c24
c25
c27
c28
d17
d18
d19
e60
e75
e76
@.
*neighbour(Elt,Elt)
a1,a2
a1,a44
a10,a11
a10,a49
a11,a12
a11,a49
a12,a13
a12,a51
a13,a14
a14,a15
a14,a53
a15,a16
a15,a38
a16,a17
a16,a55
a17,a18
a18,a19
a18,a38
a19,a20
a2,a3
a2,a54
a20,a21
a20,a52
a21,a22
a22,a23
a22,a50
a23,a24
a24,a1
a24,a42
a25,a26
a25,a35
a26,a27
a26,a36
a27,a28
a27,a37
a28,a29
a28,a37
a29,a30
a29,a46
a3,a4
a30,a31
a30,a46
a31,a32
a31,a48
a32,a33
a32,a48
a33,a25
a34,a35
a34,a40
a35,a26
a35,a40
a36,a27
a36,a4
a37,a5
a37,a6
a38,a16
a38,a19
a39,a41
a4,a34
a4,a5
a40,a39
a41,a44
a42,a25
a44,a24
a44,a54
a45,a28
a45,a29
a46,a7
a46,a8
a47,a30
a47,a31
a48,a10
a48,a9
a49,a32
a49,a43
a5,a36
a5,a6
a50,a11
a50,a12
a51,a22
a52,a14
a53,a20
a54,a1
a54,a44
a55,a17
a55,a18
a6,a45
a6,a7
a7,a45
a7,a8
a8,a47
a8,a9
a9,a10
a9,a47
b1,b2
b1,b34
b10,b11
b10,b9
b11,b12
b11,b15
b12,b15
b12,b16
b13,b12
b13,b16
b14,b13
b15,b14
b15,b30
b16,b17
b16,b24
b17,b18
b18,b8
b18,b9
b19,b18
b19,b20
b2,b3
b2,b5
b20,b21
b20,b24
b21,b22
b21,b25
b22,b23
b22,b25
b23,b19
b23,b20
b24,b17
b24,b21
b25,b26
b25,b38
b26,b27
b26,b38
b27,b28
b27,b42
b28,b13
b29,b27
b3,b4
b3,b5
b30,b31
b31,b29
b31,b32
b32,b33
b32,b42
b33,b34
b33,b41
b34,b2
b34,b40
b35,b1
b35,b36
b36,b37
b36,b40
b37,b39
b37,b41
b38,b37
b39,b22
b39,b23
b4,b35
b40,b33
b40,b35
b41,b32
b41,b36
b42,b26
b42,b31
b5,b10
b5,b6
b6,b10
b6,b7
b7,b3
b7,b4
b8,b6
b8,b7
b9,b11
b9,b8
c1,c2
c1,c23
c10,c11
c10,c25
c11,c12
c11,c27
c12,c13
c12,c28
c13,c14
c13,c28
c14,c1
c14,c24
c15,c8
c16,c10
c16,c11
c17,c7
c18,c6
c19,c13
c19,c14
c2,c23
c2,c3
c20,c2
c20,c3
c21,c4
c21,c5
c24,c1
c26,c9
c27,c12
c3,c22
c3,c4
c4,c22
c4,c5
c5,c18
c5,c6
c6,c17
c6,c7
c7,c15
c7,c8
c8,c26
c8,c9
c9,c10
c9,c25
d1,d2
d1,d30
d10,d11
d10,d39
d11,d12
d11,d40
d12,d13
d12,d41
d13,d14
d13,d42
d14,d15
d14,d43
d15,d16
d15,d44
d16,d17
d16,d45
d17,d18
d17,d46
d18,d19
d18,d47
d19,d20
d19,d48
d2,d3
d2,d31
d20,d21
d20,d49
d21,d22
d21,d50
d22,d23
d22,d51
d23,d24
d23,d52
d24,d25
d24,d53
d25,d26
d25,d54
d26,d27
d26,d55
d27,d28
d27,d56
d28,d29
d28,d57
d3,d32
d3,d4
d30,d2
d31,d3
d32,d4
d33,d5
d34,d6
d35,d7
d36,d8
d37,d9
d38,d10
d39,d11
d4,d33
d4,d5
d40,d12
d41,d13
d42,d14
d43,d15
d44,d16
d45,d17
d46,d18
d47,d19
d48,d20
d49,d21
d5,d34
d5,d6
d50,d22
d51,d23
d52,d24
d53,d25
d54,d26
d55,d27
d56,d28
d57,d29
d6,d35
d6,d7
d7,d36
d7,d8
d8,d37
d8,d9
d9,d10
d9,d38
e1,e2
e1,e5
e10,e95
e10,e96
e11,e13
e11,e3
e12,e11
e12,e14
e13,e10
e13,e12
e14,e15
e14,e40
e15,e16
e15,e40
e16,e17
e16,e28
e17,e12
e17,e14
e18,e19
e18,e20
e19,e20
e19,e53
e2,e18
e2,e3
e20,e22
e21,e1
e22,e21
e22,e26
e23,e22
e23,e27
e24,e23
e24,e25
e25,e55
e25,e85
e26,e23
e26,e94
e27,e24
e27,e51
e28,e17
e28,e52
e29,e15
e29,e16
e3,e18
e3,e96
e30,e29
e30,e86
e31,e30
e31,e86
e32,e31
e32,e84
e33,e32
e33,e84
e34,e33
e34,e78
e35,e34
e36,e35
e36,e76
e37,e36
e37,e76
e38,e37
e38,e75
e39,e38
e39,e41
e4,e1
e4,e5
e40,e39
e40,e41
e41,e42
e41,e47
e42,e43
e43,e44
e43,e87
e44,e45
e44,e49
e45,e46
e45,e48
e46,e43
e46,e47
e47,e79
e47,e91
e48,e46
e48,e92
e49,e45
e49,e69
e5,e6
e5,e93
e50,e71
e51,e54
e52,e29
e52,e30
e53,e28
e53,e52
e54,e26
e54,e94
e55,e56
e55,e85
e56,e57
e56,e78
e57,e58
e58,e59
e58,e77
e59,e60
e59,e77
e6,e7
e6,e93
e60,e61
e60,e75
e61,e62
e61,e72
e62,e63
e62,e72
e63,e64
e63,e65
e64,e24
e64,e25
e65,e64
e65,e73
e66,e65
e66,e67
e67,e66
e67,e70
e68,e67
e68,e81
e69,e68
e69,e81
e7,e8
e7,e87
e70,e50
e70,e68
e71,e73
e71,e74
e72,e50
e72,e70
e73,e66
e73,e74
e74,e62
e74,e63
e75,e37
e75,e61
e76,e59
e76,e60
e77,e35
e77,e36
e78,e33
e78,e57
e79,e38
e79,e39
e8,e89
e8,e9
e80,e79
e80,e91
e81,e80
e81,e82
e82,e80
e82,e83
e83,e49
e83,e69
e84,e55
e84,e56
e85,e31
e85,e32
e86,e51
e86,e54
e87,e44
e87,e8
e88,e89
e88,e90
e89,e9
e89,e90
e9,e10
e9,e13
e90,e6
e90,e7
e91,e48
e92,e82
e92,e83
e93,e88
e93,e95
e94,e19
e94,e53
e95,e4
e95,e88
e96,e11
e96,e4
@.
*opposite_r(Elt,Elt)
a11,a3
a9,a3
a31,a25
a13,a1
a15,a1
a17,a1
a19,a1
a22,a1
a23,a1
a32,a22
a33,a23
a34,a54
a37,a45
a39,a42
b1,b3
b6,b40
b41,b9
b12,b42
b17,b38
b22,b20
b29,b42
b14,b12
b13,b27
b15,b31
b10,b33
b8,b36
b5,b34
b7,b35
b18,b37
b16,b26
b11,b32
b19,b39
b24,b25
c6,c12
c2,c14
c3,c5
c8,c10
c10,c14
c11,c7
c13,c5
c15,c16
c27,c17
c28,c18
c20,c19
c21,c22
c23,c24
c25,c26
d5,d7
d9,d11
d13,d15
d17,d19
d21,d23
d25,d27
e4,e2
e96,e2
e8,e43
e13,e43
e41,e14
e83,e45
e90,e93
e81,e70
e63,e25
e62,e60
e57,e55
e32,e34
@.
*equal_r(Elt,Elt)
a16,a18
a29,a7
a31,a9
a33,a23
a34,a54
a36,a37
a37,a45
a38,a55
a42,a43
a45,a46
a46,a47
a47,a48
a48,a49
a49,a50
a50,a51
a51,a52
a52,a53
b1,b3
b6,b40
b41,b9
b12,b42
b17,b38
b22,b20
b29,b42
b14,b12
b25,b39
b38,b22
b20,b17
b3,b6
b9,b12
b29,b14
b40,b1
b42,b41
c6,c12
c2,c14
c10,c14
c15,c17
c17,c18
c18,c21
c21,c22
c22,c20
c20,c23
c23,c24
c19,c20
c28,c19
c27,c28
c16,c27
c25,c16
c26,c25
d5,d7
d9,d11
d17,d19
d21,d23
d30,d31
d31,d32
d32,d33
d34,d35
d36,d37
d38,d39
d40,d41
d42,d43
d44,d45
d46,d47
d48,d49
d50,d51
d52,d53
d54,d55
d55,d56
d56,d57
e90,e93
e93,e4
e13,e96
e11,e10
e41,e79
e39,e47
e75,e76
e76,e77
e77,e78
e78,e84
e84,e85
e14,e16
e2,e20
e18,e21
e60,e37
e59,e36
e35,e58
e57,e34
e33,e56
@.
mesh(Elt, No) #-
b1,6
b2,1
b3,6
b4,1
b5,1
b6,6
b7,1
b8,2
b9,6
b10,2
b11,6
b12,6
b13,3
b14,6
b15,3
b16,3
b17,8
b18,3
b19,7
b20,8
b21,1
b22,8
b23,1
b24,7
b25,7
b26,2
b27,2
b28,1
b29,6
b30,1
b31,2
b32,4
b33,2
b34,2
b35,2
b36,2
b37,1
b38,8
b39,7
b40,6
b41,6
b42,6
c1,1
c2,2
c3,1
c4,1
c5,3
c6,2
c7,2
c8,3
c9,1
c10,2
c11,1
c12,2
c13,1
c14,2
c15,8
c16,8
c17,8
c18,8
c19,8
c20,8
c21,8
c22,8
c23,8
c24,8
c25,8
c26,8
c27,8
c28,8
d1,2
d2,4
d3,1
d4,1
d5,1
d6,2
d7,1
d8,2
d9,1
d10,2
d11,1
d12,2
d13,1
d14,2
d15,2
d16,2
d17,1
d18,2
d19,1
d20,2
d21,1
d22,2
d23,1
d24,1
d25,1
d26,1
d27,2
d28,4
d29,2
d30,12
d31,12
d32,12
d33,12
d34,12
d35,12
d36,12
d37,12
d38,12
d39,12
d40,12
d41,12
d42,12
d43,12
d44,12
d45,12
d46,12
d47,12
d48,12
d49,12
d50,12
d51,12
d52,12
d53,12
d54,12
d55,12
d56,12
d57,12
e1,1
e2,3
e3,1
e4,2
e5,2
e6,3
e7,2
e8,2
e9,1
e10,4
e11,4
e12,1
e13,1
e14,5
e15,2
e16,5
e17,2
e18,3
e19,10
e20,3
e21,3
e22,12
e23,2
e24,4
e25,2
e26,3
e27,3
e28,5
e29,2
e30,1
e31,1
e32,2
e33,1
e34,2
e35,1
e36,1
e37,2
e38,1
e39,6
e40,2
e41,6
e42,1
e43,5
e44,2
e45,5
e46,2
e47,6
e48,2
e49,5
e50,2
e51,1
e52,3
e53,1
e54,1
e55,2
e56,1
e57,2
e58,1
e59,1
e60,2
e61,1
e62,2
e63,3
e64,1
e65,4
e66,2
e67,2
e68,1
e69,2
e70,2
e71,2
e72,3
e73,2
e74,4
e75,9
e76,9
e77,9
e78,9
e79,6
e80,5
e81,2
e82,2
e83,2
e84,9
e85,9
e86,5
e87,1
e88,3
e89,2
e90,2
e91,2
e92,5
e93,2
e94,2
e95,2
e96,1
@.

mesh
a2,1
a3,8
a4,1
a5,1
a6,2
a7,1
a8,1
a9,3
a10,1
a11,3
a12,1
a13,1
a14,1
a15,4
a16,1
a17,2
a18,1
a19,4
a20,1
a21,1
a22,2
a23,2
a24,1
a25,2
a26,1
a27,1
a28,2
a29,1
a30,1
a31,3
a32,2
a33,2
a34,11
a35,1
a36,12
a37,12
a38,12
a39,5
a40,2
a41,1
a42,5
a43,5
a44,1
a45,12
a46,12
a47,12
a48,12
a49,12
a50,12
a51,12
a52,12
a53,12
a54,11
a55,12
@.
@//E*O*F Release2/Examples/mesh_a.d//
chmod u=r,g=r,o=r Release2/Examples/mesh_a.d
 
echo x - Release2/Examples/mesh_b.d
sed 's/^@//' > "Release2/Examples/mesh_b.d" <<'@//E*O*F Release2/Examples/mesh_b.d//'
#Elt:
 a1, a2, a3, a4, a5, a6, a7, a8, a9,a10,
a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,
a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,
a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,
a41,a42,a43,a44,a45,a46,a47,a48,a49,a50,
a51,a52,a53,a54,a55,
 b1, b2, b3, b4, b5, b6, b7, b8, b9,b10,
b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,
b21,b22,b23,b24,b25,b26,b27,b28,b29,b30,
b31,b32,b33,b34,b35,b36,b37,b38,b39,b40,
b41,b42,
 c1, c2, c3, c4, c5, c6, c7, c8, c9,c10,
c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,
c21,c22,c23,c24,c25,c26,c27,c28,
 d1, d2, d3, d4, d5, d6, d7, d8, d9,d10,
d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,
d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,
d31,d32,d33,d34,d35,d36,d37,d38,d39,d40,
d41,d42,d43,d44,d45,d46,d47,d48,d49,d50,
d51,d52,d53,d54,d55,d56,d57,
 e1, e2, e3, e4, e5, e6, e7, e8, e9,e10,
e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,
e21,e22,e23,e24,e25,e26,e27,e28,e29,e30,
e31,e32,e33,e34,e35,e36,e37,e38,e39,e40,
e41,e42,e43,e44,e45,e46,e47,e48,e49,e50,
e51,e52,e53,e54,e55,e56,e57,e58,e59,e60,
e61,e62,e63,e64,e65,e66,e67,e68,e69,e70,
e71,e72,e73,e74,e75,e76,e77,e78,e79,e80,
e81,e82,e83,e84,e85,e86,e87,e88,e89,e90,
e91,e92,e93,e94,e95,e96.
No:
*0,*1,*2,*3,*4,*5,*6,*7,*8,*9,*10,*11,*12.

*long(Elt)
a1
a34
a54
b19
b39
e19
e22
@.
*usual(Elt)
a3
a39
b11
b13
b15
b24
b25
b27
b31
b32
c5
c6
c8
c10
c12
c14
d1
d2
d28
d29
e2
e4
e5
e6
e7
e8
e14
e15
e16
e17
e18
e20
e21
e24
e25
e26
e27
e28
e29
e32
e34
e35
e37
e40
e43
e44
e45
e46
e48
e49
e50
e52
e55
e57
e58
e60
e62
e63
e65
e66
e67
e69
e70
e71
e72
e73
e74
e80
e81
e83
e86
e88
e89
e90
e91
e92
e93
e94
e95
@.
*short(Elt)
a6
a9
a11
a13
a15
a19
a22
a25
a26
a28
a31
a35
a40
a44
b5
b7
b8
b10
b16
b18
b26
b33
b36
b37
c7
c13
d3
d4
d6
d8
d10
d12
d14
d15
d16
d18
d20
d22
d24
d26
d27
e1
e3
e9
e12
e23
e30
e31
e33
e36
e38
e51
e53
e54
e56
e59
e61
e64
e68
e82
e87
@.
*circuit(Elt)
c15
c16
c17
c18
c19
c24
c25
c26
c27
c28
d30
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d45
d46
d47
d48
d49
d50
d51
d52
d53
d54
d55
d56
d57
@.
*half_circuit(Elt)
a36
a37
a45
a46
a47
a48
a49
a50
a51
a52
a53
b3
b6
b9
b12
b17
b20
b41
b42
@.
*quarter_circuit(Elt)
e75
e76
e77
e78
e84
e85
@.
*short_for_hole(Elt)
a16
a17
a18
a23
a33
b28
b30
b34
b35
c3
c4
e13
e96
@.
*long_for_hole(Elt)
c2
e41
e79
@.
*circuit_hole(Elt)
c20
c21
c22
c23
@.
*half_circuit_hole(Elt)
a38
a42
a43
a55
b1
b14
b22
b29
b38
b40
e10
e11
e39
e47
@.
*not_important(Elt)
a2
a4
a5
a7
a8
a10
a12
a14
a20
a21
a24
a27
a29
a30
a32
a41
b2
b4
b21
b23
c1
c9
c11
d5
d7
d9
d11
d13
d17
d19
d21
d23
d25
e42
@.
*free(Elt)
a39
a40
c6
c7
c11
c12
c13
c15
c16
c17
c18
c19
c20
c27
c28
d3
d4
d5
d6
d7
d8
d9
d10
d11
d12
d13
d14
d15
d16
d17
d18
d19
d20
d21
d22
d23
d24
d25
d26
d27
d29
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d45
d46
d47
d48
d49
d50
d51
d52
d53
d54
d55
d56
d57
e6
e16
e19
e20
e22
e23
e26
e27
e28
e29
e30
e31
e32
e33
e34
e35
e36
e45
e48
e49
e51
e52
e53
e54
e66
e71
e73
e83
e86
e88
e90
e92
e93
e94
@.
*one_side_fixed(Elt)
a34
a35
a41
c2
c3
c5
c8
c10
c14
e5
e7
e15
e17
e18
e21
e24
e37
e44
e46
e50
e65
e67
e69
e74
e76
e77
e78
e82
e84
e85
e89
e91
e95
@.
*two_side_fixed(Elt)
a36
a37
a38
a42
a43
a45
a46
a47
a48
a49
a50
a51
a52
a53
a55
b6
b9
b12
b14
b17
b20
b22
b29
b38
b40
b41
b42
e10
e11
e39
e47
@.
*fixed(Elt)
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
a11
a12
a13
a14
a15
a16
a17
a18
a19
a20
a21
a22
a23
a24
a25
a26
a27
a28
a29
a30
a31
a32
a33
a44
a54
b1
b2
b3
b4
b5
b7
b8
b10
b11
b13
b15
b16
b18
b19
b21
b23
b24
b25
b26
b27
b28
b30
b31
b32
b33
b34
b35
b36
b37
b39
c1
c4
c9
c21
c22
c23
c24
c25
c26
d1
d2
d28
d30
e1
e2
e3
e4
e8
e9
e12
e13
e14
e25
e38
e40
e41
e42
e43
e55
e56
e57
e58
e59
e60
e61
e62
e63
e64
e68
e70
e72
e75
e79
e80
e81
e87
e96
@.
*not_loaded(Elt)
a1
a2
a3
a4
a5
a6
a7
a23
a24
a25
a26
a27
a28
a29
a33
a36
a37
a42
a44
a45
a46
b1
b2
b3
b4
b5
b6
b7
b8
b9
b10
b11
b12
b13
b14
b15
b16
b17
b18
b19
b20
b21
b23
b24
c1
c2
c3
c4
c5
c6
c7
c8
c9
c15
c17
c18
c20
c21
c22
c23
c26
d1
d2
d3
d4
d5
d6
d7
d8
d9
d10
d11
d12
d13
d14
d15
d16
d20
d21
d22
d23
d24
d25
d26
d27
d28
d29
d30
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d49
d50
d51
d52
d53
d54
d55
d56
d57
e1
e2
e3
e4
e5
e6
e7
e8
e9
e10
e11
e12
e13
e14
e15
e16
e17
e18
e19
e20
e21
e22
e23
e24
e25
e26
e27
e28
e29
e30
e31
e32
e33
e34
e35
e39
e40
e41
e42
e43
e44
e45
e46
e47
e48
e49
e50
e51
e52
e53
e54
e55
e56
e57
e58
e62
e63
e64
e65
e66
e67
e68
e69
e70
e71
e72
e73
e74
e77
e78
e79
e80
e81
e82
e83
e84
e85
e86
e87
e88
e89
e90
e91
e92
e93
e94
e95
e96
@.
*one_side_loaded(Elt)
a34
a35
a40
a41
a54
d45
d46
d47
d48
e36
e38
e59
e61
@.
*two_side_loaded(Elt)
e37
@.
*cont_loaded(Elt)
a8
a9
a10
a11
a12
a13
a14
a15
a16
a17
a18
a19
a20
a21
a22
a30
a31
a32
a38
a39
a43
a47
a48
a49
a50
a51
a52
a53
b22
b25
b26
b27
b28
b29
b30
b31
b32
b33
b34
b35
b36
b37
b38
b39
b40
b41
b42
c10
c11
c12
c13
c14
c16
c19
c24
c25
c27
c28
d17
d18
d19
e60
e75
e76
@.
*neighbour(Elt,Elt)
a1,a2
a1,a44
a10,a11
a10,a49
a11,a12
a11,a49
a12,a13
a12,a51
a13,a14
a14,a15
a14,a53
a15,a16
a15,a38
a16,a17
a16,a55
a17,a18
a18,a19
a18,a38
a19,a20
a2,a3
a2,a54
a20,a21
a20,a52
a21,a22
a22,a23
a22,a50
a23,a24
a24,a1
a24,a42
a25,a26
a25,a35
a26,a27
a26,a36
a27,a28
a27,a37
a28,a29
a28,a37
a29,a30
a29,a46
a3,a4
a30,a31
a30,a46
a31,a32
a31,a48
a32,a33
a32,a48
a33,a25
a34,a35
a34,a40
a35,a26
a35,a40
a36,a27
a36,a4
a37,a5
a37,a6
a38,a16
a38,a19
a39,a41
a4,a34
a4,a5
a40,a39
a41,a44
a42,a25
a44,a24
a44,a54
a45,a28
a45,a29
a46,a7
a46,a8
a47,a30
a47,a31
a48,a10
a48,a9
a49,a32
a49,a43
a5,a36
a5,a6
a50,a11
a50,a12
a51,a22
a52,a14
a53,a20
a54,a1
a54,a44
a55,a17
a55,a18
a6,a45
a6,a7
a7,a45
a7,a8
a8,a47
a8,a9
a9,a10
a9,a47
b1,b2
b1,b34
b10,b11
b10,b9
b11,b12
b11,b15
b12,b15
b12,b16
b13,b12
b13,b16
b14,b13
b15,b14
b15,b30
b16,b17
b16,b24
b17,b18
b18,b8
b18,b9
b19,b18
b19,b20
b2,b3
b2,b5
b20,b21
b20,b24
b21,b22
b21,b25
b22,b23
b22,b25
b23,b19
b23,b20
b24,b17
b24,b21
b25,b26
b25,b38
b26,b27
b26,b38
b27,b28
b27,b42
b28,b13
b29,b27
b3,b4
b3,b5
b30,b31
b31,b29
b31,b32
b32,b33
b32,b42
b33,b34
b33,b41
b34,b2
b34,b40
b35,b1
b35,b36
b36,b37
b36,b40
b37,b39
b37,b41
b38,b37
b39,b22
b39,b23
b4,b35
b40,b33
b40,b35
b41,b32
b41,b36
b42,b26
b42,b31
b5,b10
b5,b6
b6,b10
b6,b7
b7,b3
b7,b4
b8,b6
b8,b7
b9,b11
b9,b8
c1,c2
c1,c23
c10,c11
c10,c25
c11,c12
c11,c27
c12,c13
c12,c28
c13,c14
c13,c28
c14,c1
c14,c24
c15,c8
c16,c10
c16,c11
c17,c7
c18,c6
c19,c13
c19,c14
c2,c23
c2,c3
c20,c2
c20,c3
c21,c4
c21,c5
c24,c1
c26,c9
c27,c12
c3,c22
c3,c4
c4,c22
c4,c5
c5,c18
c5,c6
c6,c17
c6,c7
c7,c15
c7,c8
c8,c26
c8,c9
c9,c10
c9,c25
d1,d2
d1,d30
d10,d11
d10,d39
d11,d12
d11,d40
d12,d13
d12,d41
d13,d14
d13,d42
d14,d15
d14,d43
d15,d16
d15,d44
d16,d17
d16,d45
d17,d18
d17,d46
d18,d19
d18,d47
d19,d20
d19,d48
d2,d3
d2,d31
d20,d21
d20,d49
d21,d22
d21,d50
d22,d23
d22,d51
d23,d24
d23,d52
d24,d25
d24,d53
d25,d26
d25,d54
d26,d27
d26,d55
d27,d28
d27,d56
d28,d29
d28,d57
d3,d32
d3,d4
d30,d2
d31,d3
d32,d4
d33,d5
d34,d6
d35,d7
d36,d8
d37,d9
d38,d10
d39,d11
d4,d33
d4,d5
d40,d12
d41,d13
d42,d14
d43,d15
d44,d16
d45,d17
d46,d18
d47,d19
d48,d20
d49,d21
d5,d34
d5,d6
d50,d22
d51,d23
d52,d24
d53,d25
d54,d26
d55,d27
d56,d28
d57,d29
d6,d35
d6,d7
d7,d36
d7,d8
d8,d37
d8,d9
d9,d10
d9,d38
e1,e2
e1,e5
e10,e95
e10,e96
e11,e13
e11,e3
e12,e11
e12,e14
e13,e10
e13,e12
e14,e15
e14,e40
e15,e16
e15,e40
e16,e17
e16,e28
e17,e12
e17,e14
e18,e19
e18,e20
e19,e20
e19,e53
e2,e18
e2,e3
e20,e22
e21,e1
e22,e21
e22,e26
e23,e22
e23,e27
e24,e23
e24,e25
e25,e55
e25,e85
e26,e23
e26,e94
e27,e24
e27,e51
e28,e17
e28,e52
e29,e15
e29,e16
e3,e18
e3,e96
e30,e29
e30,e86
e31,e30
e31,e86
e32,e31
e32,e84
e33,e32
e33,e84
e34,e33
e34,e78
e35,e34
e36,e35
e36,e76
e37,e36
e37,e76
e38,e37
e38,e75
e39,e38
e39,e41
e4,e1
e4,e5
e40,e39
e40,e41
e41,e42
e41,e47
e42,e43
e43,e44
e43,e87
e44,e45
e44,e49
e45,e46
e45,e48
e46,e43
e46,e47
e47,e79
e47,e91
e48,e46
e48,e92
e49,e45
e49,e69
e5,e6
e5,e93
e50,e71
e51,e54
e52,e29
e52,e30
e53,e28
e53,e52
e54,e26
e54,e94
e55,e56
e55,e85
e56,e57
e56,e78
e57,e58
e58,e59
e58,e77
e59,e60
e59,e77
e6,e7
e6,e93
e60,e61
e60,e75
e61,e62
e61,e72
e62,e63
e62,e72
e63,e64
e63,e65
e64,e24
e64,e25
e65,e64
e65,e73
e66,e65
e66,e67
e67,e66
e67,e70
e68,e67
e68,e81
e69,e68
e69,e81
e7,e8
e7,e87
e70,e50
e70,e68
e71,e73
e71,e74
e72,e50
e72,e70
e73,e66
e73,e74
e74,e62
e74,e63
e75,e37
e75,e61
e76,e59
e76,e60
e77,e35
e77,e36
e78,e33
e78,e57
e79,e38
e79,e39
e8,e89
e8,e9
e80,e79
e80,e91
e81,e80
e81,e82
e82,e80
e82,e83
e83,e49
e83,e69
e84,e55
e84,e56
e85,e31
e85,e32
e86,e51
e86,e54
e87,e44
e87,e8
e88,e89
e88,e90
e89,e9
e89,e90
e9,e10
e9,e13
e90,e6
e90,e7
e91,e48
e92,e82
e92,e83
e93,e88
e93,e95
e94,e19
e94,e53
e95,e4
e95,e88
e96,e11
e96,e4
@.
*opposite_r(Elt,Elt)
a11,a3
a9,a3
a31,a25
a13,a1
a15,a1
a17,a1
a19,a1
a22,a1
a23,a1
a32,a22
a33,a23
a34,a54
a37,a45
a39,a42
b1,b3
b6,b40
b41,b9
b12,b42
b17,b38
b22,b20
b29,b42
b14,b12
b13,b27
b15,b31
b10,b33
b8,b36
b5,b34
b7,b35
b18,b37
b16,b26
b11,b32
b19,b39
b24,b25
c6,c12
c2,c14
c3,c5
c8,c10
c10,c14
c11,c7
c13,c5
c15,c16
c27,c17
c28,c18
c20,c19
c21,c22
c23,c24
c25,c26
d5,d7
d9,d11
d13,d15
d17,d19
d21,d23
d25,d27
e4,e2
e96,e2
e8,e43
e13,e43
e41,e14
e83,e45
e90,e93
e81,e70
e63,e25
e62,e60
e57,e55
e32,e34
@.
*equal_r(Elt,Elt)
a16,a18
a29,a7
a31,a9
a33,a23
a34,a54
a36,a37
a37,a45
a38,a55
a42,a43
a45,a46
a46,a47
a47,a48
a48,a49
a49,a50
a50,a51
a51,a52
a52,a53
b1,b3
b6,b40
b41,b9
b12,b42
b17,b38
b22,b20
b29,b42
b14,b12
b25,b39
b38,b22
b20,b17
b3,b6
b9,b12
b29,b14
b40,b1
b42,b41
c6,c12
c2,c14
c10,c14
c15,c17
c17,c18
c18,c21
c21,c22
c22,c20
c20,c23
c23,c24
c19,c20
c28,c19
c27,c28
c16,c27
c25,c16
c26,c25
d5,d7
d9,d11
d17,d19
d21,d23
d30,d31
d31,d32
d32,d33
d34,d35
d36,d37
d38,d39
d40,d41
d42,d43
d44,d45
d46,d47
d48,d49
d50,d51
d52,d53
d54,d55
d55,d56
d56,d57
e90,e93
e93,e4
e13,e96
e11,e10
e41,e79
e39,e47
e75,e76
e76,e77
e77,e78
e78,e84
e84,e85
e14,e16
e2,e20
e18,e21
e60,e37
e59,e36
e35,e58
e57,e34
e33,e56
@.
mesh(Elt, No) #-
a2,1
a3,8
a4,1
a5,1
a6,2
a7,1
a8,1
a9,3
a10,1
a11,3
a12,1
a13,1
a14,1
a15,4
a16,1
a17,2
a18,1
a19,4
a20,1
a21,1
a22,2
a23,2
a24,1
a25,2
a26,1
a27,1
a28,2
a29,1
a30,1
a31,3
a32,2
a33,2
a34,11
a35,1
a36,12
a37,12
a38,12
a39,5
a40,2
a41,1
a42,5
a43,5
a44,1
a45,12
a46,12
a47,12
a48,12
a49,12
a50,12
a51,12
a52,12
a53,12
a54,11
a55,12
c1,1
c2,2
c3,1
c4,1
c5,3
c6,2
c7,2
c8,3
c9,1
c10,2
c11,1
c12,2
c13,1
c14,2
c15,8
c16,8
c17,8
c18,8
c19,8
c20,8
c21,8
c22,8
c23,8
c24,8
c25,8
c26,8
c27,8
c28,8
d1,2
d2,4
d3,1
d4,1
d5,1
d6,2
d7,1
d8,2
d9,1
d10,2
d11,1
d12,2
d13,1
d14,2
d15,2
d16,2
d17,1
d18,2
d19,1
d20,2
d21,1
d22,2
d23,1
d24,1
d25,1
d26,1
d27,2
d28,4
d29,2
d30,12
d31,12
d32,12
d33,12
d34,12
d35,12
d36,12
d37,12
d38,12
d39,12
d40,12
d41,12
d42,12
d43,12
d44,12
d45,12
d46,12
d47,12
d48,12
d49,12
d50,12
d51,12
d52,12
d53,12
d54,12
d55,12
d56,12
d57,12
e1,1
e2,3
e3,1
e4,2
e5,2
e6,3
e7,2
e8,2
e9,1
e10,4
e11,4
e12,1
e13,1
e14,5
e15,2
e16,5
e17,2
e18,3
e19,10
e20,3
e21,3
e22,12
e23,2
e24,4
e25,2
e26,3
e27,3
e28,5
e29,2
e30,1
e31,1
e32,2
e33,1
e34,2
e35,1
e36,1
e37,2
e38,1
e39,6
e40,2
e41,6
e42,1
e43,5
e44,2
e45,5
e46,2
e47,6
e48,2
e49,5
e50,2
e51,1
e52,3
e53,1
e54,1
e55,2
e56,1
e57,2
e58,1
e59,1
e60,2
e61,1
e62,2
e63,3
e64,1
e65,4
e66,2
e67,2
e68,1
e69,2
e70,2
e71,2
e72,3
e73,2
e74,4
e75,9
e76,9
e77,9
e78,9
e79,6
e80,5
e81,2
e82,2
e83,2
e84,9
e85,9
e86,5
e87,1
e88,3
e89,2
e90,2
e91,2
e92,5
e93,2
e94,2
e95,2
e96,1
@.

mesh
b1,6
b2,1
b3,6
b4,1
b5,1
b6,6
b7,1
b8,2
b9,6
b10,2
b11,6
b12,6
b13,3
b14,6
b15,3
b16,3
b17,8
b18,3
b19,7
b20,8
b21,1
b22,8
b23,1
b24,7
b25,7
b26,2
b27,2
b28,1
b29,6
b30,1
b31,2
b32,4
b33,2
b34,2
b35,2
b36,2
b37,1
b38,8
b39,7
b40,6
b41,6
b42,6
@.
@//E*O*F Release2/Examples/mesh_b.d//
chmod u=r,g=r,o=r Release2/Examples/mesh_b.d
 
echo x - Release2/Examples/mesh_c.d
sed 's/^@//' > "Release2/Examples/mesh_c.d" <<'@//E*O*F Release2/Examples/mesh_c.d//'
#Elt:
 a1, a2, a3, a4, a5, a6, a7, a8, a9,a10,
a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,
a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,
a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,
a41,a42,a43,a44,a45,a46,a47,a48,a49,a50,
a51,a52,a53,a54,a55,
 b1, b2, b3, b4, b5, b6, b7, b8, b9,b10,
b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,
b21,b22,b23,b24,b25,b26,b27,b28,b29,b30,
b31,b32,b33,b34,b35,b36,b37,b38,b39,b40,
b41,b42,
 c1, c2, c3, c4, c5, c6, c7, c8, c9,c10,
c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,
c21,c22,c23,c24,c25,c26,c27,c28,
 d1, d2, d3, d4, d5, d6, d7, d8, d9,d10,
d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,
d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,
d31,d32,d33,d34,d35,d36,d37,d38,d39,d40,
d41,d42,d43,d44,d45,d46,d47,d48,d49,d50,
d51,d52,d53,d54,d55,d56,d57,
 e1, e2, e3, e4, e5, e6, e7, e8, e9,e10,
e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,
e21,e22,e23,e24,e25,e26,e27,e28,e29,e30,
e31,e32,e33,e34,e35,e36,e37,e38,e39,e40,
e41,e42,e43,e44,e45,e46,e47,e48,e49,e50,
e51,e52,e53,e54,e55,e56,e57,e58,e59,e60,
e61,e62,e63,e64,e65,e66,e67,e68,e69,e70,
e71,e72,e73,e74,e75,e76,e77,e78,e79,e80,
e81,e82,e83,e84,e85,e86,e87,e88,e89,e90,
e91,e92,e93,e94,e95,e96.
No:
*0,*1,*2,*3,*4,*5,*6,*7,*8,*9,*10,*11,*12.

*long(Elt)
a1
a34
a54
b19
b39
e19
e22
@.
*usual(Elt)
a3
a39
b11
b13
b15
b24
b25
b27
b31
b32
c5
c6
c8
c10
c12
c14
d1
d2
d28
d29
e2
e4
e5
e6
e7
e8
e14
e15
e16
e17
e18
e20
e21
e24
e25
e26
e27
e28
e29
e32
e34
e35
e37
e40
e43
e44
e45
e46
e48
e49
e50
e52
e55
e57
e58
e60
e62
e63
e65
e66
e67
e69
e70
e71
e72
e73
e74
e80
e81
e83
e86
e88
e89
e90
e91
e92
e93
e94
e95
@.
*short(Elt)
a6
a9
a11
a13
a15
a19
a22
a25
a26
a28
a31
a35
a40
a44
b5
b7
b8
b10
b16
b18
b26
b33
b36
b37
c7
c13
d3
d4
d6
d8
d10
d12
d14
d15
d16
d18
d20
d22
d24
d26
d27
e1
e3
e9
e12
e23
e30
e31
e33
e36
e38
e51
e53
e54
e56
e59
e61
e64
e68
e82
e87
@.
*circuit(Elt)
c15
c16
c17
c18
c19
c24
c25
c26
c27
c28
d30
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d45
d46
d47
d48
d49
d50
d51
d52
d53
d54
d55
d56
d57
@.
*half_circuit(Elt)
a36
a37
a45
a46
a47
a48
a49
a50
a51
a52
a53
b3
b6
b9
b12
b17
b20
b41
b42
@.
*quarter_circuit(Elt)
e75
e76
e77
e78
e84
e85
@.
*short_for_hole(Elt)
a16
a17
a18
a23
a33
b28
b30
b34
b35
c3
c4
e13
e96
@.
*long_for_hole(Elt)
c2
e41
e79
@.
*circuit_hole(Elt)
c20
c21
c22
c23
@.
*half_circuit_hole(Elt)
a38
a42
a43
a55
b1
b14
b22
b29
b38
b40
e10
e11
e39
e47
@.
*not_important(Elt)
a2
a4
a5
a7
a8
a10
a12
a14
a20
a21
a24
a27
a29
a30
a32
a41
b2
b4
b21
b23
c1
c9
c11
d5
d7
d9
d11
d13
d17
d19
d21
d23
d25
e42
@.
*free(Elt)
a39
a40
c6
c7
c11
c12
c13
c15
c16
c17
c18
c19
c20
c27
c28
d3
d4
d5
d6
d7
d8
d9
d10
d11
d12
d13
d14
d15
d16
d17
d18
d19
d20
d21
d22
d23
d24
d25
d26
d27
d29
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d45
d46
d47
d48
d49
d50
d51
d52
d53
d54
d55
d56
d57
e6
e16
e19
e20
e22
e23
e26
e27
e28
e29
e30
e31
e32
e33
e34
e35
e36
e45
e48
e49
e51
e52
e53
e54
e66
e71
e73
e83
e86
e88
e90
e92
e93
e94
@.
*one_side_fixed(Elt)
a34
a35
a41
c2
c3
c5
c8
c10
c14
e5
e7
e15
e17
e18
e21
e24
e37
e44
e46
e50
e65
e67
e69
e74
e76
e77
e78
e82
e84
e85
e89
e91
e95
@.
*two_side_fixed(Elt)
a36
a37
a38
a42
a43
a45
a46
a47
a48
a49
a50
a51
a52
a53
a55
b6
b9
b12
b14
b17
b20
b22
b29
b38
b40
b41
b42
e10
e11
e39
e47
@.
*fixed(Elt)
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
a11
a12
a13
a14
a15
a16
a17
a18
a19
a20
a21
a22
a23
a24
a25
a26
a27
a28
a29
a30
a31
a32
a33
a44
a54
b1
b2
b3
b4
b5
b7
b8
b10
b11
b13
b15
b16
b18
b19
b21
b23
b24
b25
b26
b27
b28
b30
b31
b32
b33
b34
b35
b36
b37
b39
c1
c4
c9
c21
c22
c23
c24
c25
c26
d1
d2
d28
d30
e1
e2
e3
e4
e8
e9
e12
e13
e14
e25
e38
e40
e41
e42
e43
e55
e56
e57
e58
e59
e60
e61
e62
e63
e64
e68
e70
e72
e75
e79
e80
e81
e87
e96
@.
*not_loaded(Elt)
a1
a2
a3
a4
a5
a6
a7
a23
a24
a25
a26
a27
a28
a29
a33
a36
a37
a42
a44
a45
a46
b1
b2
b3
b4
b5
b6
b7
b8
b9
b10
b11
b12
b13
b14
b15
b16
b17
b18
b19
b20
b21
b23
b24
c1
c2
c3
c4
c5
c6
c7
c8
c9
c15
c17
c18
c20
c21
c22
c23
c26
d1
d2
d3
d4
d5
d6
d7
d8
d9
d10
d11
d12
d13
d14
d15
d16
d20
d21
d22
d23
d24
d25
d26
d27
d28
d29
d30
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d49
d50
d51
d52
d53
d54
d55
d56
d57
e1
e2
e3
e4
e5
e6
e7
e8
e9
e10
e11
e12
e13
e14
e15
e16
e17
e18
e19
e20
e21
e22
e23
e24
e25
e26
e27
e28
e29
e30
e31
e32
e33
e34
e35
e39
e40
e41
e42
e43
e44
e45
e46
e47
e48
e49
e50
e51
e52
e53
e54
e55
e56
e57
e58
e62
e63
e64
e65
e66
e67
e68
e69
e70
e71
e72
e73
e74
e77
e78
e79
e80
e81
e82
e83
e84
e85
e86
e87
e88
e89
e90
e91
e92
e93
e94
e95
e96
@.
*one_side_loaded(Elt)
a34
a35
a40
a41
a54
d45
d46
d47
d48
e36
e38
e59
e61
@.
*two_side_loaded(Elt)
e37
@.
*cont_loaded(Elt)
a8
a9
a10
a11
a12
a13
a14
a15
a16
a17
a18
a19
a20
a21
a22
a30
a31
a32
a38
a39
a43
a47
a48
a49
a50
a51
a52
a53
b22
b25
b26
b27
b28
b29
b30
b31
b32
b33
b34
b35
b36
b37
b38
b39
b40
b41
b42
c10
c11
c12
c13
c14
c16
c19
c24
c25
c27
c28
d17
d18
d19
e60
e75
e76
@.
*neighbour(Elt,Elt)
a1,a2
a1,a44
a10,a11
a10,a49
a11,a12
a11,a49
a12,a13
a12,a51
a13,a14
a14,a15
a14,a53
a15,a16
a15,a38
a16,a17
a16,a55
a17,a18
a18,a19
a18,a38
a19,a20
a2,a3
a2,a54
a20,a21
a20,a52
a21,a22
a22,a23
a22,a50
a23,a24
a24,a1
a24,a42
a25,a26
a25,a35
a26,a27
a26,a36
a27,a28
a27,a37
a28,a29
a28,a37
a29,a30
a29,a46
a3,a4
a30,a31
a30,a46
a31,a32
a31,a48
a32,a33
a32,a48
a33,a25
a34,a35
a34,a40
a35,a26
a35,a40
a36,a27
a36,a4
a37,a5
a37,a6
a38,a16
a38,a19
a39,a41
a4,a34
a4,a5
a40,a39
a41,a44
a42,a25
a44,a24
a44,a54
a45,a28
a45,a29
a46,a7
a46,a8
a47,a30
a47,a31
a48,a10
a48,a9
a49,a32
a49,a43
a5,a36
a5,a6
a50,a11
a50,a12
a51,a22
a52,a14
a53,a20
a54,a1
a54,a44
a55,a17
a55,a18
a6,a45
a6,a7
a7,a45
a7,a8
a8,a47
a8,a9
a9,a10
a9,a47
b1,b2
b1,b34
b10,b11
b10,b9
b11,b12
b11,b15
b12,b15
b12,b16
b13,b12
b13,b16
b14,b13
b15,b14
b15,b30
b16,b17
b16,b24
b17,b18
b18,b8
b18,b9
b19,b18
b19,b20
b2,b3
b2,b5
b20,b21
b20,b24
b21,b22
b21,b25
b22,b23
b22,b25
b23,b19
b23,b20
b24,b17
b24,b21
b25,b26
b25,b38
b26,b27
b26,b38
b27,b28
b27,b42
b28,b13
b29,b27
b3,b4
b3,b5
b30,b31
b31,b29
b31,b32
b32,b33
b32,b42
b33,b34
b33,b41
b34,b2
b34,b40
b35,b1
b35,b36
b36,b37
b36,b40
b37,b39
b37,b41
b38,b37
b39,b22
b39,b23
b4,b35
b40,b33
b40,b35
b41,b32
b41,b36
b42,b26
b42,b31
b5,b10
b5,b6
b6,b10
b6,b7
b7,b3
b7,b4
b8,b6
b8,b7
b9,b11
b9,b8
c1,c2
c1,c23
c10,c11
c10,c25
c11,c12
c11,c27
c12,c13
c12,c28
c13,c14
c13,c28
c14,c1
c14,c24
c15,c8
c16,c10
c16,c11
c17,c7
c18,c6
c19,c13
c19,c14
c2,c23
c2,c3
c20,c2
c20,c3
c21,c4
c21,c5
c24,c1
c26,c9
c27,c12
c3,c22
c3,c4
c4,c22
c4,c5
c5,c18
c5,c6
c6,c17
c6,c7
c7,c15
c7,c8
c8,c26
c8,c9
c9,c10
c9,c25
d1,d2
d1,d30
d10,d11
d10,d39
d11,d12
d11,d40
d12,d13
d12,d41
d13,d14
d13,d42
d14,d15
d14,d43
d15,d16
d15,d44
d16,d17
d16,d45
d17,d18
d17,d46
d18,d19
d18,d47
d19,d20
d19,d48
d2,d3
d2,d31
d20,d21
d20,d49
d21,d22
d21,d50
d22,d23
d22,d51
d23,d24
d23,d52
d24,d25
d24,d53
d25,d26
d25,d54
d26,d27
d26,d55
d27,d28
d27,d56
d28,d29
d28,d57
d3,d32
d3,d4
d30,d2
d31,d3
d32,d4
d33,d5
d34,d6
d35,d7
d36,d8
d37,d9
d38,d10
d39,d11
d4,d33
d4,d5
d40,d12
d41,d13
d42,d14
d43,d15
d44,d16
d45,d17
d46,d18
d47,d19
d48,d20
d49,d21
d5,d34
d5,d6
d50,d22
d51,d23
d52,d24
d53,d25
d54,d26
d55,d27
d56,d28
d57,d29
d6,d35
d6,d7
d7,d36
d7,d8
d8,d37
d8,d9
d9,d10
d9,d38
e1,e2
e1,e5
e10,e95
e10,e96
e11,e13
e11,e3
e12,e11
e12,e14
e13,e10
e13,e12
e14,e15
e14,e40
e15,e16
e15,e40
e16,e17
e16,e28
e17,e12
e17,e14
e18,e19
e18,e20
e19,e20
e19,e53
e2,e18
e2,e3
e20,e22
e21,e1
e22,e21
e22,e26
e23,e22
e23,e27
e24,e23
e24,e25
e25,e55
e25,e85
e26,e23
e26,e94
e27,e24
e27,e51
e28,e17
e28,e52
e29,e15
e29,e16
e3,e18
e3,e96
e30,e29
e30,e86
e31,e30
e31,e86
e32,e31
e32,e84
e33,e32
e33,e84
e34,e33
e34,e78
e35,e34
e36,e35
e36,e76
e37,e36
e37,e76
e38,e37
e38,e75
e39,e38
e39,e41
e4,e1
e4,e5
e40,e39
e40,e41
e41,e42
e41,e47
e42,e43
e43,e44
e43,e87
e44,e45
e44,e49
e45,e46
e45,e48
e46,e43
e46,e47
e47,e79
e47,e91
e48,e46
e48,e92
e49,e45
e49,e69
e5,e6
e5,e93
e50,e71
e51,e54
e52,e29
e52,e30
e53,e28
e53,e52
e54,e26
e54,e94
e55,e56
e55,e85
e56,e57
e56,e78
e57,e58
e58,e59
e58,e77
e59,e60
e59,e77
e6,e7
e6,e93
e60,e61
e60,e75
e61,e62
e61,e72
e62,e63
e62,e72
e63,e64
e63,e65
e64,e24
e64,e25
e65,e64
e65,e73
e66,e65
e66,e67
e67,e66
e67,e70
e68,e67
e68,e81
e69,e68
e69,e81
e7,e8
e7,e87
e70,e50
e70,e68
e71,e73
e71,e74
e72,e50
e72,e70
e73,e66
e73,e74
e74,e62
e74,e63
e75,e37
e75,e61
e76,e59
e76,e60
e77,e35
e77,e36
e78,e33
e78,e57
e79,e38
e79,e39
e8,e89
e8,e9
e80,e79
e80,e91
e81,e80
e81,e82
e82,e80
e82,e83
e83,e49
e83,e69
e84,e55
e84,e56
e85,e31
e85,e32
e86,e51
e86,e54
e87,e44
e87,e8
e88,e89
e88,e90
e89,e9
e89,e90
e9,e10
e9,e13
e90,e6
e90,e7
e91,e48
e92,e82
e92,e83
e93,e88
e93,e95
e94,e19
e94,e53
e95,e4
e95,e88
e96,e11
e96,e4
@.
*opposite_r(Elt,Elt)
a11,a3
a9,a3
a31,a25
a13,a1
a15,a1
a17,a1
a19,a1
a22,a1
a23,a1
a32,a22
a33,a23
a34,a54
a37,a45
a39,a42
b1,b3
b6,b40
b41,b9
b12,b42
b17,b38
b22,b20
b29,b42
b14,b12
b13,b27
b15,b31
b10,b33
b8,b36
b5,b34
b7,b35
b18,b37
b16,b26
b11,b32
b19,b39
b24,b25
c6,c12
c2,c14
c3,c5
c8,c10
c10,c14
c11,c7
c13,c5
c15,c16
c27,c17
c28,c18
c20,c19
c21,c22
c23,c24
c25,c26
d5,d7
d9,d11
d13,d15
d17,d19
d21,d23
d25,d27
e4,e2
e96,e2
e8,e43
e13,e43
e41,e14
e83,e45
e90,e93
e81,e70
e63,e25
e62,e60
e57,e55
e32,e34
@.
*equal_r(Elt,Elt)
a16,a18
a29,a7
a31,a9
a33,a23
a34,a54
a36,a37
a37,a45
a38,a55
a42,a43
a45,a46
a46,a47
a47,a48
a48,a49
a49,a50
a50,a51
a51,a52
a52,a53
b1,b3
b6,b40
b41,b9
b12,b42
b17,b38
b22,b20
b29,b42
b14,b12
b25,b39
b38,b22
b20,b17
b3,b6
b9,b12
b29,b14
b40,b1
b42,b41
c6,c12
c2,c14
c10,c14
c15,c17
c17,c18
c18,c21
c21,c22
c22,c20
c20,c23
c23,c24
c19,c20
c28,c19
c27,c28
c16,c27
c25,c16
c26,c25
d5,d7
d9,d11
d17,d19
d21,d23
d30,d31
d31,d32
d32,d33
d34,d35
d36,d37
d38,d39
d40,d41
d42,d43
d44,d45
d46,d47
d48,d49
d50,d51
d52,d53
d54,d55
d55,d56
d56,d57
e90,e93
e93,e4
e13,e96
e11,e10
e41,e79
e39,e47
e75,e76
e76,e77
e77,e78
e78,e84
e84,e85
e14,e16
e2,e20
e18,e21
e60,e37
e59,e36
e35,e58
e57,e34
e33,e56
@.
mesh(Elt, No)
a2,1
a3,8
a4,1
a5,1
a6,2
a7,1
a8,1
a9,3
a10,1
a11,3
a12,1
a13,1
a14,1
a15,4
a16,1
a17,2
a18,1
a19,4
a20,1
a21,1
a22,2
a23,2
a24,1
a25,2
a26,1
a27,1
a28,2
a29,1
a30,1
a31,3
a32,2
a33,2
a34,11
a35,1
a36,12
a37,12
a38,12
a39,5
a40,2
a41,1
a42,5
a43,5
a44,1
a45,12
a46,12
a47,12
a48,12
a49,12
a50,12
a51,12
a52,12
a53,12
a54,11
a55,12
b1,6
b2,1
b3,6
b4,1
b5,1
b6,6
b7,1
b8,2
b9,6
b10,2
b11,6
b12,6
b13,3
b14,6
b15,3
b16,3
b17,8
b18,3
b19,7
b20,8
b21,1
b22,8
b23,1
b24,7
b25,7
b26,2
b27,2
b28,1
b29,6
b30,1
b31,2
b32,4
b33,2
b34,2
b35,2
b36,2
b37,1
b38,8
b39,7
b40,6
b41,6
b42,6
d1,2
d2,4
d3,1
d4,1
d5,1
d6,2
d7,1
d8,2
d9,1
d10,2
d11,1
d12,2
d13,1
d14,2
d15,2
d16,2
d17,1
d18,2
d19,1
d20,2
d21,1
d22,2
d23,1
d24,1
d25,1
d26,1
d27,2
d28,4
d29,2
d30,12
d31,12
d32,12
d33,12
d34,12
d35,12
d36,12
d37,12
d38,12
d39,12
d40,12
d41,12
d42,12
d43,12
d44,12
d45,12
d46,12
d47,12
d48,12
d49,12
d50,12
d51,12
d52,12
d53,12
d54,12
d55,12
d56,12
d57,12
e1,1
e2,3
e3,1
e4,2
e5,2
e6,3
e7,2
e8,2
e9,1
e10,4
e11,4
e12,1
e13,1
e14,5
e15,2
e16,5
e17,2
e18,3
e19,10
e20,3
e21,3
e22,12
e23,2
e24,4
e25,2
e26,3
e27,3
e28,5
e29,2
e30,1
e31,1
e32,2
e33,1
e34,2
e35,1
e36,1
e37,2
e38,1
e39,6
e40,2
e41,6
e42,1
e43,5
e44,2
e45,5
e46,2
e47,6
e48,2
e49,5
e50,2
e51,1
e52,3
e53,1
e54,1
e55,2
e56,1
e57,2
e58,1
e59,1
e60,2
e61,1
e62,2
e63,3
e64,1
e65,4
e66,2
e67,2
e68,1
e69,2
e70,2
e71,2
e72,3
e73,2
e74,4
e75,9
e76,9
e77,9
e78,9
e79,6
e80,5
e81,2
e82,2
e83,2
e84,9
e85,9
e86,5
e87,1
e88,3
e89,2
e90,2
e91,2
e92,5
e93,2
e94,2
e95,2
e96,1
@.

mesh
c1,1
c2,2
c3,1
c4,1
c5,3
c6,2
c7,2
c8,3
c9,1
c10,2
c11,1
c12,2
c13,1
c14,2
c15,8
c16,8
c17,8
c18,8
c19,8
c20,8
c21,8
c22,8
c23,8
c24,8
c25,8
c26,8
c27,8
c28,8
@.
@//E*O*F Release2/Examples/mesh_c.d//
chmod u=r,g=r,o=r Release2/Examples/mesh_c.d
 
echo x - Release2/Examples/mesh_d.d
sed 's/^@//' > "Release2/Examples/mesh_d.d" <<'@//E*O*F Release2/Examples/mesh_d.d//'
#Elt:
 a1, a2, a3, a4, a5, a6, a7, a8, a9,a10,
a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,
a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,
a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,
a41,a42,a43,a44,a45,a46,a47,a48,a49,a50,
a51,a52,a53,a54,a55,
 b1, b2, b3, b4, b5, b6, b7, b8, b9,b10,
b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,
b21,b22,b23,b24,b25,b26,b27,b28,b29,b30,
b31,b32,b33,b34,b35,b36,b37,b38,b39,b40,
b41,b42,
 c1, c2, c3, c4, c5, c6, c7, c8, c9,c10,
c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,
c21,c22,c23,c24,c25,c26,c27,c28,
 d1, d2, d3, d4, d5, d6, d7, d8, d9,d10,
d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,
d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,
d31,d32,d33,d34,d35,d36,d37,d38,d39,d40,
d41,d42,d43,d44,d45,d46,d47,d48,d49,d50,
d51,d52,d53,d54,d55,d56,d57,
 e1, e2, e3, e4, e5, e6, e7, e8, e9,e10,
e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,
e21,e22,e23,e24,e25,e26,e27,e28,e29,e30,
e31,e32,e33,e34,e35,e36,e37,e38,e39,e40,
e41,e42,e43,e44,e45,e46,e47,e48,e49,e50,
e51,e52,e53,e54,e55,e56,e57,e58,e59,e60,
e61,e62,e63,e64,e65,e66,e67,e68,e69,e70,
e71,e72,e73,e74,e75,e76,e77,e78,e79,e80,
e81,e82,e83,e84,e85,e86,e87,e88,e89,e90,
e91,e92,e93,e94,e95,e96.
No:
*0,*1,*2,*3,*4,*5,*6,*7,*8,*9,*10,*11,*12.

*long(Elt)
a1
a34
a54
b19
b39
e19
e22
@.
*usual(Elt)
a3
a39
b11
b13
b15
b24
b25
b27
b31
b32
c5
c6
c8
c10
c12
c14
d1
d2
d28
d29
e2
e4
e5
e6
e7
e8
e14
e15
e16
e17
e18
e20
e21
e24
e25
e26
e27
e28
e29
e32
e34
e35
e37
e40
e43
e44
e45
e46
e48
e49
e50
e52
e55
e57
e58
e60
e62
e63
e65
e66
e67
e69
e70
e71
e72
e73
e74
e80
e81
e83
e86
e88
e89
e90
e91
e92
e93
e94
e95
@.
*short(Elt)
a6
a9
a11
a13
a15
a19
a22
a25
a26
a28
a31
a35
a40
a44
b5
b7
b8
b10
b16
b18
b26
b33
b36
b37
c7
c13
d3
d4
d6
d8
d10
d12
d14
d15
d16
d18
d20
d22
d24
d26
d27
e1
e3
e9
e12
e23
e30
e31
e33
e36
e38
e51
e53
e54
e56
e59
e61
e64
e68
e82
e87
@.
*circuit(Elt)
c15
c16
c17
c18
c19
c24
c25
c26
c27
c28
d30
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d45
d46
d47
d48
d49
d50
d51
d52
d53
d54
d55
d56
d57
@.
*half_circuit(Elt)
a36
a37
a45
a46
a47
a48
a49
a50
a51
a52
a53
b3
b6
b9
b12
b17
b20
b41
b42
@.
*quarter_circuit(Elt)
e75
e76
e77
e78
e84
e85
@.
*short_for_hole(Elt)
a16
a17
a18
a23
a33
b28
b30
b34
b35
c3
c4
e13
e96
@.
*long_for_hole(Elt)
c2
e41
e79
@.
*circuit_hole(Elt)
c20
c21
c22
c23
@.
*half_circuit_hole(Elt)
a38
a42
a43
a55
b1
b14
b22
b29
b38
b40
e10
e11
e39
e47
@.
*not_important(Elt)
a2
a4
a5
a7
a8
a10
a12
a14
a20
a21
a24
a27
a29
a30
a32
a41
b2
b4
b21
b23
c1
c9
c11
d5
d7
d9
d11
d13
d17
d19
d21
d23
d25
e42
@.
*free(Elt)
a39
a40
c6
c7
c11
c12
c13
c15
c16
c17
c18
c19
c20
c27
c28
d3
d4
d5
d6
d7
d8
d9
d10
d11
d12
d13
d14
d15
d16
d17
d18
d19
d20
d21
d22
d23
d24
d25
d26
d27
d29
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d45
d46
d47
d48
d49
d50
d51
d52
d53
d54
d55
d56
d57
e6
e16
e19
e20
e22
e23
e26
e27
e28
e29
e30
e31
e32
e33
e34
e35
e36
e45
e48
e49
e51
e52
e53
e54
e66
e71
e73
e83
e86
e88
e90
e92
e93
e94
@.
*one_side_fixed(Elt)
a34
a35
a41
c2
c3
c5
c8
c10
c14
e5
e7
e15
e17
e18
e21
e24
e37
e44
e46
e50
e65
e67
e69
e74
e76
e77
e78
e82
e84
e85
e89
e91
e95
@.
*two_side_fixed(Elt)
a36
a37
a38
a42
a43
a45
a46
a47
a48
a49
a50
a51
a52
a53
a55
b6
b9
b12
b14
b17
b20
b22
b29
b38
b40
b41
b42
e10
e11
e39
e47
@.
*fixed(Elt)
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
a11
a12
a13
a14
a15
a16
a17
a18
a19
a20
a21
a22
a23
a24
a25
a26
a27
a28
a29
a30
a31
a32
a33
a44
a54
b1
b2
b3
b4
b5
b7
b8
b10
b11
b13
b15
b16
b18
b19
b21
b23
b24
b25
b26
b27
b28
b30
b31
b32
b33
b34
b35
b36
b37
b39
c1
c4
c9
c21
c22
c23
c24
c25
c26
d1
d2
d28
d30
e1
e2
e3
e4
e8
e9
e12
e13
e14
e25
e38
e40
e41
e42
e43
e55
e56
e57
e58
e59
e60
e61
e62
e63
e64
e68
e70
e72
e75
e79
e80
e81
e87
e96
@.
*not_loaded(Elt)
a1
a2
a3
a4
a5
a6
a7
a23
a24
a25
a26
a27
a28
a29
a33
a36
a37
a42
a44
a45
a46
b1
b2
b3
b4
b5
b6
b7
b8
b9
b10
b11
b12
b13
b14
b15
b16
b17
b18
b19
b20
b21
b23
b24
c1
c2
c3
c4
c5
c6
c7
c8
c9
c15
c17
c18
c20
c21
c22
c23
c26
d1
d2
d3
d4
d5
d6
d7
d8
d9
d10
d11
d12
d13
d14
d15
d16
d20
d21
d22
d23
d24
d25
d26
d27
d28
d29
d30
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d49
d50
d51
d52
d53
d54
d55
d56
d57
e1
e2
e3
e4
e5
e6
e7
e8
e9
e10
e11
e12
e13
e14
e15
e16
e17
e18
e19
e20
e21
e22
e23
e24
e25
e26
e27
e28
e29
e30
e31
e32
e33
e34
e35
e39
e40
e41
e42
e43
e44
e45
e46
e47
e48
e49
e50
e51
e52
e53
e54
e55
e56
e57
e58
e62
e63
e64
e65
e66
e67
e68
e69
e70
e71
e72
e73
e74
e77
e78
e79
e80
e81
e82
e83
e84
e85
e86
e87
e88
e89
e90
e91
e92
e93
e94
e95
e96
@.
*one_side_loaded(Elt)
a34
a35
a40
a41
a54
d45
d46
d47
d48
e36
e38
e59
e61
@.
*two_side_loaded(Elt)
e37
@.
*cont_loaded(Elt)
a8
a9
a10
a11
a12
a13
a14
a15
a16
a17
a18
a19
a20
a21
a22
a30
a31
a32
a38
a39
a43
a47
a48
a49
a50
a51
a52
a53
b22
b25
b26
b27
b28
b29
b30
b31
b32
b33
b34
b35
b36
b37
b38
b39
b40
b41
b42
c10
c11
c12
c13
c14
c16
c19
c24
c25
c27
c28
d17
d18
d19
e60
e75
e76
@.
*neighbour(Elt,Elt)
a1,a2
a1,a44
a10,a11
a10,a49
a11,a12
a11,a49
a12,a13
a12,a51
a13,a14
a14,a15
a14,a53
a15,a16
a15,a38
a16,a17
a16,a55
a17,a18
a18,a19
a18,a38
a19,a20
a2,a3
a2,a54
a20,a21
a20,a52
a21,a22
a22,a23
a22,a50
a23,a24
a24,a1
a24,a42
a25,a26
a25,a35
a26,a27
a26,a36
a27,a28
a27,a37
a28,a29
a28,a37
a29,a30
a29,a46
a3,a4
a30,a31
a30,a46
a31,a32
a31,a48
a32,a33
a32,a48
a33,a25
a34,a35
a34,a40
a35,a26
a35,a40
a36,a27
a36,a4
a37,a5
a37,a6
a38,a16
a38,a19
a39,a41
a4,a34
a4,a5
a40,a39
a41,a44
a42,a25
a44,a24
a44,a54
a45,a28
a45,a29
a46,a7
a46,a8
a47,a30
a47,a31
a48,a10
a48,a9
a49,a32
a49,a43
a5,a36
a5,a6
a50,a11
a50,a12
a51,a22
a52,a14
a53,a20
a54,a1
a54,a44
a55,a17
a55,a18
a6,a45
a6,a7
a7,a45
a7,a8
a8,a47
a8,a9
a9,a10
a9,a47
b1,b2
b1,b34
b10,b11
b10,b9
b11,b12
b11,b15
b12,b15
b12,b16
b13,b12
b13,b16
b14,b13
b15,b14
b15,b30
b16,b17
b16,b24
b17,b18
b18,b8
b18,b9
b19,b18
b19,b20
b2,b3
b2,b5
b20,b21
b20,b24
b21,b22
b21,b25
b22,b23
b22,b25
b23,b19
b23,b20
b24,b17
b24,b21
b25,b26
b25,b38
b26,b27
b26,b38
b27,b28
b27,b42
b28,b13
b29,b27
b3,b4
b3,b5
b30,b31
b31,b29
b31,b32
b32,b33
b32,b42
b33,b34
b33,b41
b34,b2
b34,b40
b35,b1
b35,b36
b36,b37
b36,b40
b37,b39
b37,b41
b38,b37
b39,b22
b39,b23
b4,b35
b40,b33
b40,b35
b41,b32
b41,b36
b42,b26
b42,b31
b5,b10
b5,b6
b6,b10
b6,b7
b7,b3
b7,b4
b8,b6
b8,b7
b9,b11
b9,b8
c1,c2
c1,c23
c10,c11
c10,c25
c11,c12
c11,c27
c12,c13
c12,c28
c13,c14
c13,c28
c14,c1
c14,c24
c15,c8
c16,c10
c16,c11
c17,c7
c18,c6
c19,c13
c19,c14
c2,c23
c2,c3
c20,c2
c20,c3
c21,c4
c21,c5
c24,c1
c26,c9
c27,c12
c3,c22
c3,c4
c4,c22
c4,c5
c5,c18
c5,c6
c6,c17
c6,c7
c7,c15
c7,c8
c8,c26
c8,c9
c9,c10
c9,c25
d1,d2
d1,d30
d10,d11
d10,d39
d11,d12
d11,d40
d12,d13
d12,d41
d13,d14
d13,d42
d14,d15
d14,d43
d15,d16
d15,d44
d16,d17
d16,d45
d17,d18
d17,d46
d18,d19
d18,d47
d19,d20
d19,d48
d2,d3
d2,d31
d20,d21
d20,d49
d21,d22
d21,d50
d22,d23
d22,d51
d23,d24
d23,d52
d24,d25
d24,d53
d25,d26
d25,d54
d26,d27
d26,d55
d27,d28
d27,d56
d28,d29
d28,d57
d3,d32
d3,d4
d30,d2
d31,d3
d32,d4
d33,d5
d34,d6
d35,d7
d36,d8
d37,d9
d38,d10
d39,d11
d4,d33
d4,d5
d40,d12
d41,d13
d42,d14
d43,d15
d44,d16
d45,d17
d46,d18
d47,d19
d48,d20
d49,d21
d5,d34
d5,d6
d50,d22
d51,d23
d52,d24
d53,d25
d54,d26
d55,d27
d56,d28
d57,d29
d6,d35
d6,d7
d7,d36
d7,d8
d8,d37
d8,d9
d9,d10
d9,d38
e1,e2
e1,e5
e10,e95
e10,e96
e11,e13
e11,e3
e12,e11
e12,e14
e13,e10
e13,e12
e14,e15
e14,e40
e15,e16
e15,e40
e16,e17
e16,e28
e17,e12
e17,e14
e18,e19
e18,e20
e19,e20
e19,e53
e2,e18
e2,e3
e20,e22
e21,e1
e22,e21
e22,e26
e23,e22
e23,e27
e24,e23
e24,e25
e25,e55
e25,e85
e26,e23
e26,e94
e27,e24
e27,e51
e28,e17
e28,e52
e29,e15
e29,e16
e3,e18
e3,e96
e30,e29
e30,e86
e31,e30
e31,e86
e32,e31
e32,e84
e33,e32
e33,e84
e34,e33
e34,e78
e35,e34
e36,e35
e36,e76
e37,e36
e37,e76
e38,e37
e38,e75
e39,e38
e39,e41
e4,e1
e4,e5
e40,e39
e40,e41
e41,e42
e41,e47
e42,e43
e43,e44
e43,e87
e44,e45
e44,e49
e45,e46
e45,e48
e46,e43
e46,e47
e47,e79
e47,e91
e48,e46
e48,e92
e49,e45
e49,e69
e5,e6
e5,e93
e50,e71
e51,e54
e52,e29
e52,e30
e53,e28
e53,e52
e54,e26
e54,e94
e55,e56
e55,e85
e56,e57
e56,e78
e57,e58
e58,e59
e58,e77
e59,e60
e59,e77
e6,e7
e6,e93
e60,e61
e60,e75
e61,e62
e61,e72
e62,e63
e62,e72
e63,e64
e63,e65
e64,e24
e64,e25
e65,e64
e65,e73
e66,e65
e66,e67
e67,e66
e67,e70
e68,e67
e68,e81
e69,e68
e69,e81
e7,e8
e7,e87
e70,e50
e70,e68
e71,e73
e71,e74
e72,e50
e72,e70
e73,e66
e73,e74
e74,e62
e74,e63
e75,e37
e75,e61
e76,e59
e76,e60
e77,e35
e77,e36
e78,e33
e78,e57
e79,e38
e79,e39
e8,e89
e8,e9
e80,e79
e80,e91
e81,e80
e81,e82
e82,e80
e82,e83
e83,e49
e83,e69
e84,e55
e84,e56
e85,e31
e85,e32
e86,e51
e86,e54
e87,e44
e87,e8
e88,e89
e88,e90
e89,e9
e89,e90
e9,e10
e9,e13
e90,e6
e90,e7
e91,e48
e92,e82
e92,e83
e93,e88
e93,e95
e94,e19
e94,e53
e95,e4
e95,e88
e96,e11
e96,e4
@.
*opposite_r(Elt,Elt)
a11,a3
a9,a3
a31,a25
a13,a1
a15,a1
a17,a1
a19,a1
a22,a1
a23,a1
a32,a22
a33,a23
a34,a54
a37,a45
a39,a42
b1,b3
b6,b40
b41,b9
b12,b42
b17,b38
b22,b20
b29,b42
b14,b12
b13,b27
b15,b31
b10,b33
b8,b36
b5,b34
b7,b35
b18,b37
b16,b26
b11,b32
b19,b39
b24,b25
c6,c12
c2,c14
c3,c5
c8,c10
c10,c14
c11,c7
c13,c5
c15,c16
c27,c17
c28,c18
c20,c19
c21,c22
c23,c24
c25,c26
d5,d7
d9,d11
d13,d15
d17,d19
d21,d23
d25,d27
e4,e2
e96,e2
e8,e43
e13,e43
e41,e14
e83,e45
e90,e93
e81,e70
e63,e25
e62,e60
e57,e55
e32,e34
@.
*equal_r(Elt,Elt)
a16,a18
a29,a7
a31,a9
a33,a23
a34,a54
a36,a37
a37,a45
a38,a55
a42,a43
a45,a46
a46,a47
a47,a48
a48,a49
a49,a50
a50,a51
a51,a52
a52,a53
b1,b3
b6,b40
b41,b9
b12,b42
b17,b38
b22,b20
b29,b42
b14,b12
b25,b39
b38,b22
b20,b17
b3,b6
b9,b12
b29,b14
b40,b1
b42,b41
c6,c12
c2,c14
c10,c14
c15,c17
c17,c18
c18,c21
c21,c22
c22,c20
c20,c23
c23,c24
c19,c20
c28,c19
c27,c28
c16,c27
c25,c16
c26,c25
d5,d7
d9,d11
d17,d19
d21,d23
d30,d31
d31,d32
d32,d33
d34,d35
d36,d37
d38,d39
d40,d41
d42,d43
d44,d45
d46,d47
d48,d49
d50,d51
d52,d53
d54,d55
d55,d56
d56,d57
e90,e93
e93,e4
e13,e96
e11,e10
e41,e79
e39,e47
e75,e76
e76,e77
e77,e78
e78,e84
e84,e85
e14,e16
e2,e20
e18,e21
e60,e37
e59,e36
e35,e58
e57,e34
e33,e56
@.
mesh(Elt, No)
a2,1
a3,8
a4,1
a5,1
a6,2
a7,1
a8,1
a9,3
a10,1
a11,3
a12,1
a13,1
a14,1
a15,4
a16,1
a17,2
a18,1
a19,4
a20,1
a21,1
a22,2
a23,2
a24,1
a25,2
a26,1
a27,1
a28,2
a29,1
a30,1
a31,3
a32,2
a33,2
a34,11
a35,1
a36,12
a37,12
a38,12
a39,5
a40,2
a41,1
a42,5
a43,5
a44,1
a45,12
a46,12
a47,12
a48,12
a49,12
a50,12
a51,12
a52,12
a53,12
a54,11
a55,12
b1,6
b2,1
b3,6
b4,1
b5,1
b6,6
b7,1
b8,2
b9,6
b10,2
b11,6
b12,6
b13,3
b14,6
b15,3
b16,3
b17,8
b18,3
b19,7
b20,8
b21,1
b22,8
b23,1
b24,7
b25,7
b26,2
b27,2
b28,1
b29,6
b30,1
b31,2
b32,4
b33,2
b34,2
b35,2
b36,2
b37,1
b38,8
b39,7
b40,6
b41,6
b42,6
c1,1
c2,2
c3,1
c4,1
c5,3
c6,2
c7,2
c8,3
c9,1
c10,2
c11,1
c12,2
c13,1
c14,2
c15,8
c16,8
c17,8
c18,8
c19,8
c20,8
c21,8
c22,8
c23,8
c24,8
c25,8
c26,8
c27,8
c28,8
e1,1
e2,3
e3,1
e4,2
e5,2
e6,3
e7,2
e8,2
e9,1
e10,4
e11,4
e12,1
e13,1
e14,5
e15,2
e16,5
e17,2
e18,3
e19,10
e20,3
e21,3
e22,12
e23,2
e24,4
e25,2
e26,3
e27,3
e28,5
e29,2
e30,1
e31,1
e32,2
e33,1
e34,2
e35,1
e36,1
e37,2
e38,1
e39,6
e40,2
e41,6
e42,1
e43,5
e44,2
e45,5
e46,2
e47,6
e48,2
e49,5
e50,2
e51,1
e52,3
e53,1
e54,1
e55,2
e56,1
e57,2
e58,1
e59,1
e60,2
e61,1
e62,2
e63,3
e64,1
e65,4
e66,2
e67,2
e68,1
e69,2
e70,2
e71,2
e72,3
e73,2
e74,4
e75,9
e76,9
e77,9
e78,9
e79,6
e80,5
e81,2
e82,2
e83,2
e84,9
e85,9
e86,5
e87,1
e88,3
e89,2
e90,2
e91,2
e92,5
e93,2
e94,2
e95,2
e96,1
@.

mesh
d1,2
d2,4
d3,1
d4,1
d5,1
d6,2
d7,1
d8,2
d9,1
d10,2
d11,1
d12,2
d13,1
d14,2
d15,2
d16,2
d17,1
d18,2
d19,1
d20,2
d21,1
d22,2
d23,1
d24,1
d25,1
d26,1
d27,2
d28,4
d29,2
d30,12
d31,12
d32,12
d33,12
d34,12
d35,12
d36,12
d37,12
d38,12
d39,12
d40,12
d41,12
d42,12
d43,12
d44,12
d45,12
d46,12
d47,12
d48,12
d49,12
d50,12
d51,12
d52,12
d53,12
d54,12
d55,12
d56,12
d57,12
@.
@//E*O*F Release2/Examples/mesh_d.d//
chmod u=r,g=r,o=r Release2/Examples/mesh_d.d
 
echo x - Release2/Examples/mesh_e.d
sed 's/^@//' > "Release2/Examples/mesh_e.d" <<'@//E*O*F Release2/Examples/mesh_e.d//'
#Elt:
 a1, a2, a3, a4, a5, a6, a7, a8, a9,a10,
a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,
a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,
a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,
a41,a42,a43,a44,a45,a46,a47,a48,a49,a50,
a51,a52,a53,a54,a55,
 b1, b2, b3, b4, b5, b6, b7, b8, b9,b10,
b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,
b21,b22,b23,b24,b25,b26,b27,b28,b29,b30,
b31,b32,b33,b34,b35,b36,b37,b38,b39,b40,
b41,b42,
 c1, c2, c3, c4, c5, c6, c7, c8, c9,c10,
c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,
c21,c22,c23,c24,c25,c26,c27,c28,
 d1, d2, d3, d4, d5, d6, d7, d8, d9,d10,
d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,
d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,
d31,d32,d33,d34,d35,d36,d37,d38,d39,d40,
d41,d42,d43,d44,d45,d46,d47,d48,d49,d50,
d51,d52,d53,d54,d55,d56,d57,
 e1, e2, e3, e4, e5, e6, e7, e8, e9,e10,
e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,
e21,e22,e23,e24,e25,e26,e27,e28,e29,e30,
e31,e32,e33,e34,e35,e36,e37,e38,e39,e40,
e41,e42,e43,e44,e45,e46,e47,e48,e49,e50,
e51,e52,e53,e54,e55,e56,e57,e58,e59,e60,
e61,e62,e63,e64,e65,e66,e67,e68,e69,e70,
e71,e72,e73,e74,e75,e76,e77,e78,e79,e80,
e81,e82,e83,e84,e85,e86,e87,e88,e89,e90,
e91,e92,e93,e94,e95,e96.
No:
*0,*1,*2,*3,*4,*5,*6,*7,*8,*9,*10,*11,*12.

*long(Elt)
a1
a34
a54
b19
b39
e19
e22
@.
*usual(Elt)
a3
a39
b11
b13
b15
b24
b25
b27
b31
b32
c5
c6
c8
c10
c12
c14
d1
d2
d28
d29
e2
e4
e5
e6
e7
e8
e14
e15
e16
e17
e18
e20
e21
e24
e25
e26
e27
e28
e29
e32
e34
e35
e37
e40
e43
e44
e45
e46
e48
e49
e50
e52
e55
e57
e58
e60
e62
e63
e65
e66
e67
e69
e70
e71
e72
e73
e74
e80
e81
e83
e86
e88
e89
e90
e91
e92
e93
e94
e95
@.
*short(Elt)
a6
a9
a11
a13
a15
a19
a22
a25
a26
a28
a31
a35
a40
a44
b5
b7
b8
b10
b16
b18
b26
b33
b36
b37
c7
c13
d3
d4
d6
d8
d10
d12
d14
d15
d16
d18
d20
d22
d24
d26
d27
e1
e3
e9
e12
e23
e30
e31
e33
e36
e38
e51
e53
e54
e56
e59
e61
e64
e68
e82
e87
@.
*circuit(Elt)
c15
c16
c17
c18
c19
c24
c25
c26
c27
c28
d30
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d45
d46
d47
d48
d49
d50
d51
d52
d53
d54
d55
d56
d57
@.
*half_circuit(Elt)
a36
a37
a45
a46
a47
a48
a49
a50
a51
a52
a53
b3
b6
b9
b12
b17
b20
b41
b42
@.
*quarter_circuit(Elt)
e75
e76
e77
e78
e84
e85
@.
*short_for_hole(Elt)
a16
a17
a18
a23
a33
b28
b30
b34
b35
c3
c4
e13
e96
@.
*long_for_hole(Elt)
c2
e41
e79
@.
*circuit_hole(Elt)
c20
c21
c22
c23
@.
*half_circuit_hole(Elt)
a38
a42
a43
a55
b1
b14
b22
b29
b38
b40
e10
e11
e39
e47
@.
*not_important(Elt)
a2
a4
a5
a7
a8
a10
a12
a14
a20
a21
a24
a27
a29
a30
a32
a41
b2
b4
b21
b23
c1
c9
c11
d5
d7
d9
d11
d13
d17
d19
d21
d23
d25
e42
@.
*free(Elt)
a39
a40
c6
c7
c11
c12
c13
c15
c16
c17
c18
c19
c20
c27
c28
d3
d4
d5
d6
d7
d8
d9
d10
d11
d12
d13
d14
d15
d16
d17
d18
d19
d20
d21
d22
d23
d24
d25
d26
d27
d29
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d45
d46
d47
d48
d49
d50
d51
d52
d53
d54
d55
d56
d57
e6
e16
e19
e20
e22
e23
e26
e27
e28
e29
e30
e31
e32
e33
e34
e35
e36
e45
e48
e49
e51
e52
e53
e54
e66
e71
e73
e83
e86
e88
e90
e92
e93
e94
@.
*one_side_fixed(Elt)
a34
a35
a41
c2
c3
c5
c8
c10
c14
e5
e7
e15
e17
e18
e21
e24
e37
e44
e46
e50
e65
e67
e69
e74
e76
e77
e78
e82
e84
e85
e89
e91
e95
@.
*two_side_fixed(Elt)
a36
a37
a38
a42
a43
a45
a46
a47
a48
a49
a50
a51
a52
a53
a55
b6
b9
b12
b14
b17
b20
b22
b29
b38
b40
b41
b42
e10
e11
e39
e47
@.
*fixed(Elt)
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
a11
a12
a13
a14
a15
a16
a17
a18
a19
a20
a21
a22
a23
a24
a25
a26
a27
a28
a29
a30
a31
a32
a33
a44
a54
b1
b2
b3
b4
b5
b7
b8
b10
b11
b13
b15
b16
b18
b19
b21
b23
b24
b25
b26
b27
b28
b30
b31
b32
b33
b34
b35
b36
b37
b39
c1
c4
c9
c21
c22
c23
c24
c25
c26
d1
d2
d28
d30
e1
e2
e3
e4
e8
e9
e12
e13
e14
e25
e38
e40
e41
e42
e43
e55
e56
e57
e58
e59
e60
e61
e62
e63
e64
e68
e70
e72
e75
e79
e80
e81
e87
e96
@.
*not_loaded(Elt)
a1
a2
a3
a4
a5
a6
a7
a23
a24
a25
a26
a27
a28
a29
a33
a36
a37
a42
a44
a45
a46
b1
b2
b3
b4
b5
b6
b7
b8
b9
b10
b11
b12
b13
b14
b15
b16
b17
b18
b19
b20
b21
b23
b24
c1
c2
c3
c4
c5
c6
c7
c8
c9
c15
c17
c18
c20
c21
c22
c23
c26
d1
d2
d3
d4
d5
d6
d7
d8
d9
d10
d11
d12
d13
d14
d15
d16
d20
d21
d22
d23
d24
d25
d26
d27
d28
d29
d30
d31
d32
d33
d34
d35
d36
d37
d38
d39
d40
d41
d42
d43
d44
d49
d50
d51
d52
d53
d54
d55
d56
d57
e1
e2
e3
e4
e5
e6
e7
e8
e9
e10
e11
e12
e13
e14
e15
e16
e17
e18
e19
e20
e21
e22
e23
e24
e25
e26
e27
e28
e29
e30
e31
e32
e33
e34
e35
e39
e40
e41
e42
e43
e44
e45
e46
e47
e48
e49
e50
e51
e52
e53
e54
e55
e56
e57
e58
e62
e63
e64
e65
e66
e67
e68
e69
e70
e71
e72
e73
e74
e77
e78
e79
e80
e81
e82
e83
e84
e85
e86
e87
e88
e89
e90
e91
e92
e93
e94
e95
e96
@.
*one_side_loaded(Elt)
a34
a35
a40
a41
a54
d45
d46
d47
d48
e36
e38
e59
e61
@.
*two_side_loaded(Elt)
e37
@.
*cont_loaded(Elt)
a8
a9
a10
a11
a12
a13
a14
a15
a16
a17
a18
a19
a20
a21
a22
a30
a31
a32
a38
a39
a43
a47
a48
a49
a50
a51
a52
a53
b22
b25
b26
b27
b28
b29
b30
b31
b32
b33
b34
b35
b36
b37
b38
b39
b40
b41
b42
c10
c11
c12
c13
c14
c16
c19
c24
c25
c27
c28
d17
d18
d19
e60
e75
e76
@.
*neighbour(Elt,Elt)
a1,a2
a1,a44
a10,a11
a10,a49
a11,a12
a11,a49
a12,a13
a12,a51
a13,a14
a14,a15
a14,a53
a15,a16
a15,a38
a16,a17
a16,a55
a17,a18
a18,a19
a18,a38
a19,a20
a2,a3
a2,a54
a20,a21
a20,a52
a21,a22
a22,a23
a22,a50
a23,a24
a24,a1
a24,a42
a25,a26
a25,a35
a26,a27
a26,a36
a27,a28
a27,a37
a28,a29
a28,a37
a29,a30
a29,a46
a3,a4
a30,a31
a30,a46
a31,a32
a31,a48
a32,a33
a32,a48
a33,a25
a34,a35
a34,a40
a35,a26
a35,a40
a36,a27
a36,a4
a37,a5
a37,a6
a38,a16
a38,a19
a39,a41
a4,a34
a4,a5
a40,a39
a41,a44
a42,a25
a44,a24
a44,a54
a45,a28
a45,a29
a46,a7
a46,a8
a47,a30
a47,a31
a48,a10
a48,a9
a49,a32
a49,a43
a5,a36
a5,a6
a50,a11
a50,a12
a51,a22
a52,a14
a53,a20
a54,a1
a54,a44
a55,a17
a55,a18
a6,a45
a6,a7
a7,a45
a7,a8
a8,a47
a8,a9
a9,a10
a9,a47
b1,b2
b1,b34
b10,b11
b10,b9
b11,b12
b11,b15
b12,b15
b12,b16
b13,b12
b13,b16
b14,b13
b15,b14
b15,b30
b16,b17
b16,b24
b17,b18
b18,b8
b18,b9
b19,b18
b19,b20
b2,b3
b2,b5
b20,b21
b20,b24
b21,b22
b21,b25
b22,b23
b22,b25
b23,b19
b23,b20
b24,b17
b24,b21
b25,b26
b25,b38
b26,b27
b26,b38
b27,b28
b27,b42
b28,b13
b29,b27
b3,b4
b3,b5
b30,b31
b31,b29
b31,b32
b32,b33
b32,b42
b33,b34
b33,b41
b34,b2
b34,b40
b35,b1
b35,b36
b36,b37
b36,b40
b37,b39
b37,b41
b38,b37
b39,b22
b39,b23
b4,b35
b40,b33
b40,b35
b41,b32
b41,b36
b42,b26
b42,b31
b5,b10
b5,b6
b6,b10
b6,b7
b7,b3
b7,b4
b8,b6
b8,b7
b9,b11
b9,b8
c1,c2
c1,c23
c10,c11
c10,c25
c11,c12
c11,c27
c12,c13
c12,c28
c13,c14
c13,c28
c14,c1
c14,c24
c15,c8
c16,c10
c16,c11
c17,c7
c18,c6
c19,c13
c19,c14
c2,c23
c2,c3
c20,c2
c20,c3
c21,c4
c21,c5
c24,c1
c26,c9
c27,c12
c3,c22
c3,c4
c4,c22
c4,c5
c5,c18
c5,c6
c6,c17
c6,c7
c7,c15
c7,c8
c8,c26
c8,c9
c9,c10
c9,c25
d1,d2
d1,d30
d10,d11
d10,d39
d11,d12
d11,d40
d12,d13
d12,d41
d13,d14
d13,d42
d14,d15
d14,d43
d15,d16
d15,d44
d16,d17
d16,d45
d17,d18
d17,d46
d18,d19
d18,d47
d19,d20
d19,d48
d2,d3
d2,d31
d20,d21
d20,d49
d21,d22
d21,d50
d22,d23
d22,d51
d23,d24
d23,d52
d24,d25
d24,d53
d25,d26
d25,d54
d26,d27
d26,d55
d27,d28
d27,d56
d28,d29
d28,d57
d3,d32
d3,d4
d30,d2
d31,d3
d32,d4
d33,d5
d34,d6
d35,d7
d36,d8
d37,d9
d38,d10
d39,d11
d4,d33
d4,d5
d40,d12
d41,d13
d42,d14
d43,d15
d44,d16
d45,d17
d46,d18
d47,d19
d48,d20
d49,d21
d5,d34
d5,d6
d50,d22
d51,d23
d52,d24
d53,d25
d54,d26
d55,d27
d56,d28
d57,d29
d6,d35
d6,d7
d7,d36
d7,d8
d8,d37
d8,d9
d9,d10
d9,d38
e1,e2
e1,e5
e10,e95
e10,e96
e11,e13
e11,e3
e12,e11
e12,e14
e13,e10
e13,e12
e14,e15
e14,e40
e15,e16
e15,e40
e16,e17
e16,e28
e17,e12
e17,e14
e18,e19
e18,e20
e19,e20
e19,e53
e2,e18
e2,e3
e20,e22
e21,e1
e22,e21
e22,e26
e23,e22
e23,e27
e24,e23
e24,e25
e25,e55
e25,e85
e26,e23
e26,e94
e27,e24
e27,e51
e28,e17
e28,e52
e29,e15
e29,e16
e3,e18
e3,e96
e30,e29
e30,e86
e31,e30
e31,e86
e32,e31
e32,e84
e33,e32
e33,e84
e34,e33
e34,e78
e35,e34
e36,e35
e36,e76
e37,e36
e37,e76
e38,e37
e38,e75
e39,e38
e39,e41
e4,e1
e4,e5
e40,e39
e40,e41
e41,e42
e41,e47
e42,e43
e43,e44
e43,e87
e44,e45
e44,e49
e45,e46
e45,e48
e46,e43
e46,e47
e47,e79
e47,e91
e48,e46
e48,e92
e49,e45
e49,e69
e5,e6
e5,e93
e50,e71
e51,e54
e52,e29
e52,e30
e53,e28
e53,e52
e54,e26
e54,e94
e55,e56
e55,e85
e56,e57
e56,e78
e57,e58
e58,e59
e58,e77
e59,e60
e59,e77
e6,e7
e6,e93
e60,e61
e60,e75
e61,e62
e61,e72
e62,e63
e62,e72
e63,e64
e63,e65
e64,e24
e64,e25
e65,e64
e65,e73
e66,e65
e66,e67
e67,e66
e67,e70
e68,e67
e68,e81
e69,e68
e69,e81
e7,e8
e7,e87
e70,e50
e70,e68
e71,e73
e71,e74
e72,e50
e72,e70
e73,e66
e73,e74
e74,e62
e74,e63
e75,e37
e75,e61
e76,e59
e76,e60
e77,e35
e77,e36
e78,e33
e78,e57
e79,e38
e79,e39
e8,e89
e8,e9
e80,e79
e80,e91
e81,e80
e81,e82
e82,e80
e82,e83
e83,e49
e83,e69
e84,e55
e84,e56
e85,e31
e85,e32
e86,e51
e86,e54
e87,e44
e87,e8
e88,e89
e88,e90
e89,e9
e89,e90
e9,e10
e9,e13
e90,e6
e90,e7
e91,e48
e92,e82
e92,e83
e93,e88
e93,e95
e94,e19
e94,e53
e95,e4
e95,e88
e96,e11
e96,e4
@.
*opposite_r(Elt,Elt)
a11,a3
a9,a3
a31,a25
a13,a1
a15,a1
a17,a1
a19,a1
a22,a1
a23,a1
a32,a22
a33,a23
a34,a54
a37,a45
a39,a42
b1,b3
b6,b40
b41,b9
b12,b42
b17,b38
b22,b20
b29,b42
b14,b12
b13,b27
b15,b31
b10,b33
b8,b36
b5,b34
b7,b35
b18,b37
b16,b26
b11,b32
b19,b39
b24,b25
c6,c12
c2,c14
c3,c5
c8,c10
c10,c14
c11,c7
c13,c5
c15,c16
c27,c17
c28,c18
c20,c19
c21,c22
c23,c24
c25,c26
d5,d7
d9,d11
d13,d15
d17,d19
d21,d23
d25,d27
e4,e2
e96,e2
e8,e43
e13,e43
e41,e14
e83,e45
e90,e93
e81,e70
e63,e25
e62,e60
e57,e55
e32,e34
@.
*equal_r(Elt,Elt)
a16,a18
a29,a7
a31,a9
a33,a23
a34,a54
a36,a37
a37,a45
a38,a55
a42,a43
a45,a46
a46,a47
a47,a48
a48,a49
a49,a50
a50,a51
a51,a52
a52,a53
b1,b3
b6,b40
b41,b9
b12,b42
b17,b38
b22,b20
b29,b42
b14,b12
b25,b39
b38,b22
b20,b17
b3,b6
b9,b12
b29,b14
b40,b1
b42,b41
c6,c12
c2,c14
c10,c14
c15,c17
c17,c18
c18,c21
c21,c22
c22,c20
c20,c23
c23,c24
c19,c20
c28,c19
c27,c28
c16,c27
c25,c16
c26,c25
d5,d7
d9,d11
d17,d19
d21,d23
d30,d31
d31,d32
d32,d33
d34,d35
d36,d37
d38,d39
d40,d41
d42,d43
d44,d45
d46,d47
d48,d49
d50,d51
d52,d53
d54,d55
d55,d56
d56,d57
e90,e93
e93,e4
e13,e96
e11,e10
e41,e79
e39,e47
e75,e76
e76,e77
e77,e78
e78,e84
e84,e85
e14,e16
e2,e20
e18,e21
e60,e37
e59,e36
e35,e58
e57,e34
e33,e56
@.
mesh(Elt, No)
a2,1
a3,8
a4,1
a5,1
a6,2
a7,1
a8,1
a9,3
a10,1
a11,3
a12,1
a13,1
a14,1
a15,4
a16,1
a17,2
a18,1
a19,4
a20,1
a21,1
a22,2
a23,2
a24,1
a25,2
a26,1
a27,1
a28,2
a29,1
a30,1
a31,3
a32,2
a33,2
a34,11
a35,1
a36,12
a37,12
a38,12
a39,5
a40,2
a41,1
a42,5
a43,5
a44,1
a45,12
a46,12
a47,12
a48,12
a49,12
a50,12
a51,12
a52,12
a53,12
a54,11
a55,12
b1,6
b2,1
b3,6
b4,1
b5,1
b6,6
b7,1
b8,2
b9,6
b10,2
b11,6
b12,6
b13,3
b14,6
b15,3
b16,3
b17,8
b18,3
b19,7
b20,8
b21,1
b22,8
b23,1
b24,7
b25,7
b26,2
b27,2
b28,1
b29,6
b30,1
b31,2
b32,4
b33,2
b34,2
b35,2
b36,2
b37,1
b38,8
b39,7
b40,6
b41,6
b42,6
c1,1
c2,2
c3,1
c4,1
c5,3
c6,2
c7,2
c8,3
c9,1
c10,2
c11,1
c12,2
c13,1
c14,2
c15,8
c16,8
c17,8
c18,8
c19,8
c20,8
c21,8
c22,8
c23,8
c24,8
c25,8
c26,8
c27,8
c28,8
d1,2
d2,4
d3,1
d4,1
d5,1
d6,2
d7,1
d8,2
d9,1
d10,2
d11,1
d12,2
d13,1
d14,2
d15,2
d16,2
d17,1
d18,2
d19,1
d20,2
d21,1
d22,2
d23,1
d24,1
d25,1
d26,1
d27,2
d28,4
d29,2
d30,12
d31,12
d32,12
d33,12
d34,12
d35,12
d36,12
d37,12
d38,12
d39,12
d40,12
d41,12
d42,12
d43,12
d44,12
d45,12
d46,12
d47,12
d48,12
d49,12
d50,12
d51,12
d52,12
d53,12
d54,12
d55,12
d56,12
d57,12
@.

mesh
e1,1
e2,3
e3,1
e4,2
e5,2
e6,3
e7,2
e8,2
e9,1
e10,4
e11,4
e12,1
e13,1
e14,5
e15,2
e16,5
e17,2
e18,3
e19,10
e20,3
e21,3
e22,12
e23,2
e24,4
e25,2
e26,3
e27,3
e28,5
e29,2
e30,1
e31,1
e32,2
e33,1
e34,2
e35,1
e36,1
e37,2
e38,1
e39,6
e40,2
e41,6
e42,1
e43,5
e44,2
e45,5
e46,2
e47,6
e48,2
e49,5
e50,2
e51,1
e52,3
e53,1
e54,1
e55,2
e56,1
e57,2
e58,1
e59,1
e60,2
e61,1
e62,2
e63,3
e64,1
e65,4
e66,2
e67,2
e68,1
e69,2
e70,2
e71,2
e72,3
e73,2
e74,4
e75,9
e76,9
e77,9
e78,9
e79,6
e80,5
e81,2
e82,2
e83,2
e84,9
e85,9
e86,5
e87,1
e88,3
e89,2
e90,2
e91,2
e92,5
e93,2
e94,2
e95,2
e96,1
@.
@//E*O*F Release2/Examples/mesh_e.d//
chmod u=r,g=r,o=r Release2/Examples/mesh_e.d
 
echo x - Release2/Examples/qs44.d
sed 's/^@//' > "Release2/Examples/qs44.d" <<'@//E*O*F Release2/Examples/qs44.d//'
*E: 0,1,2,3.
*L: *[],[0],[1],[2],[3],[01],[02],[03],[10],[12],[13],[20],[21],[23],[30],[31],[32],[012],[013],[021],[023],[031],[032],[102],[103],[120],[123],[130],[132],[201],[203],[210],[213],[230],[231],[301],[302],[310],[312],[320],[321],[0123],[0132],[0213],[0231],[0312],[0321],[1023],[1032],[1203],[1230],[1302],[1320],[2013],[2031],[2103],[2130],[2301],[2310],[3012],[3021],[3102],[3120],[3201],[3210].

*elt(E)
0
1
2
3
@.
*append(L,L,L) ##-
[], [], []
[], [0], [0]
[0], [], [0]
[], [1], [1]
[1], [], [1]
[], [2], [2]
[2], [], [2]
[], [3], [3]
[3], [], [3]
[], [01], [01]
[0], [1], [01]
[01], [], [01]
[], [02], [02]
[0], [2], [02]
[02], [], [02]
[], [03], [03]
[0], [3], [03]
[03], [], [03]
[], [10], [10]
[1], [0], [10]
[10], [], [10]
[], [12], [12]
[1], [2], [12]
[12], [], [12]
[], [13], [13]
[1], [3], [13]
[13], [], [13]
[], [20], [20]
[2], [0], [20]
[20], [], [20]
[], [21], [21]
[2], [1], [21]
[21], [], [21]
[], [23], [23]
[2], [3], [23]
[23], [], [23]
[], [30], [30]
[3], [0], [30]
[30], [], [30]
[], [31], [31]
[3], [1], [31]
[31], [], [31]
[], [32], [32]
[3], [2], [32]
[32], [], [32]
[], [012], [012]
[0], [12], [012]
[01], [2], [012]
[012], [], [012]
[], [013], [013]
[0], [13], [013]
[01], [3], [013]
[013], [], [013]
[], [021], [021]
[0], [21], [021]
[02], [1], [021]
[021], [], [021]
[], [023], [023]
[0], [23], [023]
[02], [3], [023]
[023], [], [023]
[], [031], [031]
[0], [31], [031]
[03], [1], [031]
[031], [], [031]
[], [032], [032]
[0], [32], [032]
[03], [2], [032]
[032], [], [032]
[], [102], [102]
[1], [02], [102]
[10], [2], [102]
[102], [], [102]
[], [103], [103]
[1], [03], [103]
[10], [3], [103]
[103], [], [103]
[], [120], [120]
[1], [20], [120]
[12], [0], [120]
[120], [], [120]
[], [123], [123]
[1], [23], [123]
[12], [3], [123]
[123], [], [123]
[], [130], [130]
[1], [30], [130]
[13], [0], [130]
[130], [], [130]
[], [132], [132]
[1], [32], [132]
[13], [2], [132]
[132], [], [132]
[], [201], [201]
[2], [01], [201]
[20], [1], [201]
[201], [], [201]
[], [203], [203]
[2], [03], [203]
[20], [3], [203]
[203], [], [203]
[], [210], [210]
[2], [10], [210]
[21], [0], [210]
[210], [], [210]
[], [213], [213]
[2], [13], [213]
[21], [3], [213]
[213], [], [213]
[], [230], [230]
[2], [30], [230]
[23], [0], [230]
[230], [], [230]
[], [231], [231]
[2], [31], [231]
[23], [1], [231]
[231], [], [231]
[], [301], [301]
[3], [01], [301]
[30], [1], [301]
[301], [], [301]
[], [302], [302]
[3], [02], [302]
[30], [2], [302]
[302], [], [302]
[], [310], [310]
[3], [10], [310]
[31], [0], [310]
[310], [], [310]
[], [312], [312]
[3], [12], [312]
[31], [2], [312]
[312], [], [312]
[], [320], [320]
[3], [20], [320]
[32], [0], [320]
[320], [], [320]
[], [321], [321]
[3], [21], [321]
[32], [1], [321]
[321], [], [321]
[], [0123], [0123]
[0], [123], [0123]
[01], [23], [0123]
[012], [3], [0123]
[0123], [], [0123]
[], [0132], [0132]
[0], [132], [0132]
[01], [32], [0132]
[013], [2], [0132]
[0132], [], [0132]
[], [0213], [0213]
[0], [213], [0213]
[02], [13], [0213]
[021], [3], [0213]
[0213], [], [0213]
[], [0231], [0231]
[0], [231], [0231]
[02], [31], [0231]
[023], [1], [0231]
[0231], [], [0231]
[], [0312], [0312]
[0], [312], [0312]
[03], [12], [0312]
[031], [2], [0312]
[0312], [], [0312]
[], [0321], [0321]
[0], [321], [0321]
[03], [21], [0321]
[032], [1], [0321]
[0321], [], [0321]
[], [1023], [1023]
[1], [023], [1023]
[10], [23], [1023]
[102], [3], [1023]
[1023], [], [1023]
[], [1032], [1032]
[1], [032], [1032]
[10], [32], [1032]
[103], [2], [1032]
[1032], [], [1032]
[], [1203], [1203]
[1], [203], [1203]
[12], [03], [1203]
[120], [3], [1203]
[1203], [], [1203]
[], [1230], [1230]
[1], [230], [1230]
[12], [30], [1230]
[123], [0], [1230]
[1230], [], [1230]
[], [1302], [1302]
[1], [302], [1302]
[13], [02], [1302]
[130], [2], [1302]
[1302], [], [1302]
[], [1320], [1320]
[1], [320], [1320]
[13], [20], [1320]
[132], [0], [1320]
[1320], [], [1320]
[], [2013], [2013]
[2], [013], [2013]
[20], [13], [2013]
[201], [3], [2013]
[2013], [], [2013]
[], [2031], [2031]
[2], [031], [2031]
[20], [31], [2031]
[203], [1], [2031]
[2031], [], [2031]
[], [2103], [2103]
[2], [103], [2103]
[21], [03], [2103]
[210], [3], [2103]
[2103], [], [2103]
[], [2130], [2130]
[2], [130], [2130]
[21], [30], [2130]
[213], [0], [2130]
[2130], [], [2130]
[], [2301], [2301]
[2], [301], [2301]
[23], [01], [2301]
[230], [1], [2301]
[2301], [], [2301]
[], [2310], [2310]
[2], [310], [2310]
[23], [10], [2310]
[231], [0], [2310]
[2310], [], [2310]
[], [3012], [3012]
[3], [012], [3012]
[30], [12], [3012]
[301], [2], [3012]
[3012], [], [3012]
[], [3021], [3021]
[3], [021], [3021]
[30], [21], [3021]
[302], [1], [3021]
[3021], [], [3021]
[], [3102], [3102]
[3], [102], [3102]
[31], [02], [3102]
[310], [2], [3102]
[3102], [], [3102]
[], [3120], [3120]
[3], [120], [3120]
[31], [20], [3120]
[312], [0], [3120]
[3120], [], [3120]
[], [3201], [3201]
[3], [201], [3201]
[32], [01], [3201]
[320], [1], [3201]
[3201], [], [3201]
[], [3210], [3210]
[3], [210], [3210]
[32], [10], [3210]
[321], [0], [3210]
[3210], [], [3210]
@.
*components(L,E,L) #--/-##
[0], 0, []
[1], 1, []
[2], 2, []
[3], 3, []
[01], 0, [1]
[02], 0, [2]
[03], 0, [3]
[10], 1, [0]
[12], 1, [2]
[13], 1, [3]
[20], 2, [0]
[21], 2, [1]
[23], 2, [3]
[30], 3, [0]
[31], 3, [1]
[32], 3, [2]
[012], 0, [12]
[013], 0, [13]
[021], 0, [21]
[023], 0, [23]
[031], 0, [31]
[032], 0, [32]
[102], 1, [02]
[103], 1, [03]
[120], 1, [20]
[123], 1, [23]
[130], 1, [30]
[132], 1, [32]
[201], 2, [01]
[203], 2, [03]
[210], 2, [10]
[213], 2, [13]
[230], 2, [30]
[231], 2, [31]
[301], 3, [01]
[302], 3, [02]
[310], 3, [10]
[312], 3, [12]
[320], 3, [20]
[321], 3, [21]
[0123], 0, [123]
[0132], 0, [132]
[0213], 0, [213]
[0231], 0, [231]
[0312], 0, [312]
[0321], 0, [321]
[1023], 1, [023]
[1032], 1, [032]
[1203], 1, [203]
[1230], 1, [230]
[1302], 1, [302]
[1320], 1, [320]
[2013], 2, [013]
[2031], 2, [031]
[2103], 2, [103]
[2130], 2, [130]
[2301], 2, [301]
[2310], 2, [310]
[3012], 3, [012]
[3021], 3, [021]
[3102], 3, [102]
[3120], 3, [120]
[3201], 3, [201]
[3210], 3, [210]
@.
sort(L, L) #-
[], []
[0], [0]
[1], [1]
[2], [2]
[3], [3]
[01], [01]
[02], [02]
[03], [03]
[10], [01]
[12], [12]
[13], [13]
[20], [02]
[21], [12]
[23], [23]
[30], [03]
[31], [13]
[32], [23]
[012], [012]
[013], [013]
[021], [012]
[023], [023]
[031], [013]
[032], [023]
[102], [012]
[103], [013]
[120], [012]
[123], [123]
[130], [013]
[132], [123]
[201], [012]
[203], [023]
[210], [012]
[213], [123]
[230], [023]
[231], [123]
[301], [013]
[302], [023]
[310], [013]
[312], [123]
[320], [023]
[321], [123]
[0123], [0123]
[0132], [0123]
[0213], [0123]
[0231], [0123]
[0312], [0123]
[0321], [0123]
[1023], [0123]
[1032], [0123]
[1203], [0123]
[1230], [0123]
[1302], [0123]
[1320], [0123]
[2013], [0123]
[2031], [0123]
[2103], [0123]
[2130], [0123]
[2301], [0123]
[2310], [0123]
[3012], [0123]
[3021], [0123]
[3102], [0123]
[3120], [0123]
[3201], [0123]
[3210], [0123]
@.
*partition(E,L,L,L) ##--
0, [], [], []
1, [], [], []
2, [], [], []
3, [], [], []
1, [0], [0], []
2, [0], [0], []
3, [0], [0], []
0, [1], [], [1]
2, [1], [1], []
3, [1], [1], []
0, [2], [], [2]
1, [2], [], [2]
3, [2], [2], []
0, [3], [], [3]
1, [3], [], [3]
2, [3], [], [3]
2, [01], [01], []
3, [01], [01], []
1, [02], [0], [2]
3, [02], [02], []
1, [03], [0], [3]
2, [03], [0], [3]
2, [10], [10], []
3, [10], [10], []
0, [12], [], [12]
3, [12], [12], []
0, [13], [], [13]
2, [13], [1], [3]
1, [20], [0], [2]
3, [20], [20], []
0, [21], [], [21]
3, [21], [21], []
0, [23], [], [23]
1, [23], [], [23]
1, [30], [0], [3]
2, [30], [0], [3]
0, [31], [], [31]
2, [31], [1], [3]
0, [32], [], [32]
1, [32], [], [32]
3, [012], [012], []
2, [013], [01], [3]
3, [021], [021], []
1, [023], [0], [23]
2, [031], [01], [3]
1, [032], [0], [32]
3, [102], [102], []
2, [103], [10], [3]
3, [120], [120], []
0, [123], [], [123]
2, [130], [10], [3]
0, [132], [], [132]
3, [201], [201], []
1, [203], [0], [23]
3, [210], [210], []
0, [213], [], [213]
1, [230], [0], [23]
0, [231], [], [231]
2, [301], [01], [3]
1, [302], [0], [32]
2, [310], [10], [3]
0, [312], [], [312]
1, [320], [0], [32]
0, [321], [], [321]
@.
@//E*O*F Release2/Examples/qs44.d//
chmod u=rw,g=r,o=r Release2/Examples/qs44.d
 
echo x - Release2/Examples/sort.d
sed 's/^@//' > "Release2/Examples/sort.d" <<'@//E*O*F Release2/Examples/sort.d//'
E: 0,1,2,3.
*L: *[],[0],[1],[2],[3],[01],[02],[03],[10],[12],[13],[20],[21],[23],[30],[31],[32],[012],[013],[021],[023],[031],[032],[102],[103],[120],[123],[130],[132],[201],[203],[210],[213],[230],[231],[301],[302],[310],[312],[320],[321],[0123],[0132],[0213],[0231],[0312],[0321],[1023],[1032],[1203],[1230],[1302],[1320],[2013],[2031],[2103],[2130],[2301],[2310],[3012],[3021],[3102],[3120],[3201],[3210].

*components(L,E,L) #--/-##
[0], 0, []
[1], 1, []
[2], 2, []
[3], 3, []
[01], 0, [1]
[02], 0, [2]
[03], 0, [3]
[10], 1, [0]
[12], 1, [2]
[13], 1, [3]
[20], 2, [0]
[21], 2, [1]
[23], 2, [3]
[30], 3, [0]
[31], 3, [1]
[32], 3, [2]
[012], 0, [12]
[013], 0, [13]
[021], 0, [21]
[023], 0, [23]
[031], 0, [31]
[032], 0, [32]
[102], 1, [02]
[103], 1, [03]
[120], 1, [20]
[123], 1, [23]
[130], 1, [30]
[132], 1, [32]
[201], 2, [01]
[203], 2, [03]
[210], 2, [10]
[213], 2, [13]
[230], 2, [30]
[231], 2, [31]
[301], 3, [01]
[302], 3, [02]
[310], 3, [10]
[312], 3, [12]
[320], 3, [20]
[321], 3, [21]
[0123], 0, [123]
[0132], 0, [132]
[0213], 0, [213]
[0231], 0, [231]
[0312], 0, [312]
[0321], 0, [321]
[1023], 1, [023]
[1032], 1, [032]
[1203], 1, [203]
[1230], 1, [230]
[1302], 1, [302]
[1320], 1, [320]
[2013], 2, [013]
[2031], 2, [031]
[2103], 2, [103]
[2130], 2, [130]
[2301], 2, [301]
[2310], 2, [310]
[3012], 3, [012]
[3021], 3, [021]
[3102], 3, [102]
[3120], 3, [120]
[3201], 3, [201]
[3210], 3, [210]
@.
sort(L, L) #-
[], []
[0], [0]
[1], [1]
[2], [2]
[3], [3]
[01], [01]
[02], [02]
[03], [03]
[10], [01]
[12], [12]
[13], [13]
[20], [02]
[21], [12]
[23], [23]
[30], [03]
[31], [13]
[32], [23]
[012], [012]
[013], [013]
[021], [012]
[023], [023]
[031], [013]
[032], [023]
[102], [012]
[103], [013]
[120], [012]
[123], [123]
[130], [013]
[132], [123]
[201], [012]
[203], [023]
[210], [012]
[213], [123]
[230], [023]
[231], [123]
[301], [013]
[302], [023]
[310], [013]
[312], [123]
[320], [023]
[321], [123]
[0123], [0123]
[0132], [0123]
[0213], [0123]
[0231], [0123]
[0312], [0123]
[0321], [0123]
[1023], [0123]
[1032], [0123]
[1203], [0123]
[1230], [0123]
[1302], [0123]
[1320], [0123]
[2013], [0123]
[2031], [0123]
[2103], [0123]
[2130], [0123]
[2301], [0123]
[2310], [0123]
[3012], [0123]
[3021], [0123]
[3102], [0123]
[3120], [0123]
[3201], [0123]
[3210], [0123]
@.
*lt(E,E) ##
0, 1
0, 2
0, 3
1, 2
1, 3
2, 3
@.
@//E*O*F Release2/Examples/sort.d//
chmod u=r,g=r,o=r Release2/Examples/sort.d
 
echo x - Release2/Src/Makefile
sed 's/^@//' > "Release2/Src/Makefile" <<'@//E*O*F Release2/Src/Makefile//'
# Vanilla makefile for distribution
# You may need to set local c compiler options

CFLAGS = -O2
 
@.SUFFIXES: .o .c .l .ln

@.c.o:	Makefile defns.i extern.i
#	lint -c $<
	cc $(CFLAGS) -c $<

@.c.ln:
	lint -c $<

SRC =	global.c main.c input.c output.c state.c\
	literal.c evaluatelit.c search.c determinate.c order.c\
	join.c utility.c finddef.c interpret.c prune.c constants.c

OBJ =	global.o main.o input.o output.o state.o\
	literal.o evaluatelit.o search.o determinate.o order.o\
	join.o utility.o finddef.o interpret.o prune.o constants.o

LINT =	global.ln main.ln input.ln output.ln state.ln\
	literal.ln evaluatelit.ln search.ln determinate.ln order.ln\
	join.ln utility.ln finddef.ln interpret.ln prune.ln constants.ln


ffoil:   $(OBJ) Makefile
#	lint -x $(LINT) -lm >,nittygritty
	cc -o ffoil2 $(OBJ) -lm


ffoilgt:  $(SRC) defns.i Makefile
	cat defns.i $(SRC) | egrep -v 'defns.i|extern.i' >ffoilgt.c
	cc -mips3 -non_shared -O4 -o ffoil2 ffoilgt.c -lm
	rm ffoilgt.c


$(OBJ): defns.i extern.i
@//E*O*F Release2/Src/Makefile//
chmod u=rw,g=r,o=r Release2/Src/Makefile
 
echo x - Release2/Src/constants.c
sed 's/^@//' > "Release2/Src/constants.c" <<'@//E*O*F Release2/Src/constants.c//'
/******************************************************************************/
/*									      */
/*	Routines concerned with discovering a plausible ordering of the	      */
/*	constants of each type.  There are three phases:		      */
/*	  *  finding possible orderings on pairs of relation arguments	      */
/*	  *  finding a partial ordering that satisfies as many of these	      */
/*	     as possible						      */
/*	  *  selecting a constant ordering consistent with the partial	      */
/*	     ordering							      */
/*									      */
/******************************************************************************/


#include  "defns.i"
#include  "extern.i"

Boolean		**Table=Nil;		/* partial order for target type */

int		TTN,			/* target type number */
		NC,			/* size of target type */
		*TTCollSeq,		/* collation sequence */
		NArgOrders = 0,		/* number of possible arg orders */
		MaxConsistent;		/* max consistent arg orders */

ArgOrder	*ArgOrderList = Nil;


	/*  Find ordering for constants of each type  */

void  OrderConstants()
/*    --------------  */
{
    int		i, j;
    Boolean	**PO;
    Tuple	*NLT;

    ForEach(TTN, 1, MaxType)
    {
	if ( Type[TTN]->FixedPolarity ) continue;

	NC = Type[TTN]->NValues;
	TTCollSeq = Type[TTN]->CollSeq;
	Verbose(3) printf("\nOrdering constants of type %s\n",Type[TTN]->Name);

	if ( ! Table ) Table = AllocatePartOrd(MaxConst);

	FindArgumentOrders();

	if ( NArgOrders == 0 )
	{
	    Type[TTN]->Ordered = false;
	    Verbose(3) printf("\t\tunordered\n");
	    continue;
	}
	else
	{
	    Type[TTN]->Ordered = true;
	}

	/*  Assemble in Table the partial order consistent with the maximum
	    number of arg orders  */

	MaxConsistent = 0;
	PO = AllocatePartOrd(NC);
	ClearPartOrd(PO);
	Verbose(3) printf("\tFinding maximal consistent set\n");

	FindConsistentSubset(0, 0, PO);
	FreePartOrd(PO, NC);

	/*  Sort constants on number of entries in partial order; resolve
	    ties in favour of the initial constant order  */

	NLT = Alloc(NC, Tuple);
	ForEach(i, 0, NC-1)
	{
	    NLT[i] = Alloc(2, Const);
	    NLT[i][0] = Type[TTN]->Value[i];
	    FP(NLT[i][1]) = CountEntries(i+1) + i / (float) NC;
	}
	Quicksort(NLT, 0, NC-1, 1);

	/*  Change collation sequence and print message  */

	Verbose(3) printf("\tFinal order:\n\t\t");
	ForEach(i, 0, NC-1)
	{
	    j = NLT[i][0];
	    Type[TTN]->CollSeq[j] = i+1;
	    Verbose(3) printf("%s ", ConstName[j]);
	    pfree(NLT[i]);
	}
	Verbose(3) putchar('\n');

	pfree(NLT);
    }

    if ( Table ) FreePartOrd(Table, MaxConst);

    ForEach(i, 0, NArgOrders-1)
    {
	pfree(ArgOrderList[i]);
    }
    pfree(ArgOrderList);
}


	/*  Find potential orderings between pairs of arguments of each
	    relation for type TTN  */


void  FindArgumentOrders()
/*    ------------------  */
{
    int		i;
    Relation	R;

    ForEach(i, 0, MaxRel)
    {
	R = RelnOrder[i];
	if ( Predefined(R) || R->Arity < 2 ) continue;

	ExamineArgumentPairs(R, true, R->Pos);

	if ( R->Neg )
	{
	    ExamineArgumentPairs(R, false, R->Neg);
	}
    }
}



	/*  Find potential orderings between pairs of arguments of R where
	    relevant to the type under investigation  */


void  ExamineArgumentPairs(Relation R, Boolean Sign, Tuple *TP)
/*    --------------------    */
{
    int	FirstArg, SecondArg;

    Verbose(3)
	printf("\tChecking arguments of %s%s\n", Sign ? "" : "~", R->Name);

    ForEach(FirstArg, 1, R->Arity-1)
    {
	if ( ! Compatible[R->Type[FirstArg]][TTN] ) continue;

	ForEach(SecondArg, FirstArg+1, R->Arity)
	{
	    if ( ! Compatible[R->Type[SecondArg]][TTN] ) continue;

	    Verbose(3) 
		printf("\t\targuments %d,%d ", FirstArg, SecondArg);

	    ClearPartOrd(Table);
	    if ( ConsistentClosure(Table, TP, FirstArg, SecondArg) )
	    {
		Verbose(3) printf("are consistent\n");
		AddArgOrder(R, Sign, FirstArg, SecondArg);
	    }
	    else
	    {
		Verbose(3) printf("are not consistent\n");
	    }
	}
    }
}



	/*  Investigate args A and B of a set of tuples TP.  See whether each
	    pair of constants is consistent with TP; if so, add and form
	    closure  */

Boolean  ConsistentClosure(Boolean **PO, Tuple *TP, Var A, Var B)
/*       -----------------  */
{
    Const	K, L;
    int		i, j;

    while( *TP )
    {
	K = (*TP)[A];
	L = (*TP)[B];
	TP++;

	if ( K == MISSING_DISC || K == OUT_OF_RANGE ||
	     L == MISSING_DISC || L == OUT_OF_RANGE ) continue;

	/*  Not consistent if either constant missing from type or if
	    current pair in conflict with existing table  */

	if ( (i = TTCollSeq[K]) == 0 || (j = TTCollSeq[L]) == 0  ||
	     ! AddPair(PO, i, j) )
	{
	    return false;
	}
    }

    return true;
}
	


	/*  Note partial order between A and B; add to table if not already
	    there and generate closure.  Return false if the table is no
	    longer consistent  */

Boolean  AddPair(Boolean **PO, int A, int B)
/*       -------  */
{
    int	i, j;

    if ( PO[A][B] ) return true;		/* already there */
    else
    if ( A == B || PO[B][A] ) return false;	/* not consistent */

    ForEach(i, 1, NC)
    {
	if ( i == A || PO[i][A] )
	{
	    ForEach(j, 1, NC)
	    {
		if ( j == B || PO[B][j] )
		{
		    if ( PO[j][i] ) return false;

		    PO[i][j] = true;
		}
	    }
	}
    }

    return true;
}



void  AddArgOrder(Relation R, Boolean Sign, int A1, int A2)
/*    -----------  */
{
    ArgOrder	AO;

    if ( NArgOrders % 100 == 0 )
    {
	ArgOrderList = Realloc(ArgOrderList, NArgOrders+100, ArgOrder);
    }

    ArgOrderList[NArgOrders++] = AO = Alloc(1, struct _arg_ord_rec);

    AO->Rel  = R;
    AO->Sign = Sign;
    AO->A1   = A1;
    AO->A2   = A2;
    AO->In   = 0;
}


	/*  Routines for constant partial order tables  */

Boolean  **AllocatePartOrd(int Size)
/*         ---------------   */
{
    Boolean	**PO;
    int		i;

    PO = Alloc(Size+1, Boolean *);

    ForEach(i, 1, Size)
    {
	PO[i] = Alloc(Size+1, Boolean);
    }

    return PO;
}



void  FreePartOrd(Boolean **PO, int Size)
/*    -----------   */
{
    int i;

    ForEach(i, 1, Size)
    {
	pfree(PO[i]);
    }

    pfree(PO);
}


void  ClearPartOrd(Boolean **PO)
/*    ------------  */
{
    int i;

    ForEach(i, 1, NC)
    {
	memset(PO[i], false, NC+1);
    }
}


void  CopyPartOrd(Boolean **To, Boolean **From)
/*    -----------  */
{
    int i;

    ForEach(i, 1, NC)
    {
	memcpy(To[i], From[i], (NC+1)*sizeof(Boolean));
    }
}



void  FindConsistentSubset(int Included, int TryNext, Boolean **PO)
/*    --------------------  */
{
    Boolean	**CopyPO;
    ArgOrder	AO;
    Tuple	*Entries;
    int		i;

    if ( Included > MaxConsistent )
    {
	/*  Note best consistent partial order so far  */

	CopyPartOrd(Table, PO);
	MaxConsistent = Included;

	Verbose(3)
	{
	    printf("\t\tbest so far");
	    ForEach(i, 0, NArgOrders-1)
	    {
		AO = ArgOrderList[i];
		if ( AO->In )
		{
		    printf(" %s%s:", AO->Sign ? "" : "~", AO->Rel->Name);
		    if ( AO->In == 1 )
		    {
			printf("%d>%d", AO->A1, AO->A2);
		    }
		    else
		    {
			printf("%d>%d", AO->A2, AO->A1);
		    }
		}
	    }
	    putchar('\n');
	}
    }

    if ( TryNext >= NArgOrders ||
	 Included + (NArgOrders - TryNext) <= MaxConsistent )
    {
	return;
    }

    AO = ArgOrderList[TryNext];
    Entries = AO->Sign ? AO->Rel->Pos : AO->Rel->Neg;
    CopyPO = AllocatePartOrd(NC);
    CopyPartOrd(CopyPO, PO);

    if ( ConsistentClosure(PO, Entries, AO->A1, AO->A2) )
    {
	AO->In = 1;
	FindConsistentSubset(Included+1, TryNext+1, PO);
    }

    /*  Do not have to try both polarities of first argument ordering  */

    if ( Included > 0 )
    {
	CopyPartOrd(PO, CopyPO);
	if ( ConsistentClosure(PO, Entries, AO->A2, AO->A1) )
	{
	    AO->In = -1;
	    FindConsistentSubset(Included+1, TryNext+1, PO);
	}
    }

    CopyPartOrd(PO, CopyPO);
    AO->In = 0;
    FindConsistentSubset(Included, TryNext+1, PO);

    FreePartOrd(CopyPO, NC);
}



int  CountEntries(int K)
/*   ------------  */
{
    int i, Sum=0;

    ForEach(i, 1, NC)
    {
	if ( Table[K][i] ) Sum++;
    }

    return Sum;
}
@//E*O*F Release2/Src/constants.c//
chmod u=rw,g=r,o=r Release2/Src/constants.c
 
echo x - Release2/Src/defns.i
sed 's/^@//' > "Release2/Src/defns.i" <<'@//E*O*F Release2/Src/defns.i//'
#include <ctype.h>
#include <math.h>
#include <stdio.h>
#include <sys/types.h>


/******************************************************************************/
/*									      */
/*	Type definitions, including synonyms for structure pointers	      */
/*									      */
/******************************************************************************/


typedef unsigned char Var;

typedef char	Boolean,
		Ordering;	/* valid instances are <,=,>,# */


				/* A tuple is stored as an array of int / fp.

				   * T[0] = tuple number
						+ POSMARK (pos tuples)
				   * T[i] = constant number, or fp value

				   NB: If continuous (fp) values are used,
				       type Const must be the same size as
				       float --if this is not the case, change
				       Const to long.

				   Relation tuple sets are indexed by 3D array.

				   * I[i][j][k] = no. of kth tuple with T[j] = i

				   The last entry is followed by FINISH  */


typedef int			Const,
				*Tuple;

typedef int			***Index;

typedef struct _rel_rec		*Relation;

typedef struct _type_rec	*TypeInfo;

typedef struct _state_rec	State;

typedef struct _lit_rec		*Literal,
				**Clause;

typedef struct _arg_ord_rec	*ArgOrder;

typedef struct _poss_lit_rec	*PossibleLiteral;

typedef struct _backup_rec	*Alternative;

typedef struct _var_rec		*VarInfo;


/******************************************************************************/
/*									      */
/*	Structure definitions						      */
/*									      */
/******************************************************************************/

	/* State */

	/*  A state represents information about the search for a new
	    clause, including the tuples that satisfy the clause and
	    various counts for the clause and the tuples  */

struct _state_rec
{
	int		MaxVar,		/* highest variable */
			NPos,		/* number of pos tuples */
			NTot,		/* number of all tuples */
			NOrigPos,	/* original pos tuples covered */
			NOrigTot;	/* original tuples covered */
	Tuple		*Tuples;	/* training set */
	float		BaseInfo;	/* information per pos tuple */
};

	/* Literal */

struct _lit_rec
{
	char		Sign;		/* 0=negated, 1=pos, 2=determinate */
	Relation	Rel;
	Var		*Args;
	int		WeakLits;	/* value up to this literal */
	Ordering	*ArgOrders;	/* recursive lits: =, <, >, # */
	float		Bits;		/* encoding length */
};

	/* Relation */

	/* Note:

	   Relations are represented by the (positive) tuples they contain;
	   if the closed world assumption is not in force, negative tuples
	   known not to be in the relation can be given explicitly.

	   A key specifies a sensible way that a relation can be accessed
	   by noting which arguments must have bound values.  There can
	   be any number of keys; if there are none, all possible ways
	   of accessing the relation are ok. */
	   
struct _rel_rec
{
	char		*Name;
	int		Arity,		/* number of arguments */
			NKeys,		/* number of keys (0=all ok) */
			*Key,		/* keys, each packed in an int */
			*Type;		/* types of arguments */
	TypeInfo	*TypeRef;	/* redundant pointers to types */
	Tuple		*Pos,		/* positive tuples */
			*Neg;		/* negative tuples or Nil (CWA) */
	Index		PosIndex,	/* index for positive tuples */
			NegIndex;	/* ditto for explicit negative tuples */
	int		PosDuplicates,	/* number of duplicate pos tuples*/
			NTrialArgs,	/* number of args to try (gain) */
			NTried;		/* number of them evaluated */
	Clause		*Def;		/* definition is array of clauses */
	Boolean		BinSym,		/* true for binary symmetric relns */
			PossibleTarget,
			**PosOrder,	/* argument order info for R() */
			**NegOrder,	/*    "       "    "    " ~R() */
			*ArgNotEq;	/* args that cannot be the same var
					   (indexed by ArgPair) */
	float		Bits;		/* current encoding cost */
};

	/* Type */

struct _type_rec
{	char		*Name;		/* type name */
	Boolean		Continuous,	/* continuous (non-discrete) */
			Ordered,	/* ordered discrete type */
			FixedPolarity;
	int		NValues,	/* number of discrete constants */
			NTheoryConsts;  /* number of theory constants */
	Const		*Value,		/* constants */
			*TheoryConst;	/* theory constants */
	int		*CollSeq;	/* CollSeq[k] = x if (global) constant
					   k is x'th const of this type */
};


	/* Possible argument order -- used in discovering constant orders */

struct _arg_ord_rec
{
	Relation	Rel;		/* relation */
	Boolean		Sign;		/* sign */
	int		A1, A2,		/* A1 < A2 or A1 > A2 */
			In;		/* 0, -1 (reverse) or +1 */
};


	/* Structures used in backing up search */

struct _poss_lit_rec
{
	Relation	Rel;
	Boolean		Sign;
	Var		*Args;
	float		Gain,
			Bits;
	int		WeakLits,
			NewSize,
			TotCov,
			PosCov;
};

struct _backup_rec
{
	float		Value;
	Clause		UpToHere;
};


	/* Variables */

struct _var_rec
{
	char		*Name;
	int		Type,
			Depth;
	TypeInfo	TypeRef;
}; 


#define  FP(X)			(*((float *)(&X)))

	/*  The first four relations are predefined comparisons with
	    aliased names defined here  */

#define  EQVAR			Reln[0]		/* var = var */
#define  EQCONST		Reln[1]		/* var = theory const */
#define  GTVAR			Reln[2]		/* var > var */
#define  GTCONST		Reln[3]		/* var > threshold */

#define  Predefined(R)		(R==EQVAR||R==EQCONST||R==GTVAR||R==GTCONST)
#define  HasConst(R)		(R==EQCONST||R==GTCONST)

#define  Verbose(x)		if (VERBOSITY >= x)

#define  LN2	 		0.693147
#define  Log2(x)		(log((float) x)/LN2)
#define  Log2e			1.44269
#define  Log2sqrt2Pi		1.32575
#define  LogComb(n,r)		(Log2Fact(n) - Log2Fact(r) - Log2Fact((n)-(r)))
#define  Except(n,e)		((n) ? (1.1*(Log2(n) + LogComb(n, e))) : 0.0)
#define  Encode(n)		Except(AllTuples, n)

#define  Nil			0
#define  false			0 
#define  true			1 
#define  Max(a,b)		( (a)>(b) ? a : b ) 
#define  Min(a,b)		( (a)<(b) ? a : b ) 

#define  ForEach(V,First,Last)	for(V=First;V<=Last;V++) 

#define  Positive(T)		((T)[Target->Arity] == FnValue[(T)[0]])
#define  Undetermined(T)	((T)[Target->Arity] == UNBOUND )

#define  FalseBit		01
#define  TrueBit		02
#define	 CountedTBit		04
#define	 CountedFBit		010
#define  ResetFlag(A,B)		Flags[A] &= (~(B))
#define  SetFlag(A,B)		Flags[A] |= B
#define  TestFlag(A,B)		(Flags[A] & B)
#define  ClearFlags		memset(Flags,0,StartDef.NTot)

#define  BestLitGain		(NPossible ? Possible[1]->Gain : 0.0)

#define  MonitorWeakLits(W)	if (W) NWeakLits++; else NWeakLits=0

#define  Plural(n)		((n) != 1 ? "s" : "")
#define  ReadToEOLN		while ( getchar() != '\n' )

#define  Alloc(N,T)		(T *) pmalloc((N)*sizeof(T))
#define  AllocZero(N,T)		(T *) pcalloc(N, sizeof(T))
#define  Realloc(V,N,T)		V = (T *) prealloc(V, (N)*sizeof(T))

#define  MissingValue(R,A,X)	(MissingVals && MissingVal(R,A,X))
#define  ungetchar(A)		ungetc(A, stdin)

#define	 ArgPair(A2,A1)		(((A2-1)*(A2-2))/2 + A1-1)

	/*  The following are used to pack and unpack parameters into
	    argument lists.  AV must be the address of an int or float  */

#define  SaveParam(A,AV)	memcpy(A,AV,sizeof(Const))
#define  GetParam(A,AV)		memcpy(AV,A,sizeof(Const))



/******************************************************************************/
/*									      */
/*	Various constants						      */
/*									      */
/******************************************************************************/


#define  FINISH	   10000000	/* large constant used as a terminator */

#define	 UNBOUND    0357357	/* odd marker used in interpret.c, join.c */

#define  MISSING_DISC     1	/* missing value "?" is the first constant */

#define  MISSING_FP 0.03125	/* arbitrary number used as the floating
				   point equivalent of MISSING_DISC - if
				   it clashes with a genuine data value, just
				   change this */

#define	 OUT_OF_RANGE	  2	/* denotes constant outside closed world */



/******************************************************************************/
/*									      */
/*	Synopsis of functions						      */
/*									      */
/******************************************************************************/


	/* main.c */

void	  main(int Argc, char *Argv[]);

	/* utility.c */

void	  *pmalloc(unsigned arg);
void	  *prealloc(void * arg1, unsigned arg2);
void	  *pcalloc(unsigned arg1, unsigned arg2);
void	  pfree(void *arg);
float	  CPUTime();

	  /* input.c */

Boolean	  ReadType();
void	  ReadTypes();
Tuple	  ReadTuple(Relation R);
Tuple	  *ReadTuples(Relation R);
Relation  ReadRelation();
void	  ReadRelations();
int	  FindType(char *N);
char	  *CopyString(char *s);
void	  Error();
void	  DuplicateTuplesCheck(Relation R);
int	  CountDuplicates(Tuple *T, int N, int Left, int Right);
Boolean	  SymmetryCheck(Relation R);
char	  ReadName(char *s);
Const	  FindConstant(char *N, Boolean MustBeThere);
int	  Number(Tuple *T);
void	  CheckTypeCompatibility();
Boolean	  CommonValue(int N1, Const *V1, int N2, Const *V2);
Index	  MakeIndex(Tuple *T, int N, Relation R);
void	  UnequalArgsCheck(Relation R);
Boolean	  NeverEqual(Tuple *T, Var F, Var S);

	  /* output.c */

void	  PrintTuple(Tuple C, int N, TypeInfo *TypeRef, Boolean ShowPosNeg);
void	  PrintTuples(Tuple *TT, int N);
void	  PrintSpecialLiteral(Relation R, Boolean RSign, Var *A);
void	  PrintComposedLiteral(Relation R, Boolean RSign, Var *A);
void	  PrintLiteral(Literal L);
void	  PrintClause(Relation R, Clause C, Boolean Cut);
void	  PrintSimplifiedClause(Relation R, Clause C, Boolean Cut);
void	  Substitute(char *Old, char *New);
void	  PrintDefinition(Relation R);

	  /* literal.c */

void	  ExploreArgs(Relation R, Boolean CountFlag);
Boolean	  AcceptableKey(Relation R, int Key);
Boolean   Repetitious(Relation R, Var *A);
Boolean   SameArgs(int N, Var *A1, int MV1, Var *A2, int MV2, int LN);
void	  ExploreEQVAR();
void	  ExploreEQCONST();
void	  ExploreGTVAR();
void	  ExploreGTCONST();
Boolean	  TryArgs(Relation R, int This, int HiVar, int FreeVars, int MaxDepth,
	  	    int Key, Boolean TryMostGeneral, Boolean RecOK);
int	  EstimatePossibleArgs(int TNo);

	  /* evaluatelit.c */

void	  EvaluateLiteral(Relation R, Var *A, float LitBits, Boolean *Prune);
void	  PrepareForScan(Relation R, Var *A);
float	  NegThresh(int P, int P1);
Boolean	  TerminateScan(Relation R, Var *A);
Boolean	  Satisfies(int RN, Const V, Const W, Tuple Case);
void	  CheckForPrune(Relation R, Var *A);
void	  CheckNewVars(Tuple Case);
float	  Worth(int N, int P, int T, int UV);
float	  Info(int P, int T);
Boolean	  MissingVal(Relation R, Var *A, Tuple T);
Boolean	  Unknown(Var V, Tuple T);
void	  FindThreshold(Var *A);
void	  PossibleCut(float C);
int	  MissingAndSort(Var V, int Fp, int Lp);
void	  Quicksort(Tuple *Vec, int Fp, int Lp, Var V);

	  /* join.c */

Boolean	  Join(Tuple *T, Index TIX, Var *A, Tuple C, int N, Boolean YesOrNo);

	  /* state.c */

void	  OriginalState(Relation R);
void	  NewState(Literal L, int NewSize);
void	  FormNewState(Relation R, Boolean RSign, Var *A, int NewSize);
void	  AcceptNewState(Relation R, Var *A, int NewSize);
void	  RecoverState(Clause C, Boolean MakeNewClause);
void	  CheckSize(int SoFar, int Extra, int *NewSize, Tuple **TSAddr);
Tuple	  InitialiseNewCase(Tuple Case);
Tuple	  Extend(Tuple Case, Tuple Binding, Var *A, int N);
void	  CheckOriginalCaseCover();
int	  PosDefinite();
void	  FreeTuples(Tuple *TT, Boolean TuplesToo);
double	  Log2Fact(int n);

	  /* determinate.c */

Boolean	  GoodDeterminateLiteral(Relation R, Var *A, float LitBits);
void	  ProcessDeterminateLiterals();
Boolean	  SameVar(Var A, Var B);
void	  ShiftVarsDown(int s);

	  /* search.c */

void	  ProposeLiteral(Relation R, Boolean TF, Var *A,
	  		   int Size, float LitBits, int OPos, int OTot,
	  		   float Gain, Boolean Weak);
Boolean	  Recover();
void	  Remember(Literal L, int OPos, int OTot);
Literal	  MakeLiteral(int i);
Literal	  SelectLiteral();
void	  FreeLiteral(Literal L);
void	  FreeClause(Clause C);

	  /* order.c */

void	  ExamineVariableRelationships();
Boolean	  RecursiveCallOK(Var *A);
void	  AddOrders(Literal L);
void	  NoteRecursiveLit(Literal L);

	  /* finddef.c */

void	  FindDefinition(Relation R);
Clause	  FindClause();
void	  ExamineLiterals();
void	  GrowNewClause();
Boolean	  AllLHSVars(Literal L);
Boolean	  AllDeterminate();
float	  CodingCost(Clause C);

	  /* prune.c */

void	  PruneNewClause();
void	  CheckVariables();
Boolean	  TheoryConstant(Const C, TypeInfo T);
Boolean	  ConstantVar(Var V, Const C);
Boolean	  IdenticalVars(Var V, Var W);
Boolean	  Known(Relation R, Var V, Var W);
void	  Insert(Var V, Relation R, Var A1, Const A2);
Boolean	  Contains(Var *A, int N, Var V);
Boolean	  QuickPrune(Clause C, Var MaxBound, Boolean ValueBound);
Boolean	  SatisfactoryNewClause(int Cover, int Errs);
void	  Cleanup(Clause C);
void	  RenameVariables(Clause C);
Boolean	  RedundantLiterals(int ErrsNow);
Boolean	  EssentialBinding(int LitNo);
void	  ReplaceVariable(Var Old, Var New);
void	  SiftClauses();
void	  SimplifyClauses();
int	  CountErrs(int LastMod, Boolean Change);
Boolean	  UnsoundRecursion(Clause C);
Var	  HighestVarInDefinition(Relation R);
void	  RestoreTypeRefs();

	  /* interpret.c */

Boolean	  CheckRHS(Clause C);
Boolean	  Interpret(Relation R, Tuple Case);
void	  InitialiseValues(Tuple Case, int N);

	  /* constants.c */

void	  OrderConstants();
void	  FindArgumentOrders();
void	  ExamineArgumentPairs(Relation R, Boolean Sign, Tuple *TP);
Boolean	  ConsistentClosure(Boolean **Table, Tuple *TP, Var A, Var B);
Boolean	  AddPair(Boolean **Table, int A, int B);
void	  AddArgOrder(Relation R, Boolean Sig, int A1, int A2);
Boolean	  **AllocatePartOrd(int Size);
void	  FreePartOrd(Boolean **PO, int Size);
void	  ClearPartOrd(Boolean **PO);
void	  FindConsistentSubset(int Included, int TryNext, Boolean **PO);
int	  CountEntries(int K);
@//E*O*F Release2/Src/defns.i//
chmod u=rw,g=r,o=r Release2/Src/defns.i
 
echo x - Release2/Src/determinate.c
sed 's/^@//' > "Release2/Src/determinate.c" <<'@//E*O*F Release2/Src/determinate.c//'
/******************************************************************************/
/*									      */
/*	Routines for processing determinate literals			      */
/*									      */
/******************************************************************************/


#include  "defns.i"
#include  "extern.i"


Boolean  GoodDeterminateLiteral(Relation R, Var *A, float LitBits)
/*       ----------------------  */
{
    int		MaxSoFar, PreviousMax, This, i, j;
    Var		V;
    Literal	L;
    Boolean	SensibleBinding=false;

    /*  See whether this determinate literal's bound variables were all bound
	by determinate literals on the same relation  */

    ForEach(j, 1, R->Arity)
    {
	SensibleBinding |= ( A[j] <= Target->Arity );
    }

    MaxSoFar = Target->Arity;

    for ( i = 0 ; ! SensibleBinding && i < NLit ; i++ )
    {
	if ( ! NewClause[i]->Sign ) continue;

	PreviousMax = MaxSoFar;

	ForEach(j, 1, NewClause[i]->Rel->Arity)
	{
	    if ( (V = NewClause[i]->Args[j]) > MaxSoFar ) MaxSoFar = V;
	}

	if ( NewClause[i]->Rel != R || NewClause[i]->Sign != 2 )
	{
	    ForEach(j, 1, R->Arity)
	    {
		SensibleBinding |= ( A[j] <= MaxSoFar && A[j] > PreviousMax );
	    }
	}
    }

    if ( ! SensibleBinding )
    {
	Verbose(3)
	{
	    printf("\tall vars bound by determinate lits on same relation\n");
	}
	return false;
    }

    /*  Record this determinate literal  */

    This = NLit + NDeterminate;
    if ( This && This%100 == 0 )
    {
        Realloc(NewClause, This+100, Literal);
    }

    L = NewClause[This] = AllocZero(1, struct _lit_rec);

    L->Rel  = R;
    L->Sign = 2;
    L->Bits = LitBits;
    L->Args = Alloc(R->Arity+1, Var);
    memcpy(L->Args, A, (R->Arity+1)*sizeof(Var));

    NDeterminate++;

    return true;
}



void  ProcessDeterminateLiterals()
/*    --------------------------  */
{
    int		PrevMaxVar, PrevTot, i, j, l, m;
    Literal	L;
    Var		V;
    Boolean	Unique, Changed;

    PrevMaxVar = Current.MaxVar;
    PrevTot = Current.NOrigTot;

    Verbose(1) printf("\nDeterminate literals\n");

    ForEach(l, 1, NDeterminate)
    {
	L = NewClause[NLit++];

	Verbose(1)
	{
	    putchar('\t');
	    PrintLiteral(L);
	}

	Changed = PrevMaxVar != Current.MaxVar;

	/*  Rename free variables  */

	ForEach(i, 1, L->Rel->Arity)
	{
	    if ( L->Args[i] > PrevMaxVar )
	    {
		L->Args[i] += Current.MaxVar - PrevMaxVar;

		if ( L->Args[i] > MAXVARS )
		{
		    Verbose(1) printf("\t\tno more variables\n");
		    NLit--;
		    MonitorWeakLits(PrevTot == Current.NOrigTot);
		    return;
		}
	    }
	}

	if ( Changed )
	{
	    Verbose(1)
	    {
		printf(" ->");
		PrintLiteral(L);
	    }
	    Changed = false;
	}

	if ( L->Rel == Target ) AddOrders(L);

        FormNewState(L->Rel, true, L->Args, Current.NTot);

	/*  Verify that new variables introduced by this determinate literal
	    don't replicate new variables introduced by previous determinate
	    literals.  [Note: new variables checked against old variables
	    in EvaluateLiteral() ]  */

	for ( i = Current.MaxVar+1 ; i <= New.MaxVar ; )
	{
	    Unique = true;

	    for ( j = PrevMaxVar+1 ; Unique && j <= Current.MaxVar ; j++ )
	    {
		Unique = ! SameVar(i, j);
	    }

	    if ( Unique )
	    {
		i++;
	    }
	    else
	    {
		j--;

		Verbose(1)
		{
		    printf(" %s=%s", Variable[i]->Name, Variable[j]->Name);
		}

		ShiftVarsDown(i);

		ForEach(V, 1, L->Rel->Arity)
		{
		    if ( L->Args[V] == i ) L->Args[V] = j;
		    else
		    if ( L->Args[V] >  i ) L->Args[V]--;
		}

		Changed = true;
	    }
	}

	/*  If no variables remain, delete this literal  */

	if ( Current.MaxVar == New.MaxVar )
	{
	    Verbose(1) printf(" (no new vars)");
	
	    NLit--;
	    ForEach(m, 1, NDeterminate-l)
	    {
		NewClause[NLit+m-1] = NewClause[NLit+m];
	    }

	    FreeTuples(New.Tuples, true);
	}
	else
	{
	    /* This determinate Literal is being kept in the clause */

	    if ( Changed )
	    {
		Verbose(1)
		{
		    printf(" ->");
		    PrintLiteral(L);
		}
	    }

	    AcceptNewState(L->Rel, L->Args, Current.NTot);
	    NDetLits++;

	    if ( L->Rel == Target ) NoteRecursiveLit(L);
	}

	Verbose(1) putchar('\n');
    }

    MonitorWeakLits(PrevTot == Current.NOrigTot);
}



	/*  See whether variable a is always the same as variable b in
	    all positive or undetermined tuples of the new state  */

Boolean  SameVar(Var A, Var B)
/*       -------  */
{
    Tuple	*TSP, Case;

    for ( TSP = New.Tuples ; Case = *TSP++; )
    {
	if ( ( Positive(Case) || Undetermined(Case) ) && Case[A] != Case[B] )
	{
	    return false;
	}
    }

    /*  If same, delete any negative tuples where different  */

    for ( TSP = New.Tuples ; Case = *TSP; )
    {
	if ( ! Positive(Case) && Case[A] != Case[B] )
	{
	    *TSP = New.Tuples[New.NTot-1];
	    New.NTot--;
	    New.Tuples[New.NTot] = Nil;
	}
	else
	{
	    TSP++;
	}
    }

    return true;
}



void  ShiftVarsDown(int s)
/*    -------------  */
{
    Tuple	*TSP, Case;
    Var		V;

    New.MaxVar--;

    for ( TSP = New.Tuples ; Case = *TSP++ ; )
    {
	ForEach(V, s, New.MaxVar)
	{
	    Case[V] = Case[V+1];
	}
    }

    ForEach(V, s, New.MaxVar)
    {
	Variable[V]->Type = Variable[V+1]->Type;
        Variable[V]->TypeRef = Variable[V+1]->TypeRef;
    }
}
@//E*O*F Release2/Src/determinate.c//
chmod u=rw,g=r,o=r Release2/Src/determinate.c
 
echo x - Release2/Src/evaluatelit.c
sed 's/^@//' > "Release2/Src/evaluatelit.c" <<'@//E*O*F Release2/Src/evaluatelit.c//'
/******************************************************************************/
/*									      */
/*	This group of routines has responsibility for evaluating a proposed   */
/*	literal.  There are many aspects that are checked simultaneously:     */
/*									      */
/*	  *  whether the literal is determinate				      */
/*	  *  whether this literal would result in a completed clause	      */
/*	  *  whether this literal would produce too many tuples		      */
/*	  *  pruning, both of this literal and of any specialisations of it   */
/*	  *  new variables that duplicate existing variables		      */
/*		- for all tuples					      */
/*		- for pos tuples (determinate literals)			      */
/*	  *  all new variables being bound to constants on pos tuples	      */
/*	  *  gain computation (including weak literal sequence check)	      */
/*	  *  adjusting records of best literals so far			      */
/*									      */
/*	The principles underlying this routine are:			      */
/*									      */
/*	  *  No literal may introduce a variable that duplicates an existing  */
/*	     variable (since the same effect could be obtained with a more    */
/*	     specific literal).						      */
/*	  *  No determinate literal may introduce a new variable that is      */
/*	     the same as an existing variable on pos tuples (since the more   */
/*	     specific literal would also be determinate).		      */
/*	  *  Exploration of a literal can cease as soon as it is clear that   */
/*	     the literal will not be used.  In some cases, it is also possible*/
/*	     to exclude other literals subsumed by this.  Such pruning is     */
/*	     tied to the calculation of gain and determinacy, and would need  */
/*	     to be altered if these are changed.			      */
/*									      */
/*	The various counts have components with the following meanings:	      */
/*									      */
/*		Pos	pos tuples					      */
/*		Neg	neg tuples					      */
/*		Tot	all tuples					      */
/*									      */
/*		T	pertaining to the unnegated literal R(A)	      */
/*		F	pertaining to ~R(A)				      */
/*		M	missing value (so neither)			      */
/*									      */
/*		Now	number of tuples in current state		      */
/*		Orig	number of tuples in original state		      */
/*		New	referring to state if use R(A) or ~R(A)		      */
/*									      */
/*	When computing Pos values,					      */
/*									      */
/*	  * an unbound tuple counts as 1 (potential pos)		      */
/*	  * an Orig tuple is counted as 1 only if all bindings are correct    */
/*	  * the status of each Orig tuple is maintained via flags	      */
/*									      */
/******************************************************************************/


#include  "defns.i"
#include  "extern.i"


int
	OrigTPos,		/* orig pos tuples with extensions, R(A) */
	OrigTTot,
	OrigFPos,		/* ditto, ~R(A) */
	OrigFTot,

	NowTPos,		/* current pos tuples with extensions, R(A) */
	NowTTot,
	NowFPos,		/* ditto, ~R(A); NewFPos is identical */
	NowFNeg,
	NowFTot,		/* calculated for brevity at end */
	NowMPos,		/* pos tuples with missing values */
	NowMTot,		/* pos tuples with missing values */

	NewTPos,		/* pos tuples in new state, R(A) */
	NewTTot,

	NNewVars,		/* number of unbound vars in R(A) */
	NConstVars,		/* number of constant pseudo-vars  */
	NDuplicateVars,		/* number of duplications so far */
	NArgs,			/* number of relation arguments */
	BestCover,		/* coverage of best saveable clause */
	MinSaveableCover,	/* min coverage if clause saveable */
	MaxFPos,
	PossibleCuts;

Var
	BindingVar,
	*OldVar,		/* old var possibly equal to a new var */
	*NewVarPosn,		/* argument number of new var */
	*ConstVarPosn;		/* new vars with unchanging values */

Tuple
	FirstBinding;		/* check for consts masquerading as new vars */

Boolean
	Allocate = true,
	Bound,			/* whether fn value bound after literal */
	NegatedLiteralOK,	/* ~R(A) permissible  */
	*DifferOnNegs,		/* corresponding pair not identical */
	*FirstOccurrence,	/* first time variable appears in args */
	PossibleT,		/* R(A) is a candidate */
	PossibleF,		/* ~R(A) is a candidate */
	Determinate;		/* R(A) is determinate */

float
	MinUsefulGain,		/* min gain to affect outcome */
	MinPos,			/* min pos tuples to achieve MinUsefulGain */
	BestAccuracy,		/* accuracy of best saveable clause */
	MaxFNeg,		/* max FNeg tuples to avoid pruning ~R(A) */
	NewClauseBits;		/* if add literal to clause  */



	/*  Examine literals R(A) and ~R(A) (if appropriate)  */

void  EvaluateLiteral(Relation R, Var *A, float LitBits, Boolean *Prune)
/*    ---------------  */
{
    Boolean	Abandoned=false, RealDuplicateVars=false, WeakT, WeakF,
		SavedSign;
    Var		V, W;
    int		i, j, Coverage, Size, Potential;
    float	PosGain, NegGain, Gain, CurrentRatio, Accuracy, Extra;

    Verbose(3)
    {
	putchar('\t');
	PrintComposedLiteral(R, true, A);
    }

    if ( Prune ) *Prune = false;

    Extra = LitBits - Log2(NLit+1.001-NDetLits);
    NewClauseBits = ClauseBits + Max(0, Extra);

    PrepareForScan(R, A);

    if ( R == GTCONST )
    {
	/*  Find best threshold and counts in one go  */

	FindThreshold(A);
	if ( PossibleCuts > 0 ) LitBits += Log2(PossibleCuts);
	Determinate = false;
	NDuplicateVars = NConstVars = 0;
    }
    else
    {
	Abandoned = TerminateScan(R, A);
    }

    if ( Abandoned &&
	 NewTTot <= MAXTUPLES	/* not because out of room for tuples */ &&
	 NNewVars		/* new vars, so potential for pruning */ &&
	 Current.NPos - (NowFPos+NowMPos) < MinPos  /* R(A) has insuff gain */ )
    {
	/*  Check for possible pruning of more specific literals  */

	if ( NegatedLiteralOK )
	{
	    /*  A more specific ~R(A) will match more tuples.  In order to
		prune, we must be sure that the current ~R(A) matches
		enough neg tuples to ensure that the gain is not interesting.
		Assume all pos tuples other than those known to have missing
		values would be matched by a more specific ~R(A)  */

	    MaxFPos = Current.NPos - NowMPos;
	    MaxFNeg = NegThresh(MaxFPos, MaxFPos);

	    CheckForPrune(R, A);

	    *Prune = NowFNeg > MaxFNeg;
	}
	else
	{
	    /*  Can prune only when a more specific literal than R(A)
		could not be saveable  */

	    *Prune = OrigTPos < MinSaveableCover;
	}
    }

    NowFTot = NowFPos + NowFNeg;
    PossibleT &= ( Bound ? NewTPos > 0 : NowTTot > 0 );
    PossibleF &= ( Bound ? NowFPos > 0 : NowFTot > 0 );

    Verbose(3)
    {
	printf("  %d[%d/%d]", NowTPos, NewTPos, NewTTot);

	if ( NegatedLiteralOK || Abandoned )
	{
	    printf(" [%d/%d]", NowFPos, NowFTot);
	}
	printf("  ");
    }

    if ( Abandoned )
    {
	Verbose(3)
	{
	    printf(" abandoned");
	    if ( OutOfWorld ) printf(" ^");
	    printf("(%d%%)\n",
		   (100 * (NowTTot+NowFTot+NowMTot)) / Current.NTot);
	}

	return;
    }

    ForEach(i, 0, NDuplicateVars-1)
    {
	V = A[ NewVarPosn[i] ];
	W = OldVar[i];
	if ( W > Current.MaxVar ) W = A[ W-Current.MaxVar ];  /* special */
	if ( NewTPos || ! DifferOnNegs[i] )
	{
	    Verbose(3)
		printf(" %s%s%s",
		       Variable[W]->Name,
		       ( DifferOnNegs[i] ? "=+" : "=" ),
		       Variable[V]->Name);
	}

	RealDuplicateVars |= ! DifferOnNegs[i];
    }

    Verbose(3)
    {
	if ( NewTPos > 1 )
	{
	    ForEach(i, 0, NConstVars-1)
	    {
		V = A[ j=ConstVarPosn[i] ];

		printf(" %s=", Variable[V]->Name);

		if ( Variable[V]->TypeRef->Continuous )
		{
		    printf("%g", FP(FirstBinding[j]));
		}
		else
		{
		    printf("%s", ConstName[FirstBinding[j]]);
		}
	    }
	}
    }

    if ( Determinate )
    {
	/*  Check whether determinacy has been violated  */

	Determinate = ( Bound ? ! NDuplicateVars : ! RealDuplicateVars ) &&
		      NConstVars < NNewVars;

	Verbose(3) printf(" [%s]", Determinate ? "Det" : "XDet");
    }

    /*  Now assess gain if applicable.  Any literal that introduces a
	duplicate variable is unacceptable (the more specific literal
	would give the same result.  A literal R(A) that introduces a
	new variable that replicates an existing variable on pos tuples
	is also excluded -- the more specific literal would match the
	same number of pos tuples and perhaps fewer neg tuples  */

    if ( NewTPos ) PossibleT &= ! NDuplicateVars;

    if ( RealDuplicateVars || ( ! PossibleT && ! PossibleF ) )
    {
	Verbose(3) printf(" #\n");
	return;
    }

    /*  Due to arithmetic roundoff, ratios rather than gain are used to
	detect weak literals  */

    CurrentRatio = ( Current.NPos ?
		     Current.NPos/(float) Current.NTot :
		     1.0 / FnRange );

    if ( PossibleT )
    {
	if ( OrigTPos == OrigTTot && OrigTPos == StartClause.NTot )
	{
	    PosGain = MaxPossibleGain;
	}
	else
	{
	    Potential = ( ! Bound && ! BindingVar ? NowTTot : NowTPos );
	    PosGain = Worth(Potential, NewTPos, NewTTot, NNewVars-NConstVars);
	}
	WeakT = Bound && ! BindingVar && NowFTot <= 0 ||
		NewTPos/(NewTTot+1E-3) <= 0.9999 * CurrentRatio ||
		NewTTot > Current.NTot && 
		  OrigTPos == Current.NOrigPos && OrigTTot == Current.NOrigTot;
    }
    else
    {
	PosGain = 0.0;
    }

    if ( PossibleF )
    {
	if ( OrigFPos == OrigFTot && OrigFPos == StartClause.NPos )
	{
	    NegGain = MaxPossibleGain;
	}
	else
	{
	    Potential = ( ! Bound && ! BindingVar ? NowFTot : NowFPos );
	    NegGain = Worth(Potential, NowFPos, NowFTot, 0);
	}
	WeakF = Bound && ! BindingVar && NowTTot <= 0 ||
	        NowFPos/(NowFTot+1E-3) <= 0.9999 * CurrentRatio ||
		NowFTot > Current.NTot && 
		  OrigFPos == Current.NOrigPos && OrigFTot == Current.NOrigTot;
    }
    else
    {
	NegGain = 0.0;
    }

    Verbose(3)
    {
	printf(" gain %.1f", PosGain);
	if ( NegatedLiteralOK ) printf(",%.1f", NegGain);
    }

    /*  Weak literal sequence check  */

    if ( NWeakLits >= MAXWEAKLITS && ! Determinate &&
	 ( ! PossibleT || WeakT ) && ( ! PossibleF || WeakF ) )
    {
	Verbose(3) printf(" (weak)\n");
	return;
    }

    Verbose(3) putchar('\n');

    /*  Would the addition of this literal to the clause create the best
	saved clause so far? */

    if ( PossibleT &&
	 ( ! PossibleF ||
	   NewTPos / (float) NewTTot > NowFPos / (float) NowFTot ) )
    {
	SavedSign = 1;
	Accuracy = OrigTPos / (float) OrigTTot;
	Coverage = OrigTPos;
    }
    else
    if ( PossibleF )
    {
	SavedSign = 0;
	Accuracy = OrigFPos / (float) OrigFTot;
	Coverage = OrigFPos;
    }
    else
    {
	Accuracy = 0;
    }

    if ( Accuracy >= MINACCURACY-1E-3 &&
	 Coverage > 0 &&
	 ( Accuracy > BestAccuracy ||
	   Accuracy == BestAccuracy && Coverage > BestCover ) )
    {
	if ( ! AlterSavedClause )
	{
	    AlterSavedClause = AllocZero(1, struct _poss_lit_rec);
	}

	AlterSavedClause->Rel      = R;
	AlterSavedClause->Sign     = SavedSign;
	AlterSavedClause->Bits     = LitBits;
	AlterSavedClause->WeakLits = 0;
	AlterSavedClause->TotCov   = ( SavedSign ? OrigTTot : OrigFTot );
	AlterSavedClause->PosCov   = ( SavedSign ? OrigTPos : OrigFPos );

	Size = R->Arity+1;
	if ( HasConst(R) ) Size += sizeof(Const) / sizeof(Var);

	AlterSavedClause->Args = Alloc(Size, Var);
	memcpy(AlterSavedClause->Args, A, Size*sizeof(Var));
    }

    /*  Compute gains and save if appropriate  */

    Gain = Max(PosGain, NegGain);

    if ( Determinate &&
	 Gain < DETERMINATE * MaxPossibleGain &&
	 GoodDeterminateLiteral(R, A, LitBits) )
    {
	return;
    }

    if ( PosGain > 1E-3 &&
	 ( ! SavedClause || SavedClauseAccuracy < .999 || ! WeakT ) )
    {
	ProposeLiteral(R, true, A,
		       NowTTot, LitBits, OrigTPos, OrigTTot, 
		       PosGain, WeakT);
    }

    if ( NegGain > 1E-3 &&
	 ( ! SavedClause || SavedClauseAccuracy < .999 || ! WeakF ) )
    {
	ProposeLiteral(R, false, A,
		       NowFTot, LitBits, OrigFPos, OrigFTot, 
		       NegGain, WeakF);
    }
}



	/*  Initialise variables for scan.  NOTE: this assumes that
	    Current.BaseInfo and MaxPossibleGain have been set externally.  */


void  PrepareForScan(Relation R, Var *A)
/*    --------------  */
{
    int i, j, PossibleVarComps;
    Var V, W, VP;

    /*  First time through, allocate arrays  */

    if ( Allocate )
    {
	Allocate = false;

	PossibleVarComps = MAXARGS * MAXVARS + (MAXARGS * (MAXARGS-1) / 2);
	OldVar       = Alloc(PossibleVarComps, Var);
	NewVarPosn   = Alloc(PossibleVarComps, Var);

	ConstVarPosn    = Alloc(MAXARGS+1, Var);
	DifferOnNegs    = Alloc((MAXARGS+1)*(MAXVARS+1), Boolean);
	FirstOccurrence = Alloc(MAXVARS+MAXARGS, Boolean);
	FirstBinding    = Alloc(MAXARGS+1, Const);
    }

    OrigTPos = 0;
    OrigTTot = 0;
    OrigFPos = 0;
    OrigFTot = 0;

    NowTPos = 0;
    NowTTot = 0;
    NowFPos = 0;
    NowFNeg = 0;
    NowMPos = 0;
    NowMTot = 0;

    NewTPos = 0;
    NewTTot = 0;

    NDuplicateVars = NNewVars = NConstVars = 0;

    NArgs = R->Arity;
    memset(FirstOccurrence, true, Current.MaxVar+NArgs);

    OutOfWorld = false;
    Bound = ( ! Undetermined(Current.Tuples[0]) );
    BindingVar = 0;

    ForEach(i, 1, NArgs)
    {
	V = A[i];

	if ( ! Bound && V == Target->Arity )
	{
	    Bound = true;
	    BindingVar = i;
	}

	if ( V > Current.MaxVar && FirstOccurrence[V] )
	{
	    NNewVars++;
	    FirstOccurrence[V] = false;

	    ConstVarPosn[NConstVars++] = i;

	    ForEach(W, 1, Current.MaxVar)
	    {
		if ( ! Compatible[Variable[W]->Type][R->Type[i]] ||
		     Current.Tuples[0][W] == UNBOUND ) continue;

		NewVarPosn[NDuplicateVars]   = i;
		OldVar[NDuplicateVars]       = W;
		DifferOnNegs[NDuplicateVars] = false;
		NDuplicateVars++;
	    }
	}
    }

    /*  New variables shouldn't replicate each other, either  */

    ForEach(i, 0, NConstVars-2)
    {
	VP = ConstVarPosn[i];
	V  = A[VP];

	ForEach(j, i+1, NConstVars-1)
	{
	    W = ConstVarPosn[j];

	    if ( ! Compatible[Variable[V]->Type][R->Type[W]] ) continue;

	    NewVarPosn[NDuplicateVars]   = W;
	    OldVar[NDuplicateVars]       = Current.MaxVar+VP;	/* special */
	    DifferOnNegs[NDuplicateVars] = false;
	    NDuplicateVars++;
	}
    }

    ClearFlags;

    PossibleT = true;
    PossibleF = NegatedLiteralOK =
		  ( NEGLITERALS ||
		    R == GTVAR || R == GTCONST ||
		    ( NEGEQUALS && ( R == EQVAR || R == EQCONST ) ) );

    Determinate = NNewVars > 0;

    /*  The minimum gain that would be of interest is just enough to give
	a literal a chance to be saved by the backup procedure or, if
	there are determinate literals, to reach the required fraction
	of the maximum possible gain  */

    MinUsefulGain = NPossible < MAXPOSSLIT ? MINALTFRAC * BestLitGain :
		    Max(Possible[MAXPOSSLIT]->Gain, MINALTFRAC * BestLitGain);

    if ( NDeterminate && MinUsefulGain < DETERMINATE * MaxPossibleGain )
    {
	MinUsefulGain = DETERMINATE * MaxPossibleGain;
    }

    /*  Set thresholds for pos tuples  */

    MinPos = MinUsefulGain / Current.BaseInfo - 0.001;

    /*  Now check coverage required for a saveable clause that would pass
	the MDL criterion.  Don't worry about long saveable clauses.  */

    if ( AlterSavedClause )
    {
	BestCover    = AlterSavedClause->PosCov;
	BestAccuracy = BestCover / (float) AlterSavedClause->TotCov;
    }
    else
    {
	BestCover    = SavedClauseCover;
	BestAccuracy = SavedClauseAccuracy;
    }

    if ( NLit < 5 )
    {
	MinSaveableCover = BestCover+1;
	while ( Encode(MinSaveableCover) <= NewClauseBits ) MinSaveableCover++;
    }
    else
    {
	MinSaveableCover = StartDef.NPos;
    }
}



	/*  Make a pass through the tuples, terminating if it becomes clear
	    that neither R(A) or ~R(A) can achieve the minimum useful gain.
	    Since all pos tuples appear first in the tuple sets, thresholds
	    for NewTNeg and NowFNeg can be set when the first neg tuple
	    is encountered.  */


#define  TermTest(Cond, Test)\
	    if ( Cond && Test && ! Determinate ) {\
		 Cond = false; if ( ! PossibleT && ! PossibleF ) return true; }
		

Boolean  TerminateScan(Relation R, Var *A)
/*       -------------  */
{
    Tuple	*TSP, Case;
    Boolean	BuiltIn=false, CheckMDL, CheckTerm, PosCase;
    int		i, RN, MaxCover, NCorrect, OrigPos=0;
    Const	X2;
    float	NewTNegThresh, NowFNegThresh;

    if ( Predefined(R) )
    {
	BuiltIn = true;
	RN = (int) R->Pos;
	if ( HasConst(R) )
	{
	    GetParam(&A[2], &X2);
	}
	else
	{
	    X2 = A[2];
	}
    }

    CheckMDL = CheckTerm = Bound && ! BindingVar;

    for ( TSP = Current.Tuples ; Case = *TSP++ ; )
    {
	if ( CheckMDL && ! Positive(Case) )
	{
	    /*  Encoding length checks  */

	    PossibleT &= Encode(OrigTPos) > NewClauseBits;
	    PossibleF &= Encode(OrigFPos) > NewClauseBits;

	    if ( ! PossibleT && ! PossibleF )
	    {
		Verbose(3)
		{
		    printf("  MDL prune %d,%d", OrigTPos, OrigFPos);
		}
		return true;
	    }

	    /*  Set thresholds now that NowTPos and NowFPos are known  */

	    NewTNegThresh = ( NNewVars && BestLitGain < 1E-2 ? MAXTUPLES :
			      NegThresh(NowTPos, NewTPos) );
	    NowFNegThresh = NegThresh(NowFPos, NowFPos);
	    CheckMDL = false;
	}
		
	if ( MissingValue(R, A, Case) )
	{
	    NowMTot++;
	    if ( Positive(Case) ) NowMPos++;
	    NFound = 0;
	}
	else
	if ( BuiltIn ? Satisfies(RN, A[1], X2, Case) :
	     Join(R->Pos, R->PosIndex, A, Case, NArgs, false) )
	{
	    /*  R(A) is barred if it would introduce an out-of-world constant.
		Note: can't use TermTest() since check for Determinate does
		not matter  */

	    if ( OutOfWorld )
	    {
		PossibleT = false;
		if ( ! PossibleF ) return true;
	    }
		
	    /*  Extensions of this tuple from R(A)  */

	    CheckNewVars(Case);

	    NowTTot++;
	    NewTTot += NFound;

	    TermTest(PossibleT,
		     NewTTot > MAXTUPLES);

	    /*  Is this a positive tupl