@ -471,15 +471,11 @@ let starN = function
| q :: qs -> List . fold ~ f : star ~ init : q qs
| q :: qs -> List . fold ~ f : star ~ init : q qs
let or_ q1 q2 =
let or_ q1 q2 =
[ % Trace . call fun { pf } -> pf " (%a)@ (%a) " pp q1 pp q2 ]
[ % Trace . call fun { pf } -> pf " (%a)@ (%a) " pp _raw q1 pp _raw q2 ]
;
;
( match ( q1 , q2 ) with
( match ( q1 , q2 ) with
| { djns = [ [] ] ; _ } , _ ->
| { djns = [ [] ] ; _ } , _ -> extend_us q1 . us q2
let us = Set . union q1 . us q2 . us in
| _ , { djns = [ [] ] ; _ } -> extend_us q2 . us q1
if us = = q2 . us then q2 else { q2 with us }
| _ , { djns = [ [] ] ; _ } ->
let us = Set . union q1 . us q2 . us in
if us = = q1 . us then q1 else { q1 with us }
| ( ( { djns = [] ; _ } as q )
| ( ( { djns = [] ; _ } as q )
, ( { us = _ ; xs ; cong = _ ; pure = [] ; heap = [] ; djns = [ djn ] } as d ) )
, ( { us = _ ; xs ; cong = _ ; pure = [] ; heap = [] ; djns = [ djn ] } as d ) )
when Set . is_empty xs ->
when Set . is_empty xs ->
@ -497,7 +493,7 @@ let or_ q1 q2 =
; djns = [ [ q1 ; q2 ] ] } )
; djns = [ [ q1 ; q2 ] ] } )
| >
| >
[ % Trace . retn fun { pf } q ->
[ % Trace . retn fun { pf } q ->
pf " %a " pp q ;
pf " %a " pp _raw q ;
invariant q ;
invariant q ;
assert ( Set . equal q . us ( Set . union q1 . us q2 . us ) ) ]
assert ( Set . equal q . us ( Set . union q1 . us q2 . us ) ) ]