Fixed a performance problem with unif_machines and small_delta_step.
Previously, small_delta_step would occasionally return two machines in
normal form, with a false "are_normal" flag: this in turn caused
unif_machines to perform more steps than necessary. Now the flag returned
by small_delta_step is true iff it could not perform any reduction step;
therefore unif_machines won't try a recursive call on the new machines
(which are equal to the old ones).
Enrico Tassi [Mon, 6 Oct 2008 15:02:12 +0000 (15:02 +0000)]
3 nasty bugs fixed:
- mk_restricted_irl has been duplicated
- mk_restricted_irl generates an irl
- mk_perforated_irl generates a restricted local context suitable for a new meta
- a wrong optimization in psubst was lifting of a bad amount
- force_does_not_occurr was not delifting rels to hypotheses to be cancelled
Enrico Tassi [Fri, 3 Oct 2008 11:04:07 +0000 (11:04 +0000)]
- NCicPp.ppterm applies the substitution
- NCicReduction.are_convertible does not take in input the get_relevance
function any longer, there is a ref set by the typechecker module
- fixes to the convert-machines and small-delta-step logic
- setters for data structures now support "commuting conversion"-like
operations w.r.t. getters
- several axioms have now been proved
- new file env_to_flatenv1 showing an alternative representation of the
environment
more push/pop to avoid confusion with imperative data structures employed by
notation. the patch is not well tested, but already improves the situation
make the library compile again. I commit it so that on monday we will have
again the livecd and the .dsb package that are required by the sysadmins to
install matita on the cs cluster
include statement better implemented:
- push/pop operation for both Lexicon and Grafite stuff, instead of reset
- this (if properly working) opens the doors to a completely functional
matita status
- code size reduced, looking for unifiables or generalizations is
almost the same and do not internally work with the query term,
but its path representation that is now decorated with arieties to
recover the tree structure when needed (jump to the sibling...)
- works with partial instantiation (no more global ariety list, but
local to application heads). Stupid example:
since the 2nd arg is ? we skip the query subterm rooted in plus,
but if plus is considered of ariety 2, we fail unifiing the following
terms (we skip [] and 0 reaching the second 0 that is unified with
[] and fails).
- term -> path string function fixed to clen up the input term, no more
"FIXME: the trie received invalid term". Here there is room for improvements
especially on beta redexes and terms beginning with an abstraction, but we
need the substitutions operation, we should move the file elsewhere
- Big change:
- if the query term is a meta, then the whole content of the tree is returned
- in paramodulation this is dangerous, thus we added a small check in
the paramodulation code (eq_indexing) instead of making the discrimination
tree behave in a nasty way
- the new implementation returns the same set of candidates on all test
TPTP/Veloci and library/ (except for the aforementioned corner case).
librarian: improved error detection, bug fix in time comparison functions: now the object files are considered in the correct compilation order even if they mtime is the same :)
Procedural: improved error detection
1) as usual, I took the reverse notation for composition.
"fixed" according to the internatinal tradition
2) partial proof that basic_topologies form a category
cicDischarge, Procedural: we improved debugging and added some time stamps
librarian.ml: new algorithm for sorting sources according to compilation order