private String builtInToString() {
	String result = "";

	if (modName.atom.equals("TRUTH-VALUE")) {
	    result += "dth TRUTH-VALUE is\n"; 
	    result += "   sort Bool .\n";
	    result += "   op true : -> Bool  .\n";
	    result += "   op false : -> Bool .\n";
	    result += "end\n";

	} else if (modName.atom.equals("TRUTH")) {

	    result += "dth TRUTH is\n";
	    result += "   protecting TRUTH-VALUE .\n";
	    result += "   sort Universal .\n";
	    result += "   subsorts Bool < Universal\n";
	    result += "   vars X Y : Universal .\n";
	    result += "   var B : Bool .\n";
	    result += "   ops true false : -> Bool .\n";
	    result += "   op _ == _ : Universal Universal -> Bool .\n";
	    result += "   op _ =/= _ : Universal Universal -> Bool .\n";
	    result += "   op if _ then _ else _ fi : Bool Universal Universal -> Universal .\n";
	    result += "   eq X == X = true .\n";
	    result += "   eq if true then X else Y fi = X .\n";
	    result += "   eq if false then X else Y fi = Y .\n";
	    result += "   eq if B then X else X fi = X .\n";
	    result += "end\n";

	} else if (modName.atom.equals("IDENTICAL")) {

	    result += "th IDENTICAL is\n";
	    result += "   protecting TRUTH .\n";
	    result += "   op _===_ : Universal Universal -> Bool . \n";
	    result += "   op _=/==_ : Universal Universal -> Bool . \n";
	    result += "end\n";
 
	} else if (modName.atom.equals("BOOL")) {

	    result += "dth BOOL is\n";
	    result += "   protecting TRUTH .\n";
	    result += "   op _ and _ : Bool Bool -> Bool [assoc comm prec 20] .\n";
	    result += "   op _ or _ : Bool Bool -> Bool [assoc comm prec 30] .\n";
	    result += "   op _ xor _ : Bool Bool -> Bool [assoc comm ] .\n";
	    result += "   op _ implies _ : Bool Bool -> Bool  .\n";
	    result += "   op not _ : Bool -> Bool [prec 10] .\n";
	    result += "   eq not true = false .\n";
	    result += "   eq not false = true .\n";
	    result += "   eq true and B = B .\n";
	    result += "   eq false and B = false .\n";
	    result += "   eq true or B = true .\n";
	    result += "   eq false or B = B .\n";
	    result += "   eq B1 implies B2 = (not B1) or B2 .\n";
	    result += "end\n";

	} else if (modName.atom.equals("QID")) {

	    result += "dth QID is\n";
	    result += "   protecting BOOL .\n";
	    result += "   sort Id .\n";
	    result += "end\n";

	} else if (modName.atom.equals("NZNAT")) {

	} else if (modName.atom.equals("NAT")) {

	    result += "dth NAT is\n";
	    result += "   protecting BOOL .\n";
	    result += "   sorts Nat Zero NzNat .\n";
	    result += "   subsorts NzNat Zero < Nat\n";
	    result += "   vars N M : Nat .\n";
	    result += "   op _ + _ : NzNat NzNat -> NzNat [assoc comm ] .\n";
	    result += "   op s _ : NzNat -> NzNat [prec 15] .\n";
	    result += "   op 0 : -> Zero [prec 0] .\n";
	    result += "   op s _ : Nat -> NzNat [prec 15] .\n";
	    result += "   op p _ : NzNat -> Nat [prec 15] .\n";
	    result += "   op _ > _ : Nat Nat -> Bool [prec 41] .\n";
	    result += "   op _ < _ : Nat Nat -> Bool [prec 41] .\n";
	    result += "   op _ <= _ : Nat Nat -> Bool [prec 41] .\n";
	    result += "   op _ >= _ : Nat Nat -> Bool [prec 41] .\n";
	    result += "   op _ + _ : Nat Nat -> Nat [assoc comm ] .\n";
	    result += "   op _ * _ : Nat Nat -> Nat [assoc comm prec 30] .\n";
	    result += "   op _ div _ : Nat Nat -> Bool [prec 30] .\n";
	    result += "   op eq : Nat Nat -> Bool [prec 0] .\n";
	    result += "   eq 0 > N = false .\n";
	    result += "   eq (s N) > 0 = true .\n";
	    result += "   eq (s N) > (s M) = N > M .\n";
	    result += "   eq eq(N , N) = true .\n";
	    result += "   eq eq(0 , s N) = false .\n";
	    result += "   eq eq(s N , 0) = false .\n";
	    result += "   eq eq(s N , s M) = eq(N , M) .\n";
	    result += "   cq eq(N , M) = false if (N < M) or (M < N) .\n";
	    result += "   eq M < 0 = false .\n";
	    result += "   eq 0 < (s N) = true .\n";
	    result += "   eq (s N) < (s M) = N < M .\n";
	    result += "   eq (s M) <= N = M < N .\n";
	    result += "   eq N <= M = eq(N , M) or (N < M) .\n";
	    result += "   eq (s M) > 0 = true .\n";
	    result += "   eq N >= 0 = true .\n";
	    result += "   eq (s N) >= (s M) = N >= M .\n";
	    result += "   eq 0 >= (s N) = false .\n";
	    result += "   eq N >= N = true .\n";
	    result += "end\n";

	} else if (modName.atom.equals("INT")) {

	    result += "dth INT is\n";
	    result += "   protecting NAT .\n";
	    result += "   sort Int NzInt Nat Zero NzNat .\n";
	    result += "   subsorts Nat NzNat Zero NzInt < Int\n";
	    result += "   subsorts NzNat Zero < Nat\n";
	    result += "   subsorts NzNat < NzInt\n";
	    result += "   vars I J K : Int .\n";
	    result += "   op - _ : Int -> Int [prec 20] .\n";
	    result += "   op s _ : Int -> Int [prec 15] .\n";
	    result += "   op p _ : Int -> Int [prec 20] .\n";
	    result += "   op - _ : NzInt -> NzInt [prec 20] .\n";
	    result += "   op _ + _ : Int Int -> Int [assoc comm prec 40] .\n";
	    result += "   op _ - _ : Int Int -> Int [assoc prec 20] .\n";
	    result += "   op _ * _ : Int Int -> Int [assoc prec 30] .\n";
	    result += "   op _ < _ : Int Int -> Bool .\n";
	    result += "   op _ <= _ : Int Int -> Bool .\n";
	    result += "   op _ > _ : Int Int -> Bool .\n";
	    result += "   op _ >= _ : Int Int -> Bool .\n";
	    result += "   op _ quo _ : Int Int -> Int .\n";
	    result += "   op _ rem _ : Int Int -> Int .\n";
	    result += "   op _ divides _ : Int Int -> Int .\n";
	    result += "   eq s (p I) = I .\n";
	    result += "   eq p (s I) = I .\n";
	    result += "   eq I + 0 = I .\n";
	    result += "   eq I + (s J) = s (I + J) .\n";
	    result += "   eq I + (p J) = p (I + J) .\n";
	    result += "   eq I * 0 = 0 .\n";
	    result += "   eq I * (s J) = (I * J) + I .\n";
	    result += "   eq I * (p J) = (I * J) - I .\n";
	    result += "   eq I * (J + K) = (I * J) + (I * K) .\n";
	    result += "   eq - (- I) = I .\n";
	    result += "   eq - (s I) = p (- I) .\n";
	    result += "   eq - (p I) = s (- I) .\n";
	    result += "   eq I - J = I + (- J) .\n";
	    result += "   eq I + (- I) = 0 .\n";
	    result += "   eq - (I + J) = (- I) - J .\n";
	    result += "   eq I * (- J) = - (I * J) .\n";
	    result += "end\n";
	    
	} else if (modName.atom.equals("FLOAT")) {

	    result += "dth FLOAT is \n";
	    result += "   sort Float .\n";
	    result += "   op not _ : Bool -> Bool  [ prec 10 ]  .\n";
	    result += "   op _ + _ : Float Float -> Float "+
		      " [ assoc comm prec 40 ]  .\n";
	    result += "   op _ - _ : Float Float -> Float "+
		      " [ assoc prec 40 ]  .\n";
	    result += "   op _ * _ : Float Float -> Float "+
		      " [ assoc prec 30 ]  .\n";
	    result += "   op _ / _ : Float Float -> Float  "+
		      "[ assoc prec 30 ]  .\n";
	    result += "   op _ < _ : Float Float -> Bool .\n";
	    result += "   op _ <= _ : Float Float -> Bool .\n";
	    result += "   op _ > _ : Float Float -> Bool .\n";
	    result += "   op _ >= _ : Float Float -> Bool .\n";
	    result += "   op exp : Float -> Float .\n";
	    result += "   op log : Float -> Float .\n";
	    result += "   op sqrt : Float -> Float .\n";
	    result += "   op abs : Float -> Float .\n";
	    result += "   op sin : Float -> Float .\n";
	    result += "   op cos : Float -> Float .\n";
	    result += "   op atan : Float -> Float .\n";
	    result += "   op pi : -> Float .\n";
	    result += "   op - _ : Float -> Float  [ prec 20 ]  .\n";
	    result += "end\n";
		    
	} else {
            System.out.println("BOBJ system error");
	    System.exit(0);
	}

	return result;
    }