% Goldbach pairs up to 1000.
% Prime numbers are input data; the rule below derives all Goldbach pairs.
prime(2).
prime(3).
prime(5).
prime(7).
prime(11).
prime(13).
prime(17).
prime(19).
prime(23).
prime(29).
prime(31).
prime(37).
prime(41).
prime(43).
prime(47).
prime(53).
prime(59).
prime(61).
prime(67).
prime(71).
prime(73).
prime(79).
prime(83).
prime(89).
prime(97).
prime(101).
prime(103).
prime(107).
prime(109).
prime(113).
prime(127).
prime(131).
prime(137).
prime(139).
prime(149).
prime(151).
prime(157).
prime(163).
prime(167).
prime(173).
prime(179).
prime(181).
prime(191).
prime(193).
prime(197).
prime(199).
prime(211).
prime(223).
prime(227).
prime(229).
prime(233).
prime(239).
prime(241).
prime(251).
prime(257).
prime(263).
prime(269).
prime(271).
prime(277).
prime(281).
prime(283).
prime(293).
prime(307).
prime(311).
prime(313).
prime(317).
prime(331).
prime(337).
prime(347).
prime(349).
prime(353).
prime(359).
prime(367).
prime(373).
prime(379).
prime(383).
prime(389).
prime(397).
prime(401).
prime(409).
prime(419).
prime(421).
prime(431).
prime(433).
prime(439).
prime(443).
prime(449).
prime(457).
prime(461).
prime(463).
prime(467).
prime(479).
prime(487).
prime(491).
prime(499).
prime(503).
prime(509).
prime(521).
prime(523).
prime(541).
prime(547).
prime(557).
prime(563).
prime(569).
prime(571).
prime(577).
prime(587).
prime(593).
prime(599).
prime(601).
prime(607).
prime(613).
prime(617).
prime(619).
prime(631).
prime(641).
prime(643).
prime(647).
prime(653).
prime(659).
prime(661).
prime(673).
prime(677).
prime(683).
prime(691).
prime(701).
prime(709).
prime(719).
prime(727).
prime(733).
prime(739).
prime(743).
prime(751).
prime(757).
prime(761).
prime(769).
prime(773).
prime(787).
prime(797).
prime(809).
prime(811).
prime(821).
prime(823).
prime(827).
prime(829).
prime(839).
prime(853).
prime(857).
prime(859).
prime(863).
prime(877).
prime(881).
prime(883).
prime(887).
prime(907).
prime(911).
prime(919).
prime(929).
prime(937).
prime(941).
prime(947).
prime(953).
prime(967).
prime(971).
prime(977).
prime(983).
prime(991).
prime(997).

even_between_4_1000(N) :- between(4, 1000, N), mod(N, 2, 0).

triple(N, isPrime, true) :-
  prime(N).

triple(N, goldbachOk, true) :-
  even_between_4_1000(N),
  div(N, 2, Half),
  prime(P),
  le(P, Half),
  sub(N, P, Q),
  prime(Q).
