Constrexpr_opsConstrexpr_ops: utilities on constr_expr
val expr_Type_sort : Constrexpr.sort_exprval expr_Univ_sort : Constrexpr.sort_exprval expr_SProp_sort : Constrexpr.sort_exprval expr_Prop_sort : Constrexpr.sort_exprval expr_Set_sort : Constrexpr.sort_exprconstr_expr related typesval sort_name_expr_eq :
Constrexpr.sort_name_expr ->
Constrexpr.sort_name_expr ->
boolval univ_level_expr_eq :
Constrexpr.univ_level_expr ->
Constrexpr.univ_level_expr ->
boolval sort_expr_eq : Constrexpr.sort_expr -> Constrexpr.sort_expr -> boolval relevance_info_expr_eq :
Constrexpr.relevance_info_expr ->
Constrexpr.relevance_info_expr ->
boolval explicitation_eq :
Constrexpr.explicitation ->
Constrexpr.explicitation ->
boolEquality on explicitation.
val constr_expr_eq_gen :
(Constrexpr.constr_expr -> Constrexpr.constr_expr -> bool) ->
Constrexpr.constr_expr ->
Constrexpr.constr_expr ->
boolval constr_expr_eq : Constrexpr.constr_expr -> Constrexpr.constr_expr -> boolEquality on constr_expr. This is a syntactical one, which is oblivious to some parsing details, including locations.
val local_binder_eq :
Constrexpr.local_binder_expr ->
Constrexpr.local_binder_expr ->
boolEquality on local_binder_expr. Same properties as constr_expr_eq.
val binder_kind_eq : Constrexpr.binder_kind -> Constrexpr.binder_kind -> boolEquality on binder_kind
val constr_loc : Constrexpr.constr_expr -> Loc.t optionval cases_pattern_expr_loc : Constrexpr.cases_pattern_expr -> Loc.t optionval local_binders_loc : Constrexpr.local_binder_expr list -> Loc.t optionval mk_ntn :
Constrexpr.notation_entry ->
Constrexpr.notation_key ->
Constrexpr.notationval mk_ntn_in_constr : Constrexpr.notation_key -> Constrexpr.notationBasic form of the corresponding constructors
val mkIdentC : Names.Id.t -> Constrexpr.constr_exprval mkRefC : Libnames.qualid -> Constrexpr.constr_exprval mkCastC :
(Constrexpr.constr_expr * Constr.cast_kind option * Constrexpr.constr_expr) ->
Constrexpr.constr_exprval mkLambdaC :
(Names.lname list
* Constrexpr.binder_kind
* Constrexpr.constr_expr
* Constrexpr.constr_expr) ->
Constrexpr.constr_exprval mkLetInC :
(Names.lname
* Constrexpr.constr_expr
* Constrexpr.constr_expr option
* Constrexpr.constr_expr) ->
Constrexpr.constr_exprval mkProdC :
(Names.lname list
* Constrexpr.binder_kind
* Constrexpr.constr_expr
* Constrexpr.constr_expr) ->
Constrexpr.constr_exprval mkAppC :
(Constrexpr.constr_expr * Constrexpr.constr_expr list) ->
Constrexpr.constr_exprBasic form of application, collapsing nested applications
Optimized constructors: does not add a constructor for an empty binder list
val mkLambdaCN :
?loc:Loc.t ->
Constrexpr.local_binder_expr list ->
Constrexpr.constr_expr ->
Constrexpr.constr_exprval mkProdCN :
?loc:Loc.t ->
Constrexpr.local_binder_expr list ->
Constrexpr.constr_expr ->
Constrexpr.constr_exprAliases for the corresponding constructors; generally mkLambdaCN and mkProdCN should be preferred
val mkCLambdaN :
?loc:Loc.t ->
Constrexpr.local_binder_expr list ->
Constrexpr.constr_expr ->
Constrexpr.constr_exprval mkCProdN :
?loc:Loc.t ->
Constrexpr.local_binder_expr list ->
Constrexpr.constr_expr ->
Constrexpr.constr_exprval mkCPatOr :
?loc:Loc.t ->
Constrexpr.cases_pattern_expr list ->
Constrexpr.cases_pattern_exprInterpretation of a list of patterns as a disjunctive pattern (optimized)
val mkAppPattern :
?loc:Loc.t ->
Constrexpr.cases_pattern_expr ->
Constrexpr.cases_pattern_expr list ->
Constrexpr.cases_pattern_exprApply a list of pattern arguments to a pattern
val coerce_reference_to_id : Libnames.qualid -> Names.Id.tFIXME: nothing to do here
val coerce_to_id : Constrexpr.constr_expr -> Names.lidentDestruct terms of the form CRef (Ident _).
val coerce_to_name : Constrexpr.constr_expr -> Names.lnameDestruct terms of the form CRef (Ident _) or CHole _.
val coerce_to_cases_pattern_expr :
Constrexpr.constr_expr ->
Constrexpr.cases_pattern_exprval default_binder_kind : Constrexpr.binder_kindval names_of_local_binders :
Constrexpr.local_binder_expr list ->
Names.lname listRetrieve a list of binding names from a list of binders.
val names_of_local_assums :
Constrexpr.local_binder_expr list ->
Names.lname listSame as names_of_local_binder_exprs, but does not take the let bindings into account.
val fold_constr_expr_with_binders :
(Names.Id.t -> 'a -> 'a) ->
('a -> 'b -> Constrexpr.constr_expr -> 'b) ->
'a ->
'b ->
Constrexpr.constr_expr ->
'bUsed in typeclasses
Used in correctness and interface; absence of var capture not guaranteed in pattern-matching clauses and in binders of the form x,y:T(x)
val map_constr_expr_with_binders :
(Names.Id.t -> 'a -> 'a) ->
('a -> Constrexpr.constr_expr -> Constrexpr.constr_expr) ->
'a ->
Constrexpr.constr_expr ->
Constrexpr.constr_exprval notation_arg_type_fold_map :
('a -> 'b -> 'a * 'c) ->
('a -> 'd -> 'a * 'e) ->
('a -> 'f -> 'a * 'g) ->
'a ->
('b, 'd * 'h, 'f) Constrexpr.notation_arg_type ->
'a * ('c, 'e * 'h, 'g) Constrexpr.notation_arg_typeval notation_arg_type_fold :
('a -> 'b -> 'a) ->
('a -> 'c -> 'a) ->
('a -> 'd -> 'a) ->
'a ->
('b, 'c * 'e, 'd) Constrexpr.notation_arg_type ->
'aval notation_arg_type_map :
('a -> 'b) ->
('c -> 'd) ->
('e -> 'f) ->
('a, 'c * 'g, 'e) Constrexpr.notation_arg_type ->
('b, 'd * 'g, 'f) Constrexpr.notation_arg_typeval pr_scope_delimiter : Constrexpr.scope_delimiter -> Pp.tval replace_vars_constr_expr :
Names.Id.t Names.Id.Map.t ->
Constrexpr.constr_expr ->
Constrexpr.constr_exprval free_vars_of_constr_expr : Constrexpr.constr_expr -> Names.Id.Set.tval occur_var_constr_expr : Names.Id.t -> Constrexpr.constr_expr -> boolval free_vars_of_cases_pattern_expr :
Constrexpr.cases_pattern_expr ->
Names.Id.Set.tval free_vars_of_local_binders :
Constrexpr.local_binder_expr list ->
Names.Id.Set.tval names_of_constr_expr : Constrexpr.constr_expr -> Names.Id.Set.tReturn all (non-qualified) names treating binders as names
val ntn_loc :
?loc:Loc.t ->
Constrexpr.notation_substitution ->
Constrexpr.notation ->
(int * int) listval isCSort : Constrexpr.constr_expr -> boolval error_invalid_pattern_notation : ?loc:Loc.t -> unit -> 'aFor cases pattern parsing errors
Ad hoc support for curly brackets in notations; avoid as much as possible
val contract_curly_brackets :
Constrexpr.notation ->
(Constrexpr.constr_expr, 'a, 'b) Constrexpr.notation_arg_type list ->
Constrexpr.notation
* (Constrexpr.constr_expr, 'a, 'b) Constrexpr.notation_arg_type listval contract_curly_brackets_pat :
Constrexpr.notation ->
('a, Constrexpr.kinded_cases_pattern_expr, 'b) Constrexpr.notation_arg_type
list ->
Constrexpr.notation
* ('a, Constrexpr.kinded_cases_pattern_expr, 'b) Constrexpr.notation_arg_type
list