:- prolog_use_module(library(aggregate)). :- dynamic inferred/1, asserted/1, consumed/4, consumers/2, itemConsumed/2, inventorySourceOfItem/2, timestampOfConsumption/2. hasBarcode(campbellsHomeStyleMexicanStyleChickenTortilla,barcode(upc(0,5100014997,8))). hasBarcode(campbellsHomeStyleItalianStyleWeddingSoup,barcode(upc(0,5100014370,9))). hasBarcode(campbellsChunkyChickenCornChowder,barcode(upc(0,5100003813,5))). hasBarcode(campbellsChunkyBeefWithCountryVegetables,barcode(upc(0,510000550,2))). hasLocation(shoppingCheckout1,myLocal(cvs)). hasDate(shoppingCheckout1,[2016-04-06]). purchased(shoppingCheckout1,qty(campbellsHomeStyleMexicanStyleChickenTortilla,1),perUnit(dollars(1.50))). purchased(shoppingCheckout1,qty(campbellsHomeStyleItalianStyleWeddingSoup,1),perUnit(dollars(1.50))). purchased(shoppingCheckout1,qty(campbellsChunkyChickenCornChowder,1),perUnit(dollars(1.50))). purchased(shoppingCheckout1,qty(campbellsChunkyBeefWithCountryVegetables,1),perUnit(dollars(1.50))). observedInventoryLevel(andrewDougherty,townhome,campbellsChunkyBeefWithCountryVegetables,0,[2016-04-07,02:18:37]). observedInventoryLevel(andrewDougherty,townhome,campbellsHomeStyleMexicanStyleChickenTortilla,0,[2016-04-07,02:18:37]). asserted(consumed(andrewDougherty,qty(campbellsChunkyBeefWithCountryVegetables,1),downstairs_computer_room,[2016-04-06,22:57:48])). asserted(consumed(andrewDougherty,qty(campbellsHomeStyleMexicanStyleChickenTortilla,1),downstairs_computer_room,[2016-04-07,01:05:55])). asserted(consumed(andrewDougherty,qty(campbellsHomeStyleItalianStyleWeddingSoup,1),downstairs_computer_room,[2016-04-08,02:26:53])). asserted(consumed(andrewDougherty,qty(campbellsChunkyChickenCornChowder,1),downstairs_computer_room,[2016-04-08,22:36:55])). startedDrink(andrewDougherty,drinkFn(frozenCup,water,full),source(jugs5Gallon),[2016-04-08,16:14:48]). finishedDrink(andrewDougherty,drinkFn(frozenCup,water,full),source(jugs5Gallon),[2016-04-08,16:14:48]). shoppingTrip(shoppingTrip2,[ receiptFn(shopping1,starbucks1500NOrchardRoadAuroraIL,[2016-04-09,15:31:36]), visitFn(shopping2,gamesWorkshopGenevaCommons,[2016-04-09,15:31:36]), receiptFn(shopping3,dollarTreeRandallRdBataviaIL,[2016-04-09,15:31:36]), receiptFn(shopping4,targetNorthAurora,[2016-04-09,15:33:31]), receiptFn(shopping5,targetNorthAurora,[2016-04-09,15:33:31]) ]). hasReceiptImage(shopping3,fileFn('paperless-office/0.pnm')). hasReceiptText(shopping3,sayerEntryFn(1551235)). boycotting(andrewDougherty,storeFn(starbucks)). boycotting(andrewDougherty,storeFn(jimmyJohnsGourmetSandwiches)). reasonFor(boycotting(andrewDougherty,storeFn(jimmyJohnsGourmetSandwiches)),containedIn(fileFn('/var/lib/myfrdcsa/codebases/minor/free-life-planner/data/12799150_10206183076956265_3729390916409242300_n.jpg'))). isa(starbucks1500NOrchardRoadAuroraIL,storeFn(starbucks)). isa(dollarTreeRandallRdBataviaIL,storeFn(dollarTree)). isa(gamesWorkshopGenevaCommons,storeFn(gamesWorkshop)). isa(targetNorthAurora,storeFn(target)). purchased(shopping3,[ purchaseFn(shopping3purchase1,qty(pepsi,1),perUnit(dollars(0.99,[2016-04-09,15:51:58]))), purchaseFn(shopping3purchase2,qty(slimJimOriginal,2),perUnit(dollars(0.99,[2016-04-09,15:51:50]))), purchaseFn(shopping3purchase3,qty(stauffersWhalesCheedarCheeseBakedSnackCrackers,2),perUnit(dollars(0.99,[2016-04-09,15:51:40]))), purchaseFn(shopping3purchase4,qty(packOf(heavyDutyPlasticForks,48),1),perUnit(dollars(0.99,[2016-04-09,15:51:32]))) ]). hasReceiptLine(shopping3purchase1,[description("PEPSI"),qty("1"),price("1.00"),total("1.00T")]). on(instanceFn(packOf(heavyDutyPlasticForks,48),1),of(secondToBottom(shelf),in(plastic_shelf,downstairs_computer_room))). hasBarcode(packOf(heavyDutyPlasticForks,48),barcode(upc(6,39277,85842,9))). hasBarcode(stauffersWhalesCheedarCheeseBakedSnackCrackers,barcode(upc(0,7232011176,6))). bestByDate(instanceFn(stauffersWhalesCheedarCheeseBakedSnackCrackers,1),[2016-01-21]). bestByDate(instanceFn(stauffersWhalesCheedarCheeseBakedSnackCrackers,2),[2016-02-23]). hasBarcode(slimJimOriginal,barcode(upc(0,26200,11700,3))). bestByDate(instanceFn(slimJimOriginal,1),[2016-07-10]). bestByDate(instanceFn(slimJimOriginal,2),[2016-06-10]). on(instanceFn(slimJimOriginal,1),of(secondToBottom(shelf),downstairs_computer_room_plastic_shelf)). on(instanceFn(slimJimOriginal,2),of(secondToBottom(shelf),downstairs_computer_room_plastic_shelf)). on(instanceFn(stauffersWhalesCheedarCheeseBakedSnackCrackers,1),of(secondToBottom(shelf),in(plastic_shelf,downstairs_computer_room))). on(instanceFn(stauffersWhalesCheedarCheeseBakedSnackCrackers,2),of(secondToBottom(shelf),in(plastic_shelf,downstairs_computer_room))). unopened(instanceFn(stauffersWhalesCheedarCheeseBakedSnackCrackers,2)). opened(instanceFn(stauffersWhalesCheedarCheeseBakedSnackCrackers,2),at([2016-04-09,15:49:35])). purchased(shopping4,[ purchaseFn(shopping4purchase1,qty(medicationContainer(pills(rispiridoneGenericDrug,30)),1),perUnit(dollars(0.00,[2016-04-09,15:51:58]))), purchaseFn(shopping4purchase2,qty(medicationContainer(pills(fluoxitine,90)),1),perUnit(dollars(0.00,[2016-04-09,15:51:58]))), purchaseFn(shopping4purchase3,qty(medicationContainer(pills(trazadone,15)),1),perUnit(dollars(0.00,[2016-04-09,15:51:58]))) ]). purchased(shopping5,[ purchaseFn(shopping5purchase1,qty(boxOf(qty(clifBuilders20gProteinBARChocolatePeanutButter,6)),1),onSale(perUnit(5.99))), purchaseFn(shopping5purchase2,qty(multivitamin,1),perUnit(7.49)) ]). purchased(shoppingCheckout3,qty(boxOf(qty(clifBuilders20gProteinBARChocolatePeanutButter,6)),1),onSale(perUnit(5.99))). %% restockingEvent(stocking([2016-04-09,15:13:17] broughtInventoryToLevel(dining_room_closet,packOf(kleenexUltraSoftDouxTissue,qty(box,3)),units(1)). broughtInventoryToLevel(downstairs_computer_room,boxOf(qty(clifBuilders20gProteinBARChocolatePeanutButter,6)),units(1),[2016-04-09,15:27:31]). asserted(consumed(andrewDougherty,qty(clifBuilders20gProteinBARChocolatePeanutButter,1),downstairs_computer_room,[2016-04-09,16:08:13])). consumers(consumption6,[andrewDougherty]). itemConsumed(consumption6,qty(pepsi,1)). inventorySourceOfItem(consumption6,downstairs_computer_room). timestampOfConsumption(consumption6,[2016-04-09,16:08:17]). hasWasteProduct(consumption6,wasteProduct1). isa(wasteProduct1,packagingOf(qty(pepsi,1))). hasProperDisposalMethod(packagingOf(qty(pepsi,1)),[rinse,putInRecyclables]). hasRefillOnMedication(rispiridoneGenericDrug,0). hasRefillOnMedication(fluoxitine,0). hasRefillOnMedication(trazadone,0). asserted(consumed(andrewDougherty,qty(clifBuilders20gProteinBARChocolatePeanutButter,1),downstairs_computer_room,[2016-04-09,16:51:44])). onlineShoppingSession(onlineShoppingSession1, [ receiptFn(shopping6,ebay,[2016-04-09,17:02:43]), receiptFn(shopping7,ebay,[2016-04-09,17:02:43]) ]). purchased(shopping6,[ purchaseFn(shopping6purchase1,qty(roseQuartzCrystalBallFromEbay,1),perUnit(dollars(4.99,[2016-04-09,17:04:21]))) ]). tax(shopping6,dollars(0.0,[2016-04-09,17:05:17])). shipping(shopping6,dollars(0.0,[2016-04-09,17:05:17])). purchased(shopping7,[ purchaseFn(shopping6purchase1,qty(citrineQuartzCrystalBallFromEbay,1),perUnit(dollars(0.99,[2016-04-09,17:04:21]))) ]). tax(shopping7,dollars(0.0,[2016-04-09,17:05:17])). shipping(shopping7,dollars(1.99,[2016-04-09,17:05:17])). %% FIXME: This doesn't work yet % getCostOfPurchase(purchaseFn(ShoppingSFPurchaseSF,Item,Cost),Dollars) :- % Item = qty(Type,Qty), % Cost = perUnit(dollars(Dollars,Date)), % Dollars is Cost * Qty. % onlineOrderSubtotal(ShoppingSF,Dollars) :- % purchased(ShoppingSF,ReceiptItems), % aggregate_all(getCostOfPurchase(Purchase,SubDollars),member(Purchase,ReceiptItems),Dollars). % onlineOrderTotal(ShoppingSF,TotalDollars) :- % onlineOrderSubtotal(ShoppingSF,SubtotalDollars), % tax(ShoppingSF,dollars(TaxDollars,Date2)), % shipping(ShoppingSF,dollars(ShippingDollars,Date3)), % TotalDollars is SubtotalDollars + TaxDollars + ShippingDollars. %% consumed(consumption7,record everything necessary to record a particular event). consumers(consumption7,[andrewDougherty]). itemConsumed(consumption7,mostOf(boxOf(cheezeItOriginalFlavor))). inventorySourceOfItem(consumption7,kitchen). timestampOfConsumption(consumption7,[2016-04-13,16:05:06]). forwardChaining(pantry_manager) :- asserted(consumed(Agent,Item,Location,Timestamp)), nextCounter(inferredConsumption,ConsumptionID), assert(inferred(consumers(ConsumptionID,[Agent]))), assert(inferred(itemConsumed(ConsumptionID,Item))), assert(inferred(inventorySourceOfItem(ConsumptionID,Location))), assert(inferred(timestampOfConsumption(ConsumptionID,Timestamp))), fail. forwardChaining(pantry_manager). inferred(consumed(Agent,Item,Location,Timestamp)) :- consumers(ConsumptionID,[Agent]), itemConsumed(ConsumptionID,Item), inventorySourceOfItem(ConsumptionID,Location), timestampOfConsumption(ConsumptionID,Timestamp). consumed(X,Y,Z,A) :- asserted(consumed(X,Y,Z,A)). consumed(X,Y,Z,A) :- inferred(consumed(X,Y,Z,A)). :- forwardChaining(pantry_manager). isEasyOnTeeth(potatoeSalad). isEasyOnTeeth(chefBoyardeeMacAndCheese).