PatternSourceCases pattern variables
type case_info_pattern = {cip_style : Constr.case_style;cip_ind : Names.inductive option;cip_extensible : bool;does this match end with _ => _ ?
*)}type constr_pattern = | PRef of Names.GlobRef.t| PVar of Names.Id.t| PEvar of Evar.t * constr_pattern list| PRel of int| PApp of constr_pattern * constr_pattern array| PSoApp of patvar * constr_pattern list| PProj of Names.Projection.t * constr_pattern| PLambda of Names.Name.t * constr_pattern * constr_pattern| PProd of Names.Name.t * constr_pattern * constr_pattern| PLetIn of Names.Name.t
* constr_pattern
* constr_pattern option
* constr_pattern| PSort of Sorts.family| PMeta of patvar option| PIf of constr_pattern * constr_pattern * constr_pattern| PCase of case_info_pattern
* (Names.Name.t array * constr_pattern) option
* constr_pattern
* (int * Names.Name.t array * constr_pattern) listindex of constructor, nb of args
*)| PFix of int array * int
* Names.Name.t array * constr_pattern array * constr_pattern array| PCoFix of int
* Names.Name.t array * constr_pattern array * constr_pattern array| PInt of Uint63.t| PFloat of Float64.t| PArray of constr_pattern array * constr_pattern * constr_patternNota : in a PCase, the array of branches might be shorter than expected, denoting the use of a final "_ => _" branch