Define(Defs) creates the diffing types from the types defined in Defs and the functors that need to be instantatied with the diffing algorithm parameters
Parameters
Signature
type patch = change listA patch is an ordered list of changes.
module type Parameters = sig ... endmodule type S = sig ... endmodule Simple (_ : Parameters with type update_result := D.state) : Smodule Left_variadic
  (_ : Parameters with type update_result := D.state * D.left array) : 
  Smodule Right_variadic
  (_ : Parameters with type update_result := D.state * D.right array) : 
  S
