Typesysteem v. IDP4

Een aantal: 

  • bevindingen

  • vragen

Geen kant en klare oplossingen

  • Oneindig grote set domeinelementen:
    • Integers, Rationals & Herbrandconstructoren
  • Oneindig grote set domeinelementen.
  • Domeinpredicaten identificeren partities van dit domein:
  • Mogelijks oneindig
  • Mogelijks overlappend.
  • Integer(), Rational() reeds ingebouwd.
  • Oneindig grote set domeinelementen.
  • Domeinpredicaten identificeren partities van dit domein.

Hoe definiëren we domeinpredicaten?

Constraints:

Type is 'schatting':

  • Ook Person(Tafel).
Person(Matthias).
Person(Jo).
¬Person(België).

Definitie:

{
    KRR(Jo).
    KRR(Matthias).
}

Eenduidig bepaald

(zonder structuren)

Quantificaties?

In IDP4.0: Expliciet generatoren aangeven.

(Binaire quantificatie)

! x : KRR(x) => HeeftDiploma(Master, x).
? x : KRR(x) & HeeftDiploma(PhD, x).

Via definitie:

Grounding is duidelijk: KRR is genererend.

Via constraint:

! x : Person(x) => leeftijd(x) > 18.
? x : Person(x) & leeftijd(x) > 26.

Grounding minder duidelijk?

Person slechts ondergrens van type

Ook grounding voor 'Tafel'?
=> lazy grounding + relevantie nodig

Quantificaties?

{
  nat(zero).
  nat(s(x)) <- nat(x).
}

Via definitie (2):

Quantificatie over x

Hier geen generator?
-> maar inductief proces, lijkt niet nodig

Quantificaties?

{
  nat(zero).
  nat(s(x)) <- nat(x).
}

Via definitie (2):

!x : nat(x) => x=zero | GroterDanNul(x).
!x : nat(x) & <(x,21) => Punt(x).

Willen we kunnen grounden

Hoe weten we dat de test monotoon is t.o.v. de inductie-orde?

Quantificaties?

{
  nat(zero).
  nat(s(x)) <- nat(x).
}

Via definitie (2):

!x : nat(x) & <(x,21) => Punt(x).

Hoe weten we dat de test monotoon is t.o.v. de inductie-orde?

Mogelijke oplossing?

{
  nat(zero, G).
  nat(s(x), G) <- nat(x) & G(x).
}

Generische modellen

Soms blijven bepaalde types leeg

{
  Weapon(x) <- false.
}
!x : ¬Weapon(x).

Niet heel natuurlijk?

Waarover quantificeert x? (Generator?)

Sets als expressies in de taal?

Weapon = {}.

Subtyping

  • Expliciet of impliciet?
  • constraints of definitie?
  • 'Tegengestelde' richting v. hierarchie

CommDevice

Receiver

Transmitter

Transceiver

Subtyping

CommDevice

Receiver

Transmitter

Transceiver

{
  CommDevice(x) <- Receiver(x) | Transmitter(x).

  Transmitter(RadioMast).
  Transmitter(x) <- Transceiver(x).

  Receiver(Radio).
  Receiver(x) <- Transceiver(x).

  Transceiver(GSMMast).
  Transceiver(GSM).
  Transceiver(WalkieTalkie).
}

Subtyping

CommDevice

Receiver

Transmitter

Transceiver

{
  CommDevice(x) <- Receiver(x) | Transmitter(x).

  Transmitter(RadioMast).
  Transmitter(x) <- Transceiver(x).
  Transmitter(x) <- Transmitter_o(x).

  Receiver(Radio).
  Receiver(x) <- Transceiver(x).

  Transceiver(GSMMast).
  Transceiver(GSM).
  Transceiver(WalkieTalkie).
  Transceiver(x) <- Transceiver_o(x).
}

o

o

  • vb.
  • Vocabulary V {
      type AttrSrc  
      type Stakeholder isa AttrSrc
      type User isa Stakeholder
      type Organization isa Stakeholder
    }
    
    Structure S : V {
      AttrSrc = { 
        User;
        Government; University; WS; PS;
        BasicIDCard; PrivIDCard; StudentCard;
        BasicPurchaseServ; PrivPurchaseServ; 
        BasicReductionPurchaseServ; 
        PrivReductionPurchaseServ; DeliveredServ;
        DeliveryRequestServ; DeliveryServ;
      }
      
      Stakeholder = {
        User;
        Government; University; WS; PS;
      }
      
      User = {
        User;
      }
      
      Organization = {
        Government; University; WS; PS;
      }
    }
  • Vocabulary {
        AttrSrc
        User
        Organization
        Stakeholder
    }
    
    {
        AttrSrc(User).
        ...
        AttrSrc(DeliveryRequestServ).
        AttrSrc(DeliveryServ).
    
        User(User).
    
        Organization(Government).
        Organization(University).
        Organization(WS).
        Organization(PS).
    
        Stakeholder(x) <- User(x).
        Stakeholder(x) <- Organization(x).
    }
    
    !x : Stakeholder(x) => Location(x,Londen).
    ?x : Stakeholder(x) & Secure(x).
naam tel.
Matthias 031024390
Jo 302492030
naam tel.
Matthias 031024390
Ingmar

DB1

DB2

p1

p2

p3

p1_db1

p2_db1

p1_db2

p2_db2

constrDB1

constrDB2

DB1_t

Person

f

f'

{
   New y : Person & f(x)=y <- DB1_t(x).

   New y : Person & f'(x)=y <- DB2_t(x) & !z [DB1_t] : ~Canoniek(x,z).
   f'(x)=y <- DB2_t(x) & (?z [DB1_t] : Canoniek(x,z) & f(z)=y).
}

DB2_t

Typesysteem IDP4

By Matthias van der Hallen