StructuresSourceA structure S is a non recursive inductive type with a single constructor
A canonical instance declares "canonical" conversion hints between the effective components of a structure and the projections of the structure
A ValuePattern.t characterizes the form of a component of canonical instance and is used to query the data base of canonical instances
The canonical solution of a problem (proj,val) is a global constant = fun abs : abstractions_ty => body and body = RecodConstructor params canon_values and the canonical value corresponding to val is val cvalue_arguments. It is possible that val is one of the abs abstractions, eg Default_cs, and in that case cvalue_abstraction = Some i
Some extra info for structures which are primitive records