/*
   ?- s([registration_grade(r0,X)],P).




student_ranking(s0,X).
s([student_ranking(s0,h)],P).
P = 0,6646250000000005 ?
s([student_ranking(s0,l)],P).
P = 0,33537499999999987 
ok, checked with s.pl
*/



registration_course(Key, CKey) :-
	registration(Key, CKey, _).

registration_student(Key, SKey) :-
	registration(Key, _, SKey).

registration_grade(Key, 4): 0.2;
     registration_grade(Key, 1): 0.8 :-
    registration(Key, CKey, SKey) ,
    course_difficulty(CKey, h).


registration_grade(Key, 4): 0.85;
     registration_grade(Key, 1): 0.15 :-
    registration(Key, CKey, SKey) ,
    course_difficulty(CKey, l).


course_difficulty(Cou, h) :0.5 ;  course_difficulty(Cou, l) : 0.5.


student_ranking(Stu, h):0.2; student_ranking(Stu, l):0.8:-
	bagof(Grade, CKey^(registration_student(CKey,Stu),
			 registration_grade(CKey, Grade)), Grades),
	average(Grades, Av),Av<2.

student_ranking(Stu, h):0.8; student_ranking(Stu, l):0.2:-
	bagof(Grade, CKey^(registration_student(CKey,Stu),
			 registration_grade(CKey, Grade)), Grades),
	average(Grades, Av),Av>=2.




registration(r0,c16,s0).
registration(r1,c10,s0).