Module Pattern

Patterns
type patvar = Names.Id.t

Cases pattern variables

type case_info_pattern = {
cip_style : Constr.case_style;
cip_ind : Names.inductive option;
cip_ind_tags : bool list option;

indicates LetIn/Lambda in arity

cip_extensible : bool;

does this match end with _ => _ ?

}
type constr_pattern =
| PRef of Names.GlobRef.t
| PVar of Names.Id.t
| PEvar of constr_pattern Constr.pexistential
| 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 * constr_pattern * constr_pattern * (int * bool list * constr_pattern) list

index 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_pattern