## Universal Elimination Pattern for hard puzzles

Everything about Sudoku that doesn't fit in one of the other sections

### Re: Universal Elimination Pattern for hard puzzles

Hi champagne
champagne wrote:When you are processing millions of puzzles per day, you just don't consider any elementary process consuming more than some milli seconds.
In the last benchmark I made, the run lasted 20 hours for about 3 millions puzzles in the range serate ED 6.5 _ 9.3
In skfr, the hardest puzzles are solved in one or 2 seconds. My current code should run 3 to 4 times faster.
In addition, what we experienced is that you need 3 to 4 floors to have eliminations.
JasonLion wrote:Finding every possible chain explicitly would be slow, while implication nets can run much more quickly.
Likewise it is common to use tabling to find eliminations and then explain them as mutant fish.

I put here Jasonlion before giving another experience.
As Jasonlion, I try to have leading indicators to know where to look for logic constructions leading to eliminations.

I did not intend to enter a competion on milliseconds. Timing is always important but it was not first or second priority.
I just showed that one can solve all (known) puzzles by a sequence of steps where
1. some target is assumed
2. eliminations of max 6 baselines are applied until a contradiction occurs
3. these eliminations are restricted to max 3 planes
4. the number of eliminations is not limited
No more and no less. For that particular purpose the timing was good enough.

champagne wrote:I worked mainly on floors at that time, because I hoped it would be the place to find simpler logic (and because "fata morgana" example used a 3 floors construction.

Could you be more precise in explaining what is "simpler logic" from your point of view ?
Out of your comments I have difficulty to understand what kind of goal you are heading to.

logel

Posts: 57
Joined: 29 April 2012
Location: Germany

### Re: Cont: Universal Elimination Pattern

Hi blue
blue wrote:
logel wrote:So I put the uniqueness of the base set of an elimination pattern as a conjecture here.
The conjecture is true for all practical cases, but I have some doubts.

Here is a counterexample to your conjecture.

YES. This is a perfect counterexample. Many thanks. This point is clear now.

Having two different sets of base lines as desriptor for the same elimination is not what I would like. So the two diagrams show two different elimination instances, if the definition is founded on base lines primarily. Denis repeatedly pointed into this direction. So I will try to reformulate the definition, but currently I see no elegant way to distinguish whether or not some lines build an elimination pattern without referring to the "old" definition.
I still think that its better to define an elimination for a single target only, although the jelly fish example is commonly regarded as elimination with many targets. Also patterns without targets are no good. After clearing all targets in the jelly fish (or any other rank-0 ) there are always two sets of covering lines.
blue wrote:It's also a little interesting, since the set "valid permutations" is not the same for each case.

This is only true if you restrict the links to some "link set" or otherwise and you still can justify the target value to be false. Such restriction is not included in my definition, but I was considering minimal links also. The definition will get more complicated and the question is what kind of advantage you may get. So I simply use all possible links between core candidates and then there are 6 permutations if I count right.

logel

Posts: 57
Joined: 29 April 2012
Location: Germany

### Re: Cont: Universal Elimination Pattern

Hi logel,

logel wrote:I still think that its better to define an elimination for a single target only, although the jelly fish example is commonly regarded as elimination with many targets.

That makes sense, if you want to talk about minimal pattern instances, justifying "at least one" elimination.

This is only true if you restrict the links to some "link set" or otherwise and you still can justify the target value to be false. Such restriction is not included in my definition, but I was considering minimal links also. The definition will get more complicated and the question is what kind of advantage you may get. So I simply use all possible links between core candidates and then there are 6 permutations if I count right.

For "speed", using all possible links, may be best.
It's 4 permutations, according to XSudo, and 8 for the cases that I showed. (Not important, unless it helps you find a bug).

Regards,
Blue.
blue

Posts: 771
Joined: 11 March 2013

### Re: Universal Elimination Pattern for hard puzzles

logel wrote:I did not intend to enter a competion on milliseconds. Timing is always important but it was not first or second priority.
I just showed that one can solve all (known) puzzles by a sequence of steps where
1. some target is assumed
2. eliminations of max 6 baselines are applied until a contradiction occurs
3. these eliminations are restricted to max 3 planes
4. the number of eliminations is not limited
No more and no less. For that particular purpose the timing was good enough.

This is an interesting statement.
As said earlier, an example would clarify the discussion.
Unless I see such an example, from what I understand of your work, I have doubts that this can be true for any puzzle of the potential hardest collection.

logel wrote:
champagne wrote:I worked mainly on floors at that time, because I hoped it would be the place to find simpler logic (and because "fata morgana" example used a 3 floors construction.

Could you be more precise in explaining what is "simpler logic" from your point of view ?
Out of your comments I have difficulty to understand what kind of goal you are heading to.

The core of my research is summarized (and widely discussed) in that thread exotic patterns a resume

To make it short, all known puzzles have been solved for long using heavily "chain oriented" sets of rules.
The path for the so-called hardest puzzles is long and boring with such sets of rules.
My goal is to find (or collect) alternative processes/rules leading to much simpler solutions for such puzzles
champagne
2017 Supporter

Posts: 6792
Joined: 02 August 2007
Location: France Brittany

### Re: Cont: Universal Elimination Pattern

blue wrote:
logel wrote:I still think that its better to define an elimination for a single target only, although the jelly fish example is commonly regarded as elimination with many targets.

That makes sense, if you want to talk about minimal pattern instances, justifying "at least one" elimination.

I concur with Blue. You can choose whichever is most convenient for you; there's no logical point in making a distinction between:

Code: Select all
`P => not C1 and not C2 and not ...`

and:

Code: Select all
`P => not C1P => not C2...`
denis_berthier
2010 Supporter

Posts: 1261
Joined: 19 June 2007
Location: Paris

### Re: Cont: Universal Elimination Pattern

logel wrote:Having two different sets of base lines as desriptor for the same elimination is not what I would like. So the two diagrams show two different elimination instances, if the definition is founded on base lines primarily. Denis repeatedly pointed into this direction. So I will try to reformulate the definition, but currently I see no elegant way to distinguish whether or not some lines build an elimination pattern without referring to the "old" definition.

What's not obvious to me now, is not how not to refer to the old definition, but how it will be different from Allan's.
denis_berthier
2010 Supporter

Posts: 1261
Joined: 19 June 2007
Location: Paris

### Re: Universal Elimination Pattern for hard puzzles

champagne wrote:
logel wrote:I just showed that one can solve all (known) puzzles by a sequence of steps where
1. some target is assumed
2. eliminations of max 6 baselines are applied until a contradiction occurs
3. these eliminations are restricted to max 3 planes
4. the number of eliminations is not limited

from what I understand of your work, I have doubts that this can be true for any puzzle of the potential hardest collection.

The formulation of logel's result was clearer in the "pattern-based-classification-of-hard-puzzles" thread.
I can't say I have no doubts about his results, but they don't look so extravagant either.

What he says is that any puzzle P can be solved with T&E(X6), where X6 is the set of all "elimination patterns" using at most 6 "planes".
It doesn't mean that any elimination in P uses only 6 "planes".
It means that, within each elimination step for P, i.e. for any invocation of T&E(X6) for some candidate, every step in this invocation will use at most 6 "planes" (but not necessarily the same 6 for all the steps).
denis_berthier
2010 Supporter

Posts: 1261
Joined: 19 June 2007
Location: Paris

### Re: Universal Elimination Pattern for hard puzzles

denis_berthier wrote:
champagne wrote:
logel wrote:I just showed that one can solve all (known) puzzles by a sequence of steps where
1. some target is assumed
2. eliminations of max 6 baselines are applied until a contradiction occurs
3. these eliminations are restricted to max 3 planes
4. the number of eliminations is not limited

from what I understand of your work, I have doubts that this can be true for any puzzle of the potential hardest collection.

The formulation of logel's result was clearer in the "pattern-based-classification-of-hard-puzzles" thread.
I can't say I have no doubts about his results, but they don't look so extravagant either.

What he says is that any puzzle P can be solved with T&E(X6), where X6 is the set of all "elimination patterns" using at most 6 "planes".
It doesn't mean that any elimination in P uses only 6 "planes".
It means that, within each elimination step for P, i.e. for any invocation of T&E(X6) for some candidate, every step in this invocation will use at most 6 "planes" (but not necessarily the same 6 for all the steps).

I am more and more confused. Logel write max 3 planes and I read now at most 6 "planes".

I'll try to clarify when an example will be produced. Generally it helps.
champagne
2017 Supporter

Posts: 6792
Joined: 02 August 2007
Location: France Brittany

### Re: Universal Elimination Pattern for hard puzzles

champagne wrote:I am more and more confused. Logel write max 3 planes and I read now at most 6 "planes".

I was referring to this post: http://forum.enjoysudoku.com/pattern-based-classification-of-hard-puzzles-t30493-53.html

I hadn't noticed his new mention of max 3 planes.
Between the old "max 6 planes" and the new "max 6 baselines and max 3 planes", I'm now as confused as you.
denis_berthier
2010 Supporter

Posts: 1261
Joined: 19 June 2007
Location: Paris

### Re: set vs sequence

denis_berthier wrote:You should consider that we're now all waiting for a complete example. What's the output of your solver ?

I now have some time for a more detailed explanation as I see that any brief statement creates more confusion.
I will discuss a medium complex example first and then add some lengthy in another post. A braid example you gave in another post seem to be a good starting point before showing anything more complex.
As basic elimations (singles,pairs,box-line and some triples) are implemented directly, the first example has no steps derived from planes. But of course triples can be reduced from planes if you want to do that.
This is the puzzle:
Code: Select all
`98.7.....7.6...8...54......6..8..3......9..2......4..1.3.6..7......5..9......1..4 # 7658;GP;H1521`

and this is the braid elimination justifying 5r9c8 false:
denis_berthier wrote:... one has the following S2-braid[14]:

S2-braid[14]: b9n3{r9c8 r8c9} - b9n6{r8c9 r789c7} - b9n8{r8c9 r7c789} - {n8r7c5 NP: b8{r7c5 r8c4}{n2 n4}} - r7c6{n2 n9} - r9c4{n9 n3} - {n3r5c4 HP: b5{r5c6 r6c5}{n3 n6}} - b5n7{r5c6 r4c456} - r4c8{n7 n4} - r5c7{n4 n5} - r4c9{n5 n9} - r6c7{n9 .} ==> r9c8 <> 5
with NP = Naked Pairs, HP = Hidden Pairs

The output of my solver for the same candidate elimination (cleaned from most of the junk) reads:
Code: Select all
`SUDOKU 98.7.....7.6...8...54......6..8..3......9..2......4..1.3.6..7......5..9......1..4 ...START P2_1 @ 5r9c8 IX=229 ##### +A APPLY P2_1: S_5r9c8 E={518,528,548,568,578,579,591,593,597,398,698,898} APPLY P2_1: S_3r8c9 B1=[3b9] T={319,329,339,384,386,289,689,889} C={389} D={398} APPLY P2_1: T_N6C7B9 B1=[6b9] T={617,637,657,667} C={687,697} D={689,698} APPLY P2_1: T_N8R7B9 B1=[8b9] T={871,873,875,876} C={878,879} D={889,898} APPLY P2_1: S2_B6X68_N68B6 B2=[6b6|8b6] T={559,759,768} C={659,859,668,868} D={657,667} APPLY P2_1: S2_B8X24_N24B8 B2=[r7c5|r8c4] T={276,286,294,295} C={275,475,284,484} D={875,384} APPLY P2_1: S2_B8X68_N78B8 B2=[7b8|8b8] T={395} C={786,886,795,895} D={875,876} APPLY P2_1: T_N7R4B6 B1=[7b6] T={742,743,745,746} C={748,749} D={759,768} APPLY P2_1: S_9r7c6 B1=[r7c6] T={926,936,973,994} C={976} D={276,876} APPLY P2_1: S_3r9c4 B1=[3b8] T={324,334,354,364} C={394} D={384,386,395} APPLY P2_1: S2_B5X68_N67B5 B2=[6b5|7b5] T={356,265,365} C={656,756,665,765} D={745,746} EMPTY P2_1: CONTRA B1=[3b5] D={354,356,364,365} REDUCTION REDUCE: S_5r9c8 B0 T={398,698,898} C={598} D={} REDUCE: S_3r8c9 B1=[3b9] T={384,386,689,889} C={389} D={398} REDUCE: T_N6C7B9 B1=[6b9] T={657,667} C={687,697} D={689,698} REDUCE: T_N8R7B9 B1=[8b9] T={875,876} C={878,879} D={889,898} REDUCE: S2_B6X68_N68B6 B2=[6b6|8b6] T={759,768} C={659,859,668,868} D={657,667} REDUCE: S2_B8X68_N78B8 B2=[7b8|8b8] T={395} C={786,886,795,895} D={875,876} REDUCE: T_N7R4B6 B1=[7b6] T={745,746} C={748,749} D={759,768} REDUCE: S_3r9c4 B1=[3b8] T={354,364} C={394} D={384,386,395} REDUCE: S2_B5X68_N67B5 B2=[6b5|7b5] T={356,365} C={656,756,665,765} D={745,746} REDUCE: CONTRA B1=[3b5] T={} C={354,356,364,365} D={354,356,364,365} RESULT: B12=[3b5|3b8|3b9|6b5|6b6|6b9|7b5|7b6|7b8|8b6|8b8|8b9] `

Syntactical explanations:
nrc with n,r,c numbers 1..9 denotes number/row/column coordinates of candidates
nXm denotes lines, where n is number, X is r,c or b for row/column/box, and m is the line index
rXcY denotes cell lines, where X is row index, Y column index
There are two blocks of steps. The first block contains the raw contradiction sequence and the second the reduced elimination.
Each step has (mostly)
a name for better reading. ( S_ for singles, T_ for BI, S2_ for pairs ) You can ignore the details.
a list of base lines BX=[lines], X = number of base lines of the step
a list of target candidates T={,,,}
a list of core candidates C={,,,}
a list of dependencies D={,,,}
There is little to explain about the first block. After assuming 5r9c8 = true you apply basic eliminations until you find a contradiction. I also use the term level-one elimination for the steps and direct elimination for the result applied to the puzzle. Another interpretation is T&E(1) with basic eliminations. You can also say that it proves a puzzle with an extra given at 5r9c8 has no solution. The sequence of steps until contradiction is not unique and depends on the choice and order of applied level-one eliminations. The question of "right" can only be answered in relation to secondary solving goals (minimal size or complexity) otherwise one is as good as the other.
Although I defined eliminations generally with one target only, the steps usually show more than one. This is meant as more compact presentation of eliminations with the same dependencies. The dependency list of an elimination contains all candidates that are necessary to enable the elimination. The dependencies are calculated from the base lines and the puzzle state at the beginning of the sequence. This is very near to the almosting idea you presented elsewhere. The number of candidates that do "almosting" is not limited.
There is a major difference between level-one eliminations and direct eliminations. Direct ones have an absolute value by clearing the state of a candidate finally. Besides that they additionally reduce the dependency set of many potential eliminations. But level-one eliminations that trigger no subsequent elimination are completely useless. The second block of steps contains the remaining level-one eliminations after all useless ones are deleted. This is done by backtracking the dependencies of the contradiction line down to the assumption. The value of eliminations is only visible in retrospect. The reduced sequence has less steps and less eliminations in some steps compared to the first block. The dependencies remain the same. The size of the result is 12, if you take the number of baselines as metric.
The path assumption => contradiction means the same as the term inverted logic used before and created questions. If someone does not like inverted logic, the paths are also readable backwards starting from the contradiction with exactly the same result.
Now some comments about the final result determined by all base lines occurring in reduced level-one eliminations.
None of the candidates can be omitted without breaking the logic, as it implies to omit the base line the candidate belongs to (see my initial post). So the result is minimal in the sense of the universal definition. Unfortunately the above reduction does not guarantee that the result fits to the last condition of the universal definition.
(4) there exists no subset of the defining candidate set that is a separate universal elimination pattern ( no cascading )
This needs an additional check and is true in the example. The problem of compliance to (4) gets nasty with larger eliminations and is named "cannibal effect" also. An elimination should not delete targets that make up the defining structure.

More interesting aspects come from comparison with the S2-braid[14] alternative. My example should be a S2-braid[12] but I did not try to write it with your notation. Its not claim that I can find always eliminations with less baselines because I have a smarter strategy. But in this case its smaller and is a fine example where "simplest first" does not work as expected. If you prefer S+BI always before applying any pair you get exactly the S2-braid[14]. My example has three pairs instead of two but the lesser size is compensated by more links between candidates. My feeling is that by just counting the base lines some parts of complexity are ignored, but using alternative size function is another project.

This manually drawn graph of the example illustrates some more important things.

The graphics of xsudo are great for relatively small situations and improved my understanding. But for larger eliminations the mapping into the sudoku tableau gets confusing and I like more such abstract graphs. Would be great to create them by program.
Although you emphasized order many times, I can see little inherent chain-like order in this graph if order is meant as strict order. I am with you, if we exchange order with structure determined by the dependencies. But there are other inherent properties that are useful. Each link has a definite minimal distance from the target, where the distance is counted by links to go.
More important are candidate subsets I call permutation rings. Such rings start from the target and return to the target following links that alternate between links inside baselines (blue color) and links between base lines (black color). Any base line should not used more than once. The number of links in such rings is always odd and each ring holds a partial permutation of candidate values. This is maybe another and better idea to define universal eliminations. It avoids also the permutation complications that blue mentioned in the comment about base line uniqueness. But this needs more careful considerations about possible pitfalls.
The picture shows two 5-rings near the target and the maximal ring size is 23. There is no ring passing through all base lines.
I use these permutation rings when reducing eliminations from planes. A set of rings that cover all base lines makes an elimination. Working with planes has two advantages. First the target is already assured by the permutation check, so odd rings must exist. Secondly planes or pairs of them are restricted areas small enough for a complete search. I did not implement this by now, but cut short the search if a size limit is reached.

I hope these explanations clear some of the fog. Next post tomorrow with an elimination example using plane sets and a full solution.

logel

Posts: 57
Joined: 29 April 2012
Location: Germany

### Re: Universal Elimination Pattern for hard puzzles

denis_berthier wrote:The formulation of logel's result was clearer in the "pattern-based-classification-of-hard-puzzles" thread.
I can't say I have no doubts about his results, but they don't look so extravagant either.

What he says is that any puzzle P can be solved with T&E(X6), where X6 is the set of all "elimination patterns" using at most 6 "planes".
It doesn't mean that any elimination in P uses only 6 "planes".
It means that, within each elimination step for P, i.e. for any invocation of T&E(X6) for some candidate, every step in this invocation will use at most 6 "planes" (but not necessarily the same 6 for all the steps).

No, no, I never talked of 6 planes, but of maximum 3, and this only with a few hundred very hard cases.
When using the expression T&E(X6), X6 contains only eliminations with at most 6 base lines. It does not mean that I construct all possible base line eliminations of size 6, but I can find enough of them by investigating up to three planes.

Extravagant? No.

logel

Posts: 57
Joined: 29 April 2012
Location: Germany

### Re: Universal Elimination Pattern for hard puzzles

logel wrote:
denis_berthier wrote:The formulation of logel's result was clearer in the "pattern-based-classification-of-hard-puzzles" thread.
I can't say I have no doubts about his results, but they don't look so extravagant either.

What he says is that any puzzle P can be solved with T&E(X6), where X6 is the set of all "elimination patterns" using at most 6 "planes".
It doesn't mean that any elimination in P uses only 6 "planes".
It means that, within each elimination step for P, i.e. for any invocation of T&E(X6) for some candidate, every step in this invocation will use at most 6 "planes" (but not necessarily the same 6 for all the steps).

No, no, I never talked of 6 planes, but of maximum 3, and this only with a few hundred very hard cases.
When using the expression T&E(X6), X6 contains only eliminations with at most 6 base lines. It does not mean that I construct all possible base line eliminations of size 6, but I can find enough of them by investigating up to three planes.

OK, so is the following correct (or can you correct/complete it ?):

Any puzzle P can be solved with T&E(X6,3), where X6,3 is the set of all "elimination patterns" using at most 6 "base lines" and at most 3 "planes".
It doesn't mean that any elimination in P uses only 6 "base lines" and only 3 "planes".
It means that, within each elimination step for P, i.e. for any invocation of T&E(X6,3) for some candidate, every step in this invocation will use at most 6 "base lines" and 3 "planes" (but not necessarily the same 6 and 3 for all the steps).
denis_berthier
2010 Supporter

Posts: 1261
Joined: 19 June 2007
Location: Paris

### Re: set vs sequence

logel wrote:The output of my solver for the same candidate elimination (cleaned from most of the junk) reads:
SUDOKU 98.7.....7.6...8...54......6..8..3......9..2......4..1.3.6..7......5..9......1..4
...
START P2_1 @ 5r9c8 IX=229 ##### +A ....

there is a lot of work to decipher that post;

Just to have a known reference (I am not familiar at all with Denis's notations), I had a look at the skfr path, in the mood of the very old Sudoku Explainer process

The elimination comes in that way

Code: Select all
`9     8     123    |7      12346 2356  |12456 13456 2356  7     12    6      |123459 1234  2359  |8     1345  2359  123   5     4      |1239   12368 23689 |1269  1367  23679 ---------------------------------------------------------6     12479 12579  |8      127   257   |3     457   579   13458 147   13578  |135    9     3567  |456   2     5678  2358  279   235789 |235    2367  4     |569   5678  1     ---------------------------------------------------------12458 3     12589  |6      248   289   |7     158   258   1248  12467 1278   |234    5     2378  |126   9     2368  258   2679  25789  |239    2378  1     |256   3568  4     chain plus killing  5r9c8 computed length = 23chain 1   5r9c8 ~6r9c8 ~3r9c8 3r8c9 ~6r8c9 ~6r56c7  pointing   ~7r5c9, ~7r6c8 HP  68 r5c9,r6c8    ~7r4c56 pointing   ~3r5c6, ~3r6c5 HP  67 r5c6,r6c5   ~3r9c4 pointing chain 2   5r9c8 ~38r9c8 3r8c9 ~8r8c9 ~8r7c56 pointing  ~3r9c5 HP 78 r8c6,r9c5   3r9c4  `

I guess the three ways are turning around the same contradictions.

This is rated 9.5 in skfr, and the full path is rated 10.6.
BTW the current pattern game generates hundreds of puzzles with similar ratings.

I'll come later with questions about the quoted post but as a first impression from the diagram, this is a relatively complex net and it could be difficult to locate the "base lines" and the "planes"

EDIT I tried a XSUDO logic for that elimination and got the following corresponding rank 0

Code: Select all
`  12 Truths = {3B589 6B569 7B568 8B689}     12 Links = {7r4 8r7 3c4 6c7 69n5 58n6 69n8 58n9}     16 Eliminations --> r4c23<>7, r5c69<>5, r7c13<>8, r8c69<>2, r23c4<>3, r69c5<>2, r13c7<>6,      r69c8<>5,      `

EDIT 2

I continued checks on that puzzle.
That lot of eliminations does not affect the hardest step in SUDOKU EXPLAINER (it comes just after)
Other rank 0 logic can be built with the same lot of eliminations as that one

20 Truths = {1R47 1C47 2R47 2C47 4R47 4C47 5R47 5C47 9R47 9C47 }
20 Links = {1b59 2b589 4b68 5b569 9b68 1n7 2n4 3n47 4n23 7n13 }
champagne
2017 Supporter

Posts: 6792
Joined: 02 August 2007
Location: France Brittany

### Re: Universal Elimination Pattern for hard puzzles

logel wrote:eliminations of max 6 baselines are applied until a contradiction occurs
these eliminations are restricted to max 3 planes

I still don't know, what you are counting here.
E.g. if - after trying (placing) the target candidate - there is an ALS xz elimination with an almost triple and an almost quad. How many "baselines" does that count ? Or a 6 cell bivalue chain ?
And "max 3 planes" means what ? Why does the example only need max. 3 planes, and what would be an example of 4 planes ?
eleven

Posts: 1999
Joined: 10 February 2008

### Re: Universal Elimination Pattern for hard puzzles

Hi logel,

After re-reading our old discussion in the other thread, I think I better understand the "max 3 planes, max 6 base-lines".

Within each call to T&E(X6,3), each (local) elimination is based on a pattern that can only involve 6 CSP-variables/2D-cells/base-lines p1q1, ..., p6q6 where:
1) each pi and qi are a digit, a row, a column or a block (so that piqi is some rc, rn, cn or bn 2D-cell)
2) and there are 3 planes, i.e. 3 objects o1, o2, o3 of type digit, row, column or block such that each of p1q1, ..., p6q6 has its pi or qi equal to one of o1, o2, o3.

Can you confirm?
If this is wrong, then I've completely misunderstood your approach.

What's still totally unclear - and this is essential for evaluating the strength of your result - is:
Within a fixed call to T&E, the p1q1, ..., p6q6 can of course be different for each (local) elimination. But can the o1, o2, o3 be different or are they a constant of each T&E call?
denis_berthier
2010 Supporter

Posts: 1261
Joined: 19 June 2007
Location: Paris

PreviousNext