Richard Nagy - 2011-12-06

Dear All,

I'm learning A.I. at university in Hungary and I need to give a Clips program to my teacher to let me go the oral exam. The problem is, that I'm stucked with the program, I wonder if you could please help me! I've shortened the program a bit by deleting a lot of facts to be able to post the code to here, my problem is with the last part of code ('summary' and 'minimum' named rule), what I'd like to do is to add the values of the usrpref1 -usrpref5 into usrsum then at the end write those which have got the lowest usrsum value. Thanks for you help in advance!

(deftemplate mobiladatok
(slot usrpref1 (type INTEGER) (default 0))
(slot usrpref2 (type INTEGER) (default 0))
(slot usrpref3 (type INTEGER) (default 0))
(slot usrpref4 (type INTEGER) (default 0))
(slot usrpref5 (type INTEGER) (default 0))
(slot usrsum (type INTEGER) (default 0))
(slot nev (type STRING) (default ?DERIVE))
(slot gyarto (type STRING) (default ?DERIVE))
(slot kategoria (type STRING) (default ?DERIVE))
(slot kijelzotipusa (type STRING) (default ?DERIVE))
(slot kijelzomerete (type FLOAT) (default ?DERIVE))
(slot kijelzofelbontas_szelesseg-hosszusag_ (type INTEGER) (default ?DERIVE))
(slot kijelzoszinfelbontasa (type INTEGER) (default ?DERIVE))
(slot processzorsebesseg_MHz_ (type INTEGER) (default ?DERIVE))
(slot belsomemoria_MB_ (type INTEGER) (default ?DERIVE))
(slot oprendszer (type STRING) (default ?DERIVE))
(slot max.beszelgetesiido_ora_ (type INTEGER) (default ?DERIVE))
(slot max.keszenletiido_ora_ (type INTEGER) (default ?DERIVE))
(slot ar_ftkartyfuggetlenul_ (type INTEGER) (default ?DERIVE))
(slot HSDPA (type INTEGER) (default ?DERIVE))
(slot UMTS-3G (type INTEGER) (default ?DERIVE))
(slot WLAN (type INTEGER) (default ?DERIVE))
(slot Bluetooth (type INTEGER) (default ?DERIVE))
(slot GPS (type INTEGER) (default ?DERIVE))
(slot QWERTbill (type INTEGER) (default ?DERIVE))
(slot Kamera_Mpx_ (type FLOAT) (default ?DERIVE))
(slot Vaku (type INTEGER) (default ?DERIVE))
)

(deffacts mobilok
(mobiladatok
(nev "Blackberry_Bold_9780")
(gyarto "Blackberry")
(kategoria "uzleti")
(kijelzotipusa "normal")
(kijelzofelbontas_szelesseg-hosszusag_ (* 480 360))
(kijelzoszinfelbontasa 65000)
(processzorsebesseg_MHz_ 624)
(belsomemoria_MB_ 256)
(oprendszer "BlackBerry_OS")
(max.beszelgetesiido_ora_ 6)
(max.keszenletiido_ora_ 528)
(ar_ftkartyfuggetlenul_ 99990)
(HSDPA 1)
(UMTS-3G 1)
(WLAN 1)
(Bluetooth 1)
(GPS 1)
(QWERTbill 1)
(Kamera_Mpx_ 5.0)
(Vaku 0)
)
(mobiladatok
(nev "Blackberry_Curve_9300")
(gyarto "Blackberry")
(kategoria "uzleti")
(kijelzotipusa "normal")
(kijelzofelbontas_szelesseg-hosszusag_ (* 320 240))
(kijelzoszinfelbontasa 65000)
(belsomemoria_MB_ 256)
(oprendszer "BlackBerry_OS")
(max.beszelgetesiido_ora_ 4)
(max.keszenletiido_ora_ 456)
(ar_ftkartyfuggetlenul_ 71285)
(HSDPA 1)
(UMTS-3G 1)
(WLAN 1)
(Bluetooth 1)
(GPS 1)
(QWERTbill 1)
(Kamera_Mpx_ 2.0)
(Vaku 0)
)
(mobiladatok
(nev "Blackberry_Torch_9800")
(gyarto "Blackberry")
(kategoria "uzleti")
(kijelzotipusa "erinto")
(kijelzomerete 3.2)
(kijelzofelbontas_szelesseg-hosszusag_ (* 360 480))
(processzorsebesseg_MHz_ 624)
(belsomemoria_MB_ 512)
(oprendszer "BlackBerry_OS")
(ar_ftkartyfuggetlenul_ 133035)
(HSDPA 1)
(UMTS-3G 1)
(WLAN 1)
(Bluetooth 1)
(GPS 1)
(QWERTbill 1)
(Kamera_Mpx_ 5.0)
(Vaku 0)
)
(mobiladatok
(nev "Nokia_C5-00")
(gyarto "Nokia")
(kategoria "egyszeru")
(kijelzotipusa "normal")
(kijelzofelbontas_szelesseg-hosszusag_ (* 240 320))
(kijelzoszinfelbontasa 16700000)
(belsomemoria_MB_ 50)
(oprendszer "Symbian_S60")
(max.beszelgetesiido_ora_ 12)
(max.keszenletiido_ora_ 630)
(ar_ftkartyfuggetlenul_ 40885)
(HSDPA 1)
(UMTS-3G 1)
(WLAN 0)
(Bluetooth 1)
(GPS 1)
(QWERTbill 0)
(Kamera_Mpx_ 5.0)
(Vaku 1)
)
(mobiladatok
(nev "Nokia_C2-01")
(gyarto "Nokia")
(kategoria "egyszeru")
(kijelzotipusa "normal")
(kijelzofelbontas_szelesseg-hosszusag_ (* 240 320))
(kijelzoszinfelbontasa 262000)
(belsomemoria_MB_ 46)
(oprendszer "Symbian_S40")
(max.beszelgetesiido_ora_ 8)
(max.keszenletiido_ora_ 400)
(ar_ftkartyfuggetlenul_ 19990)
(HSDPA 0)
(UMTS-3G 1)
(WLAN 0)
(Bluetooth 1)
(GPS 0)
(QWERTbill 0)
(Kamera_Mpx_ 3.2)
(Vaku 0)
)
)

(defrule kategoria1
?f <- (mobiladatok (kategoria "uzleti"))
=>
(modify ?f (kategoria "U"))
)

(defrule kategoria2
?g <- (mobiladatok (kategoria "egyszeru"))
=>
(modify ?g (kategoria "E"))
)

(defrule kategoria3
?h <- (mobiladatok (kategoria "okostelefon"))
=>
(modify ?h (kategoria "O"))
)

(defrule aratvaltas1
?f <- (mobiladatok (ar_ftkartyfuggetlenul_ ?x&:(< ?x 20000)&:(> ?x 5)))
=>
(modify ?f (ar_ftkartyfuggetlenul_ 1))
)
(defrule aratvaltas2
?g <- (mobiladatok (ar_ftkartyfuggetlenul_ ?y&:(< ?y 50000)&:(> ?y 20001)))
=>
(modify ?g (ar_ftkartyfuggetlenul_ 2))
)
(defrule aratvaltas3
?h <- (mobiladatok (ar_ftkartyfuggetlenul_ ?z&:(< ?z 100000)&:(> ?z 50001)))
=>
(modify ?h (ar_ftkartyfuggetlenul_ 3))
)
(defrule aratvaltas4
?i <- (mobiladatok (ar_ftkartyfuggetlenul_ ?zs&:(> ?zs 100001)))
=>
(modify ?i (ar_ftkartyfuggetlenul_ 4))
)

(defrule markahuseg1
?f <- (mobiladatok (gyarto "Blackberry"))
=>
(modify ?f (gyarto "B"))
)
(defrule markahuseg2
?f <- (mobiladatok (gyarto "Nokia"))
=>
(modify ?f (gyarto "N"))
)
(defrule markahuseg3
?f <- (mobiladatok (gyarto "Samsung"))
=>
(modify ?f (gyarto "S"))
)
(defrule markahuseg4
?f <- (mobiladatok (gyarto "Sony_Ericsson"))
=>
(modify ?f (gyarto "SE"))
)
(defrule markahuseg5
?f <- (mobiladatok (gyarto "HTC"))
=>
(modify ?f (gyarto "H"))
)
(defrule markahuseg6
?f <- (mobiladatok (gyarto "LG"))
=>
(modify ?f (gyarto "L"))
)
(defrule markahuseg7
?f <- (mobiladatok (gyarto "ZTE"))
=>
(modify ?f (gyarto "Z"))
)

(defrule kijelzo1
?f <- (mobiladatok (kijelzotipusa "normal"))
=>
(modify ?f (kijelzotipusa "N"))
)
(defrule kijelzo2
?f <- (mobiladatok (kijelzotipusa "erinto"))
=>
(modify ?f (kijelzotipusa "E"))
)

(defrule kijelzomeret1
?f <- (mobiladatok (kijelzomerete ?x&:(<= ?x 2.8)&:(> ?x 0)))
=>
(modify ?f (kijelzomerete 200.0))
)
(defrule kijelzomeret2
?f <- (mobiladatok (kijelzomerete ?x&:(<= ?x 3.8)&:(> ?x 2.81)))
=>
(modify ?f (kijelzomerete 300.0))
)
(defrule kijelzomeret3
?f <- (mobiladatok (kijelzomerete ?x&:(<= ?x 15.0)&:(> ?x 3.81)))
=>
(modify ?f (kijelzomerete 400.0))
)

(defrule szinmelyseg1
?f <- (mobiladatok (kijelzoszinfelbontasa ?x&:(= ?x 26000)))
=>
(modify ?f (kijelzoszinfelbontasa 1))
)
(defrule szinmelyseg2
?f <- (mobiladatok (kijelzoszinfelbontasa ?x&:(= ?x 65000)))
=>
(modify ?f (kijelzoszinfelbontasa 2))
)
(defrule szinmelyseg3
?f <- (mobiladatok (kijelzoszinfelbontasa ?x&:(= ?x 256000)))
=>
(modify ?f (kijelzoszinfelbontasa 3))
)
(defrule szinmelyseg4
?f <- (mobiladatok (kijelzoszinfelbontasa ?x&:(= ?x 262000)))
=>
(modify ?f (kijelzoszinfelbontasa 4))
)
(defrule szinmelyseg5
?f <- (mobiladatok (kijelzoszinfelbontasa ?x&:(= ?x 265000)))
=>
(modify ?f (kijelzoszinfelbontasa 5))
)
(defrule szinmelyseg6
?f <- (mobiladatok (kijelzoszinfelbontasa ?x&:(= ?x 16000000)))
=>
(modify ?f (kijelzoszinfelbontasa 6))
)
(defrule szinmelyseg7
?f <- (mobiladatok (kijelzoszinfelbontasa ?x&:(= ?x 16700000)))
=>
(modify ?f (kijelzoszinfelbontasa 7))
)

(defrule kamera1
?f <- (mobiladatok (Kamera_Mpx_ ?x&:(<= ?x 3.0)&:(> ?x 0)))
=>
(modify ?f (Kamera_Mpx_ 100.0))
)
(defrule kamera2
?f <- (mobiladatok (Kamera_Mpx_ ?x&:(<= ?x 5.0)&:(> ?x 3.01)))
=>
(modify ?f (Kamera_Mpx_ 200.0))
)
(defrule kamera3
?f <- (mobiladatok (Kamera_Mpx_ ?x&:(<= ?x 20.0)&:(> ?x 5.01)))
=>
(modify ?f (Kamera_Mpx_ 300.0))
)

(defrule adatbekeres
=>
(printout t "Milyen kategóriás mobilt szeretne? (E- egyszerű / U- üzleti / O- okostelefon / hagyja üresen, ha nem számít)" crlf)
(bind ?kat (read))
    (assert (mobiladatok(kategoria ?kat)(nev "userdata1")))

(printout t "Mennyire fontos az ártényező? (1- 1-20000 ft-ig / 2- 20000-50000 ft/ 3- 50000-100000 ft/ 4- 100000ft< / hagyja üresen, ha nem számít)" crlf)
     (bind ?ar (read))

(if (> ?ar 4)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "Mennyire fontos az ártényező? (1- 1-20000 ft-ig / 2- 20000-50000 ft/ 3- 50000-100000 ft/ 4- 100000ft< / hagyja üresen, ha nem számít)" crlf)
     (bind ?ar (read))
    (assert (mobiladatok (ar_ftkartyfuggetlenul_ ?ar)(nev "userdata2")))
else
    (assert (mobiladatok (ar_ftkartyfuggetlenul_ ?ar)(nev "userdata2")))
)

(printout t "Van –e márkahűsége? (B- Blackberry / N- Nokia / S-Samsung / SE- Sony Ericsson / H- HTC / L- LG  / Z- ZTE / hagyja üresen, ha nem számít)" crlf)
     (bind ?marka (read))
    (assert (mobiladatok(gyarto ?marka)(nev "userdata3")))

(printout t "Milyen kijelzőtípust szeretne? (N- normal / E- erinto / hagyja üresen, ha nem számít)" crlf)
     (bind ?kijtip (read))
    (assert (mobiladatok(kijelzotipusa ?kijtip)(nev "userdata4")))

(printout t "Mekkora legyen a kijelzo? (200.0 - 2,8-nal kisebb / 300.0 - 2,8-3,8 / 400.0 - 3,8-tol nagyobb / hagyja üresen, ha nem számít)" crlf)
     (bind ?kijmer (read))
(if (> ?kijmer 400.0)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "Mekkora legyen a kijelzo? (200.0 - 2,8-nal kisebb / 300.0 - 2,8-3,8 / 400.0 - 3,8-tol nagyobb / hagyja üresen, ha nem számít)" crlf)
     (bind ?kijmer (read))
    (assert (mobiladatok(kijelzomerete ?kijmer)(nev "userdata5")))
else
    (assert (mobiladatok(kijelzomerete ?kijmer)(nev "userdata5")))
)

(printout t "Mekkora legyen a kijelző felbontása? (1- kisebb mint 240*320 / 2- 240*320 - 480*360 / 3-nagy 480*360 -tól nagyobb))" crlf)
     (bind ?kijfel (read))
(if (> ?kijfel 3)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "Mekkora legyen a kijelző felbontása? (1- kisebb mint 240*320 / 2- 240*320 - 480*360 / 3-nagy 480*360 -tól nagyobb))" crlf)
     (bind ?kijfel (read))
    (assert (mobiladatok(kijelzofelbontas_szelesseg-hosszusag_ ?kijfel)(nev "userdata6")))
else
    (assert (mobiladatok(kijelzofelbontas_szelesseg-hosszusag_ ?kijfel)(nev "userdata6")))
)

(printout t "Mekkora legyen a színmélysége a kijelzőnek? (1– 26000 / 2– 65000 / 3– 256000 / 4– 262000 / 5– 265000 / 6– 16000000 / 7– 16700000 / hagyja üresen, ha nem számít)" crlf)
     (bind ?kijszin (read))
(if (> ?kijszin 7)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "Mekkora legyen a színmélysége a kijelzőnek? (1– 26000 / 2– 65000 / 3– 256000 / 4– 262000 / 5– 265000 / 6– 16000000 / 7– 16700000 / hagyja üresen, ha nem számít)" crlf)
     (bind ?kijszin (read))
    (assert (mobiladatok(kijelzoszinfelbontasa ?kijszin)(nev "userdata7")))
else
    (assert (mobiladatok(kijelzoszinfelbontasa ?kijszin)(nev "userdata7")))
)

(printout t "Milyen legyen a processzor sebessége? (1- lassabb mint 1000 MHz / 2 gyorsabb mint 1000 MHz / hagyja üresen, ha nem számít)" crlf)
     (bind ?proc (read))
(if (> ?proc 2)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "Milyen legyen a processzor sebessége? (1- lassabb mint 1000 MHz / 2 gyorsabb mint 1000 MHz / hagyja üresen, ha nem számít)" crlf)
     (bind ?proc (read))
    (assert (mobiladatok(processzorsebesseg_MHz_ ?proc)(nev "userdata8")))
else
    (assert (mobiladatok(processzorsebesseg_MHz_ ?proc)(nev "userdata8")))
)

(printout t "Belső memóriája mekkora legyen a készüléknek MB-ban? (1 - kisebb mint 100MB / 2- közepes 100-1000 / 3- nagyobb mint 1000 / hagyja üresen, ha nem számít)" crlf)
     (bind ?mem (read))
(if (> ?mem 3)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "Belső memóriája mekkora legyen a készüléknek MB-ban? (1 - kisebb mint 100MB / 2- közepes 100-1000 / 3- nagyobb mint 1000 / hagyja üresen, ha nem számít)" crlf)
     (bind ?mem (read))
    (assert (mobiladatok(belsomemoria_MB_ ?mem)(nev "userdata9")))
else
    (assert (mobiladatok(belsomemoria_MB_ ?mem)(nev "userdata9")))
)

(printout t "Milyen operációs rendszer fusson a készüléken? (A16- Android 1.6 / A21- Android 2.1 / A22- Android 2.2 / A23- Android 2.3 / B– BlackBerry_OS / L– LG oprendszer / s– Symbian 3 / SA– Symbian Anna / S40– Symbian S40 / T20– Touchwiz 2.0 / T30– Touchwiz 3.0 / WP7– Windows Phone 7 / hagyja üresen, ha nem számít)" crlf)
     (bind ?opre (read))
    (assert (mobiladatok(oprendszer ?opre)(nev "userdata10")))

(printout t "Mennyi legyen a max. beszélgetési idő? (1- kevesebb mint 5óra / 2- közepes 5-10 / 3- sok, több mint 10 / hagyja üresen, ha nem számít)" crlf)
     (bind ?mbesz (read))
(if (> ?mbesz 3)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "Mennyi legyen a max. beszélgetési idő? (1- kevesebb mint 5óra / 2- közepes 5-10 / 3- sok, több mint 10 / hagyja üresen, ha nem számít)" crlf)
     (bind ?mbesz (read))
    (assert (mobiladatok(max.beszelgetesiido_ora_ ?mbesz)(nev "userdata11")))
else
    (assert (mobiladatok(max.beszelgetesiido_ora_ ?mbesz)(nev "userdata11")))
)

(printout t "Mennyi legyen a max. készenléti idő? (1- kevesebb mint 350óra / 2- közepes 350-550 / 3- sok, több mint 550 óra / hagyja üresen, ha nem számít)" crlf)
     (bind ?mkesz (read))
(if (> ?mkesz 3)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "Mennyi legyen a max. készenléti idő? (1- kevesebb mint 350óra / 2- közepes 350-550 / 3- sok, több mint 550 óra / hagyja üresen, ha nem számít)" crlf)
     (bind ?mkesz (read))
    (assert (mobiladatok(max.keszenletiido_ora_ ?mkesz)(nev "userdata12")))
else
    (assert (mobiladatok(max.keszenletiido_ora_ ?mkesz)(nev "userdata12")))
)

(printout t "HSDPA képes legyen? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?HSDPAk (read))
(if (> ?HSDPAk 1)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "HSDPA képes legyen? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?HSDPAk (read))
    (assert (mobiladatok(HSDPA ?HSDPAk)(nev "userdata13")))
else
    (assert (mobiladatok(HSDPA ?HSDPAk)(nev "userdata13")))
)

(printout t "UMTS-3G képes legyen? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?UMTS (read))
(if (> ?UMTS 1)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "UMTS-3G képes legyen? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?UMTS (read))
    (assert (mobiladatok(UMTS-3G ?UMTS)(nev "userdata14")))
else
    (assert (mobiladatok(UMTS-3G ?UMTS)(nev "userdata14")))
)

(printout t "WLAN képes legyen? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?WLANk (read))
(if (> ?WLANk 1)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "WLAN képes legyen? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?WLANk (read))
    (assert (mobiladatok(WLAN ?WLANk)(nev "userdata15")))
else
    (assert (mobiladatok(WLAN ?WLANk)(nev "userdata15")))
)

(printout t "Bluetooth képes legyen? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?BTOOTH (read))
(if (> ?BTOOTH 1)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "Bluetooth képes legyen? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?BTOOTH (read))
    (assert (mobiladatok(Bluetooth ?BTOOTH)(nev "userdata16")))
else
    (assert (mobiladatok(Bluetooth ?BTOOTH)(nev "userdata16")))
)

(printout t "GPS képes legyen? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?GPSk (read))
(if (> ?GPSk 1)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "GPS képes legyen? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?GPSk (read))
    (assert (mobiladatok(GPS ?GPSk)(nev "userdata17")))
else
    (assert (mobiladatok(GPS ?GPSk)(nev "userdata17")))
)

(printout t "QWERTZ teljes billentyűzet legyen? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?QWERTZ (read))
(if (> ?QWERTZ 1)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "QWERTZ teljes billentyűzet legyen? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?QWERTZ (read))
    (assert (mobiladatok(QWERTbill ?QWERTZ)(nev "userdata18")))
else
    (assert (mobiladatok(QWERTbill ?QWERTZ)(nev "userdata18")))
)

(printout t "Kamera felbontása mekkora legyen? (100.0- kisebb, mint 3 Mpx / 200.0- közepes, 3-5 Mpx / 300.0- nagyobb mint 5 Mpx / hagyja üresen, ha nem számít)" crlf)
     (bind ?kam (read))
(if (> ?kam 4)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "Kamera felbontása mekkora legyen? (100.0- kisebb, mint 3 Mpx / 200.0- közepes, 3-5 Mpx / 300.0- nagyobb mint 5 Mpx / hagyja üresen, ha nem számít)" crlf)
     (bind ?kam (read))
    (assert (mobiladatok(Kamera_Mpx_ ?kam)(nev "userdata19")))
else
    (assert (mobiladatok(Kamera_Mpx_ ?kam)(nev "userdata19")))
)

(printout t "Vaku legyen a kamera mellett? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?vakuk (read))
(if (> ?vakuk 1)
then (printout t "hibás értékmegadás, kérek új adatot" crlf)
(printout t "Vaku legyen a kamera mellett? (0– nem / 1– igen / hagyja üresen, ha nem számít)" crlf)
     (bind ?vakuk (read))
    (assert (mobiladatok(Vaku ?vakuk)(nev "userdata20")))
else
    (assert (mobiladatok(Vaku ?vakuk)(nev "userdata20")))
)

)

(defrule kivalasztas1

?a <- (mobiladatok(nev "userdata1")(kategoria ?valt1))
?b <- (mobiladatok(kategoria ?valt2&~?valt1)(usrpref1 ?x&:(< ?x 1)))
=>

(modify ?b (usrpref1 (+ ?x 1)))
)

(defrule kivalasztas2

?a <- (mobiladatok(nev "userdata2")(ar_ftkartyfuggetlenul_ ?valt1))
?b <- (mobiladatok(ar_ftkartyfuggetlenul_ ?valt2&~?valt1)(usrpref2 ?x&:(< ?x 1)))
=>

(modify ?b (usrpref2 (+ ?x 1)))
)

(defrule kivalasztas3

?a <- (mobiladatok(nev "userdata3")(gyarto ?valt1))
?b <- (mobiladatok(gyarto ?valt2&~?valt1)(usrpref3 ?x&:(< ?x 1)))
=>

(modify ?b (usrpref3 (+ ?x 1)))
)

(defrule kivalasztas4

?a <- (mobiladatok(nev "userdata4")(kijelzotipusa ?valt1))
?b <- (mobiladatok(kijelzotipusa ?valt2&~?valt1)(usrpref4 ?x&:(< ?x 1)))
=>

(modify ?b (usrpref4 (+ ?x 1)))
)

(defrule kivalasztas5

?a <- (mobiladatok(nev "userdata5")(kijelzomerete ?valt1))
?b <- (mobiladatok(kijelzomerete ?valt2&~?valt1)(usrpref5 ?x&:(< ?x 1)))
=>

(modify ?b (usrpref5 (+ ?x 1)))
)

(defrule summary

?a <- (mobiladatok(usrpref1 ?a1&:(< ?a1 1))(usrpref2 ?a2&:(< ?a2 2))(usrpref3 ?a3&:(< ?a3 3))(usrpref4 ?a4&:(< ?a4 4))(usrpref5 ?a5&:(< ?a5 5))
=>

(modify ?a (usrsum (+ ?a1 ?a2 ?a3 ?a4 ?a5)))
)

(defrule minimum

?a <- (mobiladatok(min(userpref1)&:(userpref2)&:(userpref3)&:(userpref4)&:(userpref5)
=>

(send ?a)
)