New feature/bug fixed (hopefully): it is now possible to use fixed (term)
variables in fold bodies.
The notation for exists is now fully working as expected.
Notation for existential partially fixed: it is now possible to write
\exists a,b,c:T.P
(possibly omitting the type).
In any case, however, the type is got rid of during parsing.
A very nice experiment using notation: we define the notation for natural
language derivations so that, when looking at the proof, we see it as a
natural deduction tree! Useful to teach logic to first year students, but
much work still need to be done (expecially to give derivation trees to
the system in some way).
Exists is no longer an ad-hoc notation hard-coded in the parser.
It was so becauses it was previously impossible to declare a notation that
changed the level of its subterms.
CProp hierarchy fixed:
- CProp universes are not swept away
- CProp i : Type j (where i < j, used to be a fresh j)
- new kernel universe inconsistency error message improved
- pp function for universes constraints for new kernel
Formal topology example fixed to eploit left parameters to reduce the universe
height and solve universe inconsistency
simplified coercDb implementation with additional info about the position of
the coerced argument. Now (C ??? x ??? y z) is printed as (x y z) when C is a
coercion and ? are implicits or saturations generated to apply the coercion to
x.
New case in unification, when there is a triangular pullback and the
coerced is not flexible an unfolding of the composed coercion is attempted.
this helps in the case:
C ??? X ??? y ? +?+ C1 ??? (C2 ??? X ???) ??? y z
where C = C1 composed C2 but X is rigid abd conversion fails cause
x != ? and the heads are different... unfolding C helps
- Procedural: bug fix in rendering the application: we must handle the
arguments that are inferrable but do not occur in the goal
- LAMBDA-TYPES: bug fix in Makefile: MAS was not computed correctly
Ferruccio Guidi [Mon, 30 Jun 2008 14:07:46 +0000 (14:07 +0000)]
we tranlate an Automath book in an itermediate format where:
- the local references are resolved as position indexes
- the global references are disambiguated
- the parameter applications are completed
For now the trnslation is slow because the involved data structures are
inefficient
Ferruccio Guidi [Sun, 22 Jun 2008 15:13:14 +0000 (15:13 +0000)]
- grafiteParser.ml: the callback invocation was displaced
- cicNotationPres.ml: hack to have more brackets because
(forall .. \to ..) was rendered without brackets. FIXME!
- LAMBDA-TYPES: improved Makefile
- partial implementation of pattern for case documented
- notation partially documented
- omitting the precedence level in a notation declaration is no longer allowed
1. bug fixed in generalize_pattern: a lazy const_tac should have been
relocated. The interesting case is
generalize in match a in \vdash %
where a occurs in the goal under at least one binder
2. pattern for cases partially implemented. It is now possible to perform
a case on the hypotheses as long as the conclusion and hypothesis patterns
are trivial (i.e. %)
Ferruccio Guidi [Thu, 19 Jun 2008 12:15:38 +0000 (12:15 +0000)]
- Procedural: we now check that an eliminator opens as many goals as the constructors of the eliminated type
So nat_double_ind is not an eliminator for Nat :)
- Base-2 : now compiles correctly because we fixed the preamble :)
Enrico Tassi [Tue, 17 Jun 2008 14:18:12 +0000 (14:18 +0000)]
reordering of lexicon status partially avoided to make it sure
that interpretations are not moved around. I still argue that an alias can be
removed from the back of an interpretation, no idea how this would interfere with CSC recent patch
Ferruccio Guidi [Fri, 13 Jun 2008 11:47:41 +0000 (11:47 +0000)]
Initial version of the Helena Checker
- For now just parses an automath book (automath grammar by F. Wiedijg)
the grundlagen is provided as (the only existing) example
- In the future will convert an automath book to a lambda-delta environment
several lambda-delta extensions will be supported
Enrico Tassi [Thu, 12 Jun 2008 15:52:34 +0000 (15:52 +0000)]
Testing some performance tricks by caching the list of the first n primes and
showing that they are good either with nth_prime (sloooooooooowww) or with
sieve (slooooow and not proved correct yet). With sieve we are currently able
to verify the list of the first 103 primes in a sort of reasonable time.
The 103rd prime is only 593 :-(