<div dir="ltr"><font face="arial, sans-serif">> <span style="color:rgb(0,0,0);white-space:pre-wrap">I'm now working on the instance sequencing routines, to ignore those</span></font><div><span style="color:rgb(0,0,0);white-space:pre-wrap"><font face="arial, sans-serif">> divergent Dependent positions when deciding overlap ordering.</font></span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap"><font face="arial, sans-serif"><br></font></span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap"><font face="arial, sans-serif">Ok. Done. So this works:</font></span></div><div><span style="color:rgb(0,0,0);white-space:pre-wrap"><font face="arial, sans-serif"><br></font></span></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><font face="arial, sans-serif">><i> class     TypeEq a b e  | a b -> e
</i>><i> instance TypeEq a a TTrue
</i>><i> instance TypeEq a b TFalse</i></font></pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><font face="arial, sans-serif"><br></font></pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><font face="arial, sans-serif">In case of multiple FunDeps for an instance, improvement must use all FunDeps for a given instance, but not go on to improve from a less specific instance -- if one of the FunDeps is Full.</font></pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><font face="arial, sans-serif"><br></font></pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><font face="arial, sans-serif">Note a Full FunDep needn't actually deliver any improvement (change of types) for this 'don't go on' to apply -- it's sufficient if some other improvement has already got the Wanted to match the instance. (In effect this is selecting the instance -- although Hugs doesn't 'officially' do so until a later step.)</font></pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><font face="arial, sans-serif"><br></font></pre><pre style="white-space:pre-wrap;color:rgb(0,0,0)"><font face="arial, sans-serif">Getting the preference sequence of instances was tricky -- especially in case of multiple FunDeps: in comparing two instance heads, they might be apart going by some FunDeps, but overlapping going by others.</font></pre></div></div>