XSB does not handle ints very well

Issue #653 resolved
Bart Bogaerts created an issue

Bijgevoegde file werkt als ik type int door een eindig type "num" vervang

Geeft dan 8 facts in mouseclick, zoals gewenst.

Maar het gaat mis als ik daar int schrijf...

Comments (12)

  1. Joachim Jansen

    Het probleem ligt aan het feit dat je int gaat nodig hebben als generator (op de manier waarop xsb het ziet toch) in: ! S[square] X Y: idpdh_mouseclick(S,X,Y) <- idpd_xpos(S,X2) & X>X2 & X<X2+sqSize() & idpd_ypos(S,Y2) & Y>=Y2 & Y<Y2+sqSize().

    Hij gaat voor o.a. X>X2 & X<X2+sqSize() alle waardes van int proberen af te lopen (wat ik verhinder, ik geef gewoon 'false' terug. Daarom heeft idpdh_mouseclick geen enkele waarheidswaarde in de uitgerekende definitie.

  2. Ingmar Dasseville

    is het mogelijk om de CP bounds te laten genereren en dan die bounds te gebruiken voor de generatie?

  3. Joachim Jansen

    Geen idee.. Als die het type kunnen verkleinen van de variabele die nu als int gegenereerd wordt, zou dat moeten werken. Ik heb echter geen idee of CP de functionaliteit op de juiste plaats aanbiedt.

  4. Bart Bogaerts reporter

    Dit heeft niet echt met CP te maken.

    Er zijn methodes om bounds voor termen af te leiden, maar die werken bottom-up, die zouden hier niet werken.

    Wat je eigenlijk wil is bounds op een variabele afleiden -> approximatie/bdds doen dit

  5. Bart Bogaerts reporter

    @ingdas wat zou je dan doen?

    x vervangen door een constante en de solver laten propageren?

    Wat doen we in het algemeen, bij een grote theorie, voor elke deelformule solver even oproepen?

    Ik denk niet dat dat de oplossing zal zijn. Er zijn technieken om die bounds gemakkeljk en algemener af te leiden @PieterVH heeft hier zijn masterthesis over gemaakt => in principe zou je gewoon de bounds op x die toch al bestaan moeten kunnen gebruiken. De BDDs zouden slim genoeg moeten zijn om af te leiden welke waarden relevant zijn

  6. Ingmar Dasseville

    Ja, ik dacht inderdaad aan zoiets. als je al die waardes onbekende constanten maakt kan je denk ik voor veel situaties makkelijk bounds afleiden die eindig zijn. Maar ik ben maar aan het fantaseren, ik heb weinig intuitie over feasibility van zulke dingen.

    De BDDs gaan in de eerste plaats wel over het herordenen van de nodes gaan maar niet direct over het combineren ervan dacht ik. Dat zou dan een uitbreidingsstap zijn? -> geen enkele van X>X2 en X<X2+sqSize is op zijn eentje sterk genoeg voor een generator

  7. Bart Bogaerts reporter

    Het werk dat Pieter nu aan het doen is gaat inderdaad over herordenen.

    Maar die "uitbreidingsstap" is al uitgebreid bestudeerd in Pieter zijn thesis.

    Het is duidelijk hoe we dit soort problemen willen oplossen, door integratie van een LP solver die meteen kan detecteren dat een verzameling ongelijkheden samen genereerbaar is...

  8. Joachim Jansen

    Added an exception in XSB when trying to generate an infinite data type.

    The exception is initally thrown in XSB, but XSBInterface.cpp catches it and re-throws it as an InternalIdpException.

    This fixes bug #653.

    → <<cset b455aa5a1c32>>

  9. Joachim Jansen

    Als hier nog nieuwe ideeën voor te verwerken zijn, heropen de je best issue.

    Voorlopig opgelost door een exception in de ongeldige gevallen te gooien (want anders krijg je foute modellen - dit was de reden voor de issue)

  10. Joachim Jansen

    Added an exception in XSB when trying to generate an infinite data type.

    The exception is initally thrown in XSB, but XSBInterface.cpp catches it and re-throws it as an InternalIdpException.

    This fixes bug #653.

    → <<cset c45a65203d1c>>

  11. Log in to comment