diff options
| author | Maxime Dénès | 2017-05-11 13:24:33 +0200 |
|---|---|---|
| committer | Maxime Dénès | 2017-05-11 13:24:33 +0200 |
| commit | e176622f715772cc0704dc860ffa18e85c36e250 (patch) | |
| tree | 3f3bc0febf6a506ac8d1b0f30ced6762297ac529 /kernel/uGraph.ml | |
| parent | e0577588056110ea13a904aa1f01c86dbc931f02 (diff) | |
| parent | 6795bc07f53a842bcec76ad0329d0b4444a625ab (diff) | |
Merge PR#572: Replacing costly merges in UGraph.
Diffstat (limited to 'kernel/uGraph.ml')
| -rw-r--r-- | kernel/uGraph.ml | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/kernel/uGraph.ml b/kernel/uGraph.ml index 4884d0deb1..6971c0a2b6 100644 --- a/kernel/uGraph.ml +++ b/kernel/uGraph.ml @@ -354,13 +354,15 @@ let get_new_edges g to_merge = UMap.empty to_merge in let ltle = - UMap.fold (fun _ n acc -> - UMap.merge (fun _ strict1 strict2 -> - match strict1, strict2 with - | Some true, _ | _, Some true -> Some true - | _, _ -> Some false) - acc n.ltle) - to_merge_lvl UMap.empty + let fold _ n acc = + let fold u strict acc = + if strict then UMap.add u strict acc + else if UMap.mem u acc then acc + else UMap.add u false acc + in + UMap.fold fold n.ltle acc + in + UMap.fold fold to_merge_lvl UMap.empty in let ltle, _ = clean_ltle g ltle in let ltle = |
