packages feed

liquid-fixpoint-0.9.6.3.2: tests/pos/polybag.fq

data PolyBag.Lst 1 = [
       | PolyBag.Cons {PolyBag.hd : @(0), PolyBag.tl : (PolyBag.Lst @(0))}
       | PolyBag.Emp {}
     ]

constant PolyBag.hd : (func(1 , [(PolyBag.Lst @(0)); @(0)]))
constant PolyBag.tl : (func(1 , [(PolyBag.Lst @(0)); (PolyBag.Lst @(0))]))
constant is$PolyBag.Cons : (func(1 , [(PolyBag.Lst @(0)); bool]))
constant is$PolyBag.Emp : (func(1 , [(PolyBag.Lst @(0)); bool]))
distinct PolyBag.Cons : (func(1 , [@(0);
                                   (PolyBag.Lst @(0));
                                   (PolyBag.Lst @(0))]))
distinct PolyBag.Emp : (func(1 , [(PolyBag.Lst @(0))]))

bind 1 PolyBag.Emp : {VV : func(1 , [(PolyBag.Lst @(0))]) | []}
bind 2 PolyBag.Cons : {VV : func(1 , [@(0);
                                       (PolyBag.Lst @(0));
                                       (PolyBag.Lst @(0))]) | []}
bind 3 PolyBag.lstHd : {VV : func(1 , [(PolyBag.Lst @(0));
                                         (Bag_t @(0))]) | []}
bind 4 p : {VV : (PolyBag.Lst l) | []}
bind 5 nil : {x : (PolyBag.Lst (PolyBag.Lst l)) | [(is$PolyBag.Emp x);
                                                   (~ ((is$PolyBag.Cons x)));
                                                   (x = PolyBag.Emp);
                                                   ((PolyBag.lstHd x) = (Bag_empty 0))]}

constraint:
  env [1; 2; 3; 4; 5]
  lhs {VV : (PolyBag.Lst (PolyBag.Lst l)) | [(is$PolyBag.Cons VV);
                                             (~ ((is$PolyBag.Emp VV)));
                                             (VV = (PolyBag.Cons p nil));
                                             ((PolyBag.hd VV) = p);
                                             ((PolyBag.tl VV) = nil);
                                             ((PolyBag.lstHd VV) =
                                                (Bag_union (Bag_empty 0) (Bag_sng p 1)))]}
  rhs {VV : (PolyBag.Lst (PolyBag.Lst l)) | [(VV = (PolyBag.Cons p PolyBag.Emp))]}
  id 6 tag [6]