1:- module(phex, []). 2
3:- multifile(pcompare/4). 4:- multifile(ptype/2). 5
6purity:pcompare(hex, hex(A), hex(B), C) :-
7 hex_map(A, B, C).
8
9purity:pcompare(hex2, hex2(A1,B1), hex2(A2,B2), C) :-
10 hex_map(A1, A2, Ch1),
11 hex2_cmp(Ch1, B1, B2, C).
12
13hex2_cmp(=, B1, B2, C) :-
14 hex_map(B1, B2, C).
15hex2_cmp(>, _, _, >).
16hex2_cmp(<, _, _, <).
17
18purity:ptype(hex(H), hex) :-
19 hex(H).
20purity:ptype(hex2(H1,H2), hex2) :-
21 hex(H1),
22 hex(H2).
23
25hex(0).
26hex(1).
27hex(2).
28hex(3).
29hex(4).
30hex(5).
31hex(6).
32hex(7).
33hex(8).
34hex(9).
35hex(a).
36hex(b).
37hex(c).
38hex(d).
39hex(e).
40hex(f).
41
43hex_map(0, 0, =).
44hex_map(0, 1, <).
45hex_map(0, 2, <).
46hex_map(0, 3, <).
47hex_map(0, 4, <).
48hex_map(0, 5, <).
49hex_map(0, 6, <).
50hex_map(0, 7, <).
51hex_map(0, 8, <).
52hex_map(0, 9, <).
53hex_map(0, a, <).
54hex_map(0, b, <).
55hex_map(0, c, <).
56hex_map(0, d, <).
57hex_map(0, e, <).
58hex_map(0, f, <).
59
61hex_map(1, 0, >).
62hex_map(1, 1, =).
63hex_map(1, 2, <).
64hex_map(1, 3, <).
65hex_map(1, 4, <).
66hex_map(1, 5, <).
67hex_map(1, 6, <).
68hex_map(1, 7, <).
69hex_map(1, 8, <).
70hex_map(1, 9, <).
71hex_map(1, a, <).
72hex_map(1, b, <).
73hex_map(1, c, <).
74hex_map(1, d, <).
75hex_map(1, e, <).
76hex_map(1, f, <).
77
79hex_map(2, 0, >).
80hex_map(2, 1, >).
81hex_map(2, 2, =).
82hex_map(2, 3, <).
83hex_map(2, 4, <).
84hex_map(2, 5, <).
85hex_map(2, 6, <).
86hex_map(2, 7, <).
87hex_map(2, 8, <).
88hex_map(2, 9, <).
89hex_map(2, a, <).
90hex_map(2, b, <).
91hex_map(2, c, <).
92hex_map(2, d, <).
93hex_map(2, e, <).
94hex_map(2, f, <).
95
97hex_map(3, 0, >).
98hex_map(3, 1, >).
99hex_map(3, 2, >).
100hex_map(3, 3, =).
101hex_map(3, 4, <).
102hex_map(3, 5, <).
103hex_map(3, 6, <).
104hex_map(3, 7, <).
105hex_map(3, 8, <).
106hex_map(3, 9, <).
107hex_map(3, a, <).
108hex_map(3, b, <).
109hex_map(3, c, <).
110hex_map(3, d, <).
111hex_map(3, e, <).
112hex_map(3, f, <).
113
115hex_map(4, 0, >).
116hex_map(4, 1, >).
117hex_map(4, 2, >).
118hex_map(4, 3, >).
119hex_map(4, 4, =).
120hex_map(4, 5, <).
121hex_map(4, 6, <).
122hex_map(4, 7, <).
123hex_map(4, 8, <).
124hex_map(4, 9, <).
125hex_map(4, a, <).
126hex_map(4, b, <).
127hex_map(4, c, <).
128hex_map(4, d, <).
129hex_map(4, e, <).
130hex_map(4, f, <).
131
133hex_map(5, 0, >).
134hex_map(5, 1, >).
135hex_map(5, 2, >).
136hex_map(5, 3, >).
137hex_map(5, 4, >).
138hex_map(5, 5, =).
139hex_map(5, 6, <).
140hex_map(5, 7, <).
141hex_map(5, 8, <).
142hex_map(5, 9, <).
143hex_map(5, a, <).
144hex_map(5, b, <).
145hex_map(5, c, <).
146hex_map(5, d, <).
147hex_map(5, e, <).
148hex_map(5, f, <).
149
151hex_map(6, 0, >).
152hex_map(6, 1, >).
153hex_map(6, 2, >).
154hex_map(6, 3, >).
155hex_map(6, 4, >).
156hex_map(6, 5, >).
157hex_map(6, 6, =).
158hex_map(6, 7, <).
159hex_map(6, 8, <).
160hex_map(6, 9, <).
161hex_map(6, a, <).
162hex_map(6, b, <).
163hex_map(6, c, <).
164hex_map(6, d, <).
165hex_map(6, e, <).
166hex_map(6, f, <).
167
169hex_map(7, 0, >).
170hex_map(7, 1, >).
171hex_map(7, 2, >).
172hex_map(7, 3, >).
173hex_map(7, 4, >).
174hex_map(7, 5, >).
175hex_map(7, 6, >).
176hex_map(7, 7, =).
177hex_map(7, 8, <).
178hex_map(7, 9, <).
179hex_map(7, a, <).
180hex_map(7, b, <).
181hex_map(7, c, <).
182hex_map(7, d, <).
183hex_map(7, e, <).
184hex_map(7, f, <).
185
187hex_map(8, 0, >).
188hex_map(8, 1, >).
189hex_map(8, 2, >).
190hex_map(8, 3, >).
191hex_map(8, 4, >).
192hex_map(8, 5, >).
193hex_map(8, 6, >).
194hex_map(8, 7, >).
195hex_map(8, 8, =).
196hex_map(8, 9, <).
197hex_map(8, a, <).
198hex_map(8, b, <).
199hex_map(8, c, <).
200hex_map(8, d, <).
201hex_map(8, e, <).
202hex_map(8, f, <).
203
205hex_map(9, 0, >).
206hex_map(9, 1, >).
207hex_map(9, 2, >).
208hex_map(9, 3, >).
209hex_map(9, 4, >).
210hex_map(9, 5, >).
211hex_map(9, 6, >).
212hex_map(9, 7, >).
213hex_map(9, 8, >).
214hex_map(9, 9, =).
215hex_map(9, a, <).
216hex_map(9, b, <).
217hex_map(9, c, <).
218hex_map(9, d, <).
219hex_map(9, e, <).
220hex_map(9, f, <).
221
223hex_map(a, 0, >).
224hex_map(a, 1, >).
225hex_map(a, 2, >).
226hex_map(a, 3, >).
227hex_map(a, 4, >).
228hex_map(a, 5, >).
229hex_map(a, 6, >).
230hex_map(a, 7, >).
231hex_map(a, 8, >).
232hex_map(a, 9, >).
233hex_map(a, a, =).
234hex_map(a, b, >).
235hex_map(a, c, <).
236hex_map(a, d, <).
237hex_map(a, e, <).
238hex_map(a, f, <).
239
241hex_map(b, 0, >).
242hex_map(b, 1, >).
243hex_map(b, 2, >).
244hex_map(b, 3, >).
245hex_map(b, 4, >).
246hex_map(b, 5, >).
247hex_map(b, 6, >).
248hex_map(b, 7, >).
249hex_map(b, 8, >).
250hex_map(b, 9, >).
251hex_map(b, a, >).
252hex_map(b, b, =).
253hex_map(b, c, <).
254hex_map(b, d, <).
255hex_map(b, e, <).
256hex_map(b, f, <).
257
259hex_map(c, 0, >).
260hex_map(c, 1, >).
261hex_map(c, 2, >).
262hex_map(c, 3, >).
263hex_map(c, 4, >).
264hex_map(c, 5, >).
265hex_map(c, 6, >).
266hex_map(c, 7, >).
267hex_map(c, 8, >).
268hex_map(c, 9, >).
269hex_map(c, a, >).
270hex_map(c, b, >).
271hex_map(c, c, =).
272hex_map(c, d, <).
273hex_map(c, e, <).
274hex_map(c, f, <).
275
277hex_map(d, 0, >).
278hex_map(d, 1, >).
279hex_map(d, 2, >).
280hex_map(d, 3, >).
281hex_map(d, 4, >).
282hex_map(d, 5, >).
283hex_map(d, 6, >).
284hex_map(d, 7, >).
285hex_map(d, 8, >).
286hex_map(d, 9, >).
287hex_map(d, a, >).
288hex_map(d, b, >).
289hex_map(d, c, >).
290hex_map(d, d, =).
291hex_map(d, e, <).
292hex_map(d, f, <).
293
295hex_map(e, 0, >).
296hex_map(e, 1, >).
297hex_map(e, 2, >).
298hex_map(e, 3, >).
299hex_map(e, 4, >).
300hex_map(e, 5, >).
301hex_map(e, 6, >).
302hex_map(e, 7, >).
303hex_map(e, 8, >).
304hex_map(e, 9, >).
305hex_map(e, a, >).
306hex_map(e, b, >).
307hex_map(e, c, >).
308hex_map(e, d, >).
309hex_map(e, e, =).
310hex_map(e, f, <).
311
313hex_map(f, 0, >).
314hex_map(f, 1, >).
315hex_map(f, 2, >).
316hex_map(f, 3, >).
317hex_map(f, 4, >).
318hex_map(f, 5, >).
319hex_map(f, 6, >).
320hex_map(f, 7, >).
321hex_map(f, 8, >).
322hex_map(f, 9, >).
323hex_map(f, a, >).
324hex_map(f, b, >).
325hex_map(f, c, >).
326hex_map(f, d, >).
327hex_map(f, e, >).
328hex_map(f, f, =)