Eelmises peatükis loodud ilmutamata võrrandeid lahendava predikaadi abil on lihtne modellerida Küberneetika Instituudis prohfessor Enn Tõugu juhtimisel loodud tehisintellektisüsteemi NUT.
NUT on inseneriarvutuste lihtsustamiseks. Inseneride põhitöö mingi uue toote, konstruktsiooni loomisel sarnaneb matemaatikaülesande lahendamisele: tuleb kasutatavate objektide omadusi kasutades arvutada ülesande püstituses (spetsifikatsioonis) antud suuruste abil kõik konstruktsiooni parameetrid. Selleks tuleb lähdudes antud suurustest (lähteparameetrid, mille väärtused on antud ülesande püstituses) samm-sammult otsida sobiv võrrand (protseduur, alamprogramm), mille abil saab arvutada mõne uue ülesande lahendamiseks vajaliku suuruse ja jatkata kuni kõik otsitavad suurused on arvutatud. Ülesanne on analoogiline keemiliste reaktsioonide abil mingite uute aintete sünteesimise ülesandega - olemasolevad või juba sünteesitud abiained on suurused, mille väärtus on juba teada, igal sammul tuleb leida sobiv reaktsioon/võrrand uute ainte/suuruste saamiseks ja jätkata seni, kuni on saadud kõik otsitavad ained/suurused; seega kuulub ka see ülesanne kaardil (mitmealuselisel graafil) tee otsimise ülesannete klassi.
Süsteemi töö põhineb teadmistel kasutatavate objektide omadustest; 
objektide omadusi kirjeldatakse mudelitega, mis kirjeldavad objekti parameetrite (objektis 
esinevate suuruste) vahelisi seoseid. Näiteks täisnurkse kolmnurga parameetreid: 
kaatetid A,B, hüpotenuus C, pindala S ja täisnurgast hüpotenuusile 
tõmmatud kõrguse H 
vahelisi seoseid võiks kirjeldada järgmise mudeliga: 
comp(_,_):-
     clause(stop,true),!, %lõpetusmärk alles - midagi ei õnnestnud enam arvutada 
     arvutused(A),write(A).
     comp(_,Otsitavad):-
     free_variables(Otsitavad,[]),
     !,arvutused(A1),reverse(A1,A),write(A).
comp(Mudel,Otsitavad):-
     assert(stop), % paneme (oletusena) lõpetusmärgi 
     call(Mudel),
     comp(Mudel,Otsitavad).
valem(Valem):-
  rel(Valem),!, %midagi õnnestus arvutada
     retractall(stop), %võtame peatusmärgi maha 
    retract(arvutused(A)),assert(arvutused([Valem|A])).
valem(_).
arvutamudelid(Mudelid,Otsitavad):-
    retractall(stop1),
    assert(stop1), %oletusena paneme peatumismärgendi 
    arvutamitu(Mudelid,Otsitavad,Mudelid).
arvutamitu([Mudel|Mudelid],Otsitavad,Kõik_Mudelid):-
      arvuta(Mudel,Otsitavad),nl,
      ((clause(stop,true), %mudelis õnnesus midagi arvutada!
      retractall(stop1)); %võtame peatuse maha
      true),
      arvutamitu(Mudelid,Otsitavad,Kõik_Mudelid).%järgmised mudelid 
      arvutamitu([],Otsitavad,Kõik_Mudelid):-
      not(clause(stop1,true)),!, %mingi mudeli abil õnnestus midagi arvutada
      assert(stop1), %paneme peatuse uuesti ja käivitame kõik mudelid veel kord
      arvutamitu(Kõik_Mudelid,Otsitavad,Kõik_Mudelid).
arvutamitu(_,_,_). %viimasel mudelite läbivaatusel ei õnnestunud midagi enam arvutada
Näiteks ülalesitatud täisnurkse kolmnurga kirjelduse abil kaateti A projektsiooni A1 
  leidmiseks peab seda mudelit kasutama kaks korda:
  - kogu kolmnurga ABC  ja alamkolmnurga A1,H,A  jaoks:
  A=4,C=5,arvutamudelid([kolmnurk(A,B,C,S,H),kolmnurk(H,A1,B,S1,H1)],[A1]).
    [6 = 5*2.4/2, 6 = 4*3/2, 4*4 + 3*3 = 5*5]
     [3.84 = 4*1.92/2, 3.84 = 2.4*3.2/2, 2.4*2.4 + 3.2*3.2 = 4*4]
     
  
  Punktides A,B,C on žarniirid; lõigud AB, BC on jäigad (nende pikkus ei
  muutu). Koosta mudel, mis võimaldaks arvutada punkti C x-koordinaadi punkti
  B kõrguse (y-koordinaadi) põhjal; testi näiteks andmetega AB=7, BC=5, OA=4,
  kasti K kõrgus (punkti C y-koordinaat) on 2 ja punkti B y-koordinaat - 5 (lahendamiseks
  võib kasutada  kolmnurki AA1B, BC1C ja defineerida uue objekti, mis kirjeldab
  seoseid lõikude BA1,BC1,By,AA1,C1C,Cx,Cy vahel).
  2.
Tee
    mudel kraana poolt tõstetava 
  kasti põhja kõrguse (maast) leidmiseks, kui on teada kraana torni pikkus K,
  nokkade pikkused L1,L2, trossi pikkus L,  nurgad a,b ja kasti kõrgus H; testi
  näiteks andmetega a=30, b=45 (kraadides), K=8, L1=4, L2=2, H=2 
  (meeldetuletuseks - täisnurkses kolmnurgas kaatet/hüpotenuus = vastasnurga
  siinus).
  
Läbi
  iga kolme mitte ühel sirgel asetseva punkti saab (üheselt) panna
  rigjoone; selle keskpunkt on punkte paarikaupa ühendavate lõikude
  keskristsirgete lõikepunktis;
  punktide A(Ax,Ay), B(Bbx,By), C(Cx,Cy) koordinaadid
  määravad keskpunkti
  O(Ox,Oy) koordinaadid ja ringi raadiuse R ja
  ka vastupidi, kui on (näiteks)
  teada keskpunkti koordinaadid, ringi raadius ja Ax,
  siis saab leida Ay (siin
  võib
  tulla kaks võimalikku
  väärtust) või kui on teada punktide A ja B koordinaadid,
  keskpunkt ja Cx, siis saab leida raadiuse R ja
  koordinaadi Cy. Koosta arvutusmudel, mis
  kirjeldab kõik seosed suuruste
  Ax,Ay,Bx,By,Cx,Cy,Ox,Oy,R vahel ja võimaldab ükskõik
  milliste (piisava arvu) teadmisel arvutada ülejäänud suurused;
  testi näiteks ülalesitatud
  sõltuvuste abil (ilmutamata võrrandite lahendamiseeskirju peab
  täiendama ruutjuure
  arvutamisega!).  
  ©2004
    Jaak Henno