year(2013). year(2014). year(2015). year(2016). year(2017). year(2018). year(2019).
earlier(A, B) :- year(A), year(B), A @< B.
agents(Ag):-
% each agent in the list Ag of agent is represented as:
% h(Name, Level, Year, Type, Squad)
length(Ag, 5),
member(h(alice, 7, _, _, _), Ag), % 1
member(h(_, 7, _, foot, e), Ag), % 2
member(h(_, _, 2016, foot, e), Ag), % 3
member(h(alice, _, 2018, _, _), Ag), % 4
member(h(_, 16, 2013, _, _), Ag), % 5
(member(h(bob, _, 2014, _, _), Ag); member(h(bob, _, 2013, _, _), Ag)), % 6
member(h(david, _, Yd, _, _), Ag), % 7
member(h(eve, _, Ye, _, _), Ag),
member(h(clarie, _, Yc, _, _), Ag),
earlier(Yd, Ye), earlier(Ye, Yc),
member(h(_, _, 2014, bike, one), Ag), % 8
member(h(_, 12, 2015, _, _), Ag), % 9
member(h(_, 9, _, bike, three), Ag), % 10
member(h(clarie, _, 2016, _, _), Ag), % 11
member(h(A, _, _, bike, _), Ag), % 12
member(h(B, _, _, bike, _), Ag),
\+ A=B,
((member(h(A, 13, _, _, _), Ag), member(h(B, _, 2016, _, _), Ag));
(member(h(B, 13, _, _, _), Ag), member(h(A, _, 2016, _, _), Ag))),
member(h(_, 16, _, foot, a), Ag), % 13
member(h(_, _, 2015, foot, r), Ag), % 14
member(h(bob, _, _, bike, _), Ag), % 15
member(h(_, _, 2013, foot, a), Ag). % 16