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
Typesysteem IDP4
- 983