Advertisement
Guest User

Untitled

a guest
Jul 19th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 0.96 KB | None | 0 0
  1. let join l sep = match l with
  2.   | [] -> ""
  3.   | h :: t ->
  4.     let s = List.fold_left (fun s e -> sprintf "%s%s%s" s sep e) "" t in
  5.     sprintf "%s%s%s" h sep s
  6.  
  7. let constraints g =
  8.   let nodes = G.fold_vertex (fun r l -> r :: l) g [] in
  9.   let nodes_constraints = List.map (fun (s,t) ->
  10.     sprintf "%s >= %s" (pprint_term s) (pprint_term t)
  11.   ) nodes in
  12.   let nodes_constraints_strict = List.map (fun (s,t) ->
  13.     sprintf "%s > %s" (pprint_term s) (pprint_term t)
  14.   ) nodes in
  15.   let nodes_conjuct = join nodes_constraints " /\\ " in
  16.   let nodes_disjunct_strict = join nodes_constraints_strict " \\/ " in
  17.   let nodes_disjunct_strict = sprintf "(%s)" nodes_disjunct_strict in
  18.   let uts = RuleSet.elements (ut_composante nodes) in
  19.   let uts_constraints = List.map (fun (s,t) ->
  20.     sprintf "%s >= %s" (pprint_term s) (pprint_term t)
  21.   ) uts in
  22.   let uts_conjuct = join uts_constraints " /\\ " in
  23.   join [nodes_conjuct; uts_conjuct; nodes_disjunct_strict] " /\\ "
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement