% 商品データ
product(item1, 3000, 4.8, 20).
product(item2, 1800, 4.2, 200).
product(item3, 5000, 4.9, 5).
product(item4, 2500, 4.5, 80).

% おすすめの定義
recommended(Item) :-
    product(Item, _, Rating, Reviews),
    (Rating >= 4.5, Reviews >= 50 ; Rating >= 4.8).

% メインの処理（おすすめを表示する）
main :-
    write('--- おすすめ商品リスト ---'), nl,
    recommended(Item),
    product(Item, Price, Rating, Reviews),
    format('商品名: ~w (価格: ~w円, 評価: ~w, レビュー数: ~w件)~n', [Item, Price, Rating, Reviews]),
    fail.
main :-
    nl, write('--- 以上がおすすめ商品です ---'), nl.

% プログラムの開始地点
:- initialization(main).