diff options
author | letouzey <letouzey@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2013-10-23 22:17:07 +0000 |
---|---|---|
committer | letouzey <letouzey@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2013-10-23 22:17:07 +0000 |
commit | 5e6145c871eea1e94566b252b4bfc4cd752f42d5 (patch) | |
tree | 97dfa98357cb0cf90bf06c9d470e6788de84c3b1 /kernel | |
parent | 9b56e832ef591379dd1f2b29fe7d88513f7caf50 (diff) |
cList: set-as-list functions are now with an explicit comparison
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16920 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sorts.ml | 2 | ||||
-rw-r--r-- | kernel/sorts.mli | 2 | ||||
-rw-r--r-- | kernel/univ.ml | 14 |
3 files changed, 11 insertions, 7 deletions
diff --git a/kernel/sorts.ml b/kernel/sorts.ml index 88c99683e..d2469c4fd 100644 --- a/kernel/sorts.ml +++ b/kernel/sorts.ml @@ -44,6 +44,8 @@ let family = function | Prop Pos -> InSet | Type _ -> InType +let family_equal = (==) + module Hsorts = Hashcons.Make( struct diff --git a/kernel/sorts.mli b/kernel/sorts.mli index f15b7cba4..51e8a6f6c 100644 --- a/kernel/sorts.mli +++ b/kernel/sorts.mli @@ -27,3 +27,5 @@ val is_prop : t -> bool val family : t -> family val hcons : t -> t + +val family_equal : family -> family -> bool diff --git a/kernel/univ.ml b/kernel/univ.ml index ddb5dcbc6..aa6c9c4c8 100644 --- a/kernel/univ.ml +++ b/kernel/univ.ml @@ -154,12 +154,12 @@ let sup u v = if UniverseLevel.equal u v then Atom u else Max ([u;v],[]) | u, Max ([],[]) -> u | Max ([],[]), v -> v - | Atom u, Max (gel,gtl) -> Max (List.add_set u gel,gtl) - | Max (gel,gtl), Atom v -> Max (List.add_set v gel,gtl) + | Atom u, Max (gel,gtl) -> Max (List.add_set UniverseLevel.equal u gel,gtl) + | Max (gel,gtl), Atom v -> Max (List.add_set UniverseLevel.equal v gel,gtl) | Max (gel,gtl), Max (gel',gtl') -> - let gel'' = List.union gel gel' in - let gtl'' = List.union gtl gtl' in - Max (List.subtract gel'' gtl'',gtl'') + let gel'' = List.union UniverseLevel.equal gel gel' in + let gtl'' = List.union UniverseLevel.equal gtl gtl' in + Max (List.subtract UniverseLevel.equal gel'' gtl'',gtl'') (* Comparison on this type is pointer equality *) type canonical_arc = @@ -865,11 +865,11 @@ let make_max = function let remove_large_constraint u = function | Atom u' as x -> if UniverseLevel.equal u u' then Max ([],[]) else x - | Max (le,lt) -> make_max (List.remove u le,lt) + | Max (le,lt) -> make_max (List.remove UniverseLevel.equal u le,lt) let is_direct_constraint u = function | Atom u' -> UniverseLevel.equal u u' - | Max (le,lt) -> List.mem u le + | Max (le,lt) -> List.mem_f UniverseLevel.equal u le (* Solve a system of universe constraint of the form |