[x] Clean up code for synthetic terms, I'm thinking that all terms could be put in the same TiVec with synthetic terms wrapped in a transparent Synth<T>(T) which provides e.g. a function fn child_ids(&Synth<Term>) -> &[Synth<TermIdx>] and the parser can index fn index(&self, Synth<TermIdx>) -> &Synth<Term> (both using transmutes) and lastly there's a fn non_synth(&self, Synth<TermIdx>) -> Option<TermIdx> which unseals a Synth if the idx is lower than the last parsed idx.
[x] Clean up code for ML explanation/generalisation
The code still needs some cleanup but that can
be done in a separate PR. One issue where we fail to generalise is in sequences-18.log. This is due to a sequence as so:
Left to do:
[x] Clean up code for synthetic terms, I'm thinking that all terms could be put in the same TiVec with synthetic terms wrapped in a transparent
Synth<T>(T)
which provides e.g. a functionfn child_ids(&Synth<Term>) -> &[Synth<TermIdx>]
and the parser can indexfn index(&self, Synth<TermIdx>) -> &Synth<Term>
(both using transmutes) and lastly there's afn non_synth(&self, Synth<TermIdx>) -> Option<TermIdx>
which unseals aSynth
if the idx is lower than the last parsed idx.[x] Clean up code for ML explanation/generalisation
[ ] ~Add textual explanation of MLs~