123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100(************************************************************************)(* * The Coq Proof Assistant / The Coq Development Team *)(* v * Copyright INRIA, CNRS and contributors *)(* <O___,, * (see version control and CREDITS file for authors & dates) *)(* \VV/ **************************************************************)(* // * This file is distributed under the terms of the *)(* * GNU Lesser General Public License Version 2.1 *)(* * (see LICENSE file for the text of the license) *)(************************************************************************)openNames(** Locus : positions in hypotheses and goals *)type'aor_var=|ArgArgof'a|ArgVaroflident(** {6 Occurrences} *)type'aoccurrences_gen=|AllOccurrences|AtLeastOneOccurrence|AllOccurrencesButof'alist(** non-empty *)|NoOccurrences|OnlyOccurrencesof'alist(** non-empty *)typeoccurrences_expr=(intor_var)occurrences_gentype'awith_occurrences=occurrences_expr*'atypeoccurrences=intoccurrences_gen(** {6 Locations}
Selecting the occurrences in body (if any), in type, or in both *)typehyp_location_flag=InHyp|InHypTypeOnly|InHypValueOnly(** {6 Abstract clauses expressions}
A [clause_expr] (and its instance [clause]) denotes occurrences and
hypotheses in a goal in an abstract way; in particular, it can refer
to the set of all hypotheses independently of the effective contents
of the current goal
Concerning the field [onhyps]:
- [None] means *on every hypothesis*
- [Some l] means on hypothesis belonging to l *)type'ahyp_location_expr='awith_occurrences*hyp_location_flagtype'idclause_expr={onhyps:'idhyp_location_exprlistoption;concl_occs:occurrences_expr}typeclause=Id.tclause_expr(** {6 Concrete view of occurrence clauses} *)(** [clause_atom] refers either to an hypothesis location (i.e. an
hypothesis with occurrences and a position, in body if any, in type
or in both) or to some occurrences of the conclusion *)typeclause_atom=|OnHypofId.t*occurrences_expr*hyp_location_flag|OnConclofoccurrences_expr(** A [concrete_clause] is an effective collection of occurrences
in the hypotheses and the conclusion *)typeconcrete_clause=clause_atomlist(** {6 A weaker form of clause with no mention of occurrences} *)(** A [hyp_location] is an hypothesis together with a location *)typehyp_location=Id.t*hyp_location_flag(** A [goal_location] is either an hypothesis (together with a location)
or the conclusion (represented by None) *)typegoal_location=hyp_locationoption(** {6 Simple clauses, without occurrences nor location} *)(** A [simple_clause] is a set of hypotheses, possibly extended with
the conclusion (conclusion is represented by None) *)typesimple_clause=Id.toptionlist(** {6 A notion of occurrences allowing to express "all occurrences
convertible to the first which matches"} *)type'aor_like_first=AtOccsof'a|LikeFirst