channel capacity_In { out capacity(prev_capacity:Int, setCapacity(cur_capacity)) = cur_capacity } channel price_In { out price(prev_price:Int, setPrice(cur_price)) = cur_price } channel siteA_Add { out siteA(prev_products:List, addProductToSiteA(price:Int, capacity:Int)) = cons({"price": price, "capacity": capacity}, prev_products) } channel capacity_Update { in siteA(prev_products:List, updateList(cur_products, cur_capacity)) = cur_products in capacity(prev_capacity:Int, updateList(cur_products, cur_capacity)) = cur_capacity out itemsByCapacity(prev_items:List, updateList(cur_products, cur_capacity)) = selectGE(cur_products, "capacity", cur_capacity) } channel price_Update { in siteA(prev_products:List, updateList(cur_products, cur_price)) = cur_products in price(prev_price:Int, updateList(cur_products, cur_price)) = cur_price out itemsByPrice(prev_items:List, updateList(cur_products, cur_price)) = selectLE(cur_products, "price", cur_price) }