]> matita.cs.unibo.it Git - helm.git/commit
Coercions are now generalized to the general form
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Thu, 30 Aug 2007 13:36:44 +0000 (13:36 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Thu, 30 Aug 2007 13:36:44 +0000 (13:36 +0000)
commit396a578b680e7fdb9d262822184e52f0d4d5086b
treea13b4cc2f829ea5f425dd8fcd676821c356ad9a1
parent3a0c7d14897577f31da1df7bd95541b473abeb3c
Coercions are now generalized to the general form
f: \forall xs:Ts. \forall a:A xs. \forall ys:Ts'. B xs a ys
where f is declared as a coercion from A ? to B ? ? ? using the syntax

   coercion uri arity saturations

where:
 1. arity and saturations are optional with default 0
 2. the saturations option is the number of ys

Useful example: it is now possible to declare a coercion from
 nat to \exists n:nat. 0 \leq n
obtaining something extremely close to Russel (the new implementation of
the Program tactic of Coq) up to the fact that coercions are not propagated
yet under mutcases and fixes.

TODO: composition of coercions having saturations <> 0 is not implemented
yet (but should be easy to do, at least on paper)
18 files changed:
components/binaries/transcript/grafite.ml
components/cic_unification/coercGraph.ml
components/grafite/grafiteAst.ml
components/grafite/grafiteAstPp.ml
components/grafite/grafiteMarshal.ml
components/grafite_engine/grafiteEngine.ml
components/grafite_engine/grafiteSync.ml
components/grafite_engine/grafiteSync.mli
components/grafite_parser/grafiteParser.ml
components/library/cicCoercion.ml
components/library/cicCoercion.mli
components/library/coercDb.ml
components/library/coercDb.mli
components/library/librarySync.ml
components/library/librarySync.mli
components/tactics/closeCoercionGraph.ml
components/tactics/closeCoercionGraph.mli
matita/matita.ml