]> matita.cs.unibo.it Git - helm.git/commit
New command "inverter" used to generate an induction/inversion principle for
authorWilmer Ricciotti <ricciott@cs.unibo.it>
Wed, 22 Apr 2009 10:43:52 +0000 (10:43 +0000)
committerWilmer Ricciotti <ricciott@cs.unibo.it>
Wed, 22 Apr 2009 10:43:52 +0000 (10:43 +0000)
commit30743ffb0d331aaaa449957238128943ba781ecf
tree053322dca77a75b36a51fb8b12bfc4d41e0efd65
parent5c10d402b5de7233bc83d7f685b274832e383212
New command "inverter" used to generate an induction/inversion principle for
inductive types. The syntax is:

  inverter name_of_the_principle for name_of_inductive_type param_selection

where param_selection is of the form

 (# # # ... #)

where # can be either ? or %. The length of param_selection must match the
number of right parameters of the inverted inductive_type. A % means that the
corresponding parameter will have an inversion hypothesis, while a ? means that
the parameter won't have an inversion hypothesis. Therefore, a selection
(??...?) will generate the traditional elimination principle, while (%%...%)
will generate a full inversion principle.

Induction/inversion principles are useful for treating inductive types such that
some of their right parameters are used uniformly in one or more constructors.
If the inverted parameters are used uniformly in some constructor, the
induction/inversion principle will provide an induction hypothesis for that
branch (while a full inversion, also ranging on non-uniform parameters, would no
provide a useful induction hypothesis).
12 files changed:
helm/software/components/grafite/grafiteAst.ml
helm/software/components/grafite/grafiteAstPp.ml
helm/software/components/grafite_engine/grafiteEngine.ml
helm/software/components/grafite_parser/grafiteDisambiguate.ml
helm/software/components/grafite_parser/grafiteParser.ml
helm/software/components/tactics/.depend
helm/software/components/tactics/inversion.ml
helm/software/components/tactics/inversion.mli
helm/software/components/tactics/inversion_principle.ml
helm/software/components/tactics/inversion_principle.mli
helm/software/components/urimanager/uriManager.ml
helm/software/components/urimanager/uriManager.mli