LokWeb en LWB 7 maart 2006 door Hilverd en Maarten
Inhoud LokWeb LWB
Aanmelden LokWeb -ga naar het LOKweb: -klik daar op het RUG-logo -klik op 'aanmelden op het LOKweb‘ -vul de betreffende velden in en klik op de button 'aanmelden' (als adres moet een adres gebruikt worden dat
Inloggen LokWeb -ga opnieuw naar het LOKweb: -klik daar op het RUG-logo -klik op 'door naar het LOKweb' en gebruik vervolgens gebruikersnaam en wachtwoord dat per is ontvangen.
Opdrachten LokWeb Kennislogica –Communicatieprotocollen OPGAVE 3
Modules user module- algemene module cpc module- klassieke propositie logica k, s4, s5 modules- modale logica kn, s4n modules- multimodale logica Met de functie load kan je modules laden. VB: load(kn);
De gebruikersinterface De interface bestaat uit drie onderdelen 1.Het hoofdscherm 2.Het statusscherm 3.Het optiescherm
Informatiesysteem Naast standaard help bevat het informatiesysteem ook: 1.Informatie over LWB 2.Een voorbeeld van een LWB-sessie 3.Syntax beschrijving 4.Beschrijving van elke functie 5.Referentie handleiding
Notatie
OP TCW2 Logic WorkBench is uit te voeren via Hilverd's account: ~hreker/lwb –load(cpc); –a:=(~(p v q) & (s r)-> q v p) & (((d->c)->d)->d); –b:=simplify(a);
Maar hoe gebruik je het? LWB kan op Mac, SUN en Linux draaien. Je kan de ASCII versie draaien door “~hreker/lwb” in je shell te tikken en de XLWB door “~hreker/xlwb” te tikken. De XLWB is de versie met grafische gebruikersinterface.
Belangrijke instructies een formule toekennen: f := (p1 v p2) & p3; een theorie toekennen: theorie := [f, p1 -> p2, ~p2]; een formule vereenvoudigen: simplify((p2 p3) & p0->p1 & p0-> ~p3); => p2 -> p1 & p0 -> ~p3
Belangrijke instructies concat (theorieen aan elkaar plakken): concat([p & q, r], [p -> r], [t]); => [p & q, r, p -> r, t] union: union([1,1,2], [2,2,3]); => [1,2,3] member: member(p0 & p1,[p3, p0 & p1, ~p2] ); => true
Belangrijke instructies verwijder overbodige subformules: remove((true v p0) & p1 -> false); => ~p1 welke module werk ik in? which(provable); => kn commentaarregels: # commentaar
Belangrijke instructies consistent(T): theorie T is consistent provable(F,T): formule F is bewijsbaar in theorie T satisfiable(F): formule F is vervulbaar
Verder Binnen LWB moet er expliciet gemaakt worden met welke logica je wil werken. Dit doe je door de juiste logica te laden. Bijvoorbeeld: load(cpc) cpc: klassieke propositielogica k, s4, s5: modale logica kn, s4n: multimodale logica
Multi-agent modelling De LWB kan gebruikt worden bij de implementatie van situaties, problemen en redeneren in MAS. Modelleer de omgeving. Modelleer hoe agenten toegang hebben tot de omgeving. Stop dit allemaal in een theorie. Controleer de consistentie.
Multi-agent modelling Beschrijf de beginsituatie. Test welke conclusies hieruit volgen: provable(situation -> hypothesis, theory); Update de theorie als er meer informatie beschikbaar komt: newtheory =: concat(oldtheory, update);
Voorbeeld Muddy Children
Tenminste 1 kind heeft modder op zijn gezicht: at_least_one_muddy := muddy1 v muddy2 v muddy3; Kind 1 kan de andere kinderen zien: one_can_see_others := (muddy2 -> box1 muddy2) & (muddy3 -> box1 muddy3) & (~muddy2 -> box1 ~muddy2) & (~muddy3 -> box1 ~muddy3); Muddy Theorie: muddy_theory := [at_least_one_muddy, one_can_see_others, two_can_see_others, three_can_see_others]; Controle consistent(muddy_theory); => true
Muddy Children Alleen kind 3 heeft modder op zijn gezicht: situation1 := muddy3 & ~muddy2 & ~muddy1; provable(situation1 -> box3 muddy3, muddy_theory); => true Maar als er 2 kinderen zijn met modder op hun gezicht zijn er 2 stappen nodig. situation2 := muddy3 & muddy2 & ~muddy1; provable(situation2 -> box1 muddy1, muddy_theory); provable(situation2 -> box2 muddy2, muddy_theory); provable(situation2 -> box3 muddy3, muddy_theory); => false, false, false
Muddy Children Ze weten nu dat er minstens 2 kinderen zijn met modder standstill := ~box1 muddy1 & ~box2 muddy2 & ~box3 muddy3; at_least_two := (muddy1 & muddy2) v (muddy2 & muddy3) v (muddy1 & muddy3); provable( situation2 & standstill -> at_least_two, muddy_theory); => true
Muddy Children Vader vraagt het nog een keer muddy_theory2 := concat([at_least_two], muddy_theory); consistent(muddy_theory2); => true Nu weten kind 2 en 3 dat ze vies zijn provable(situation2 -> box2 muddy2, muddy_theory2); provable(situation2 -> box3 muddy3, muddy_theory2); => true, true
Samenvatting Web interface, en versies voor Linux/Mac Eenvoudige notatie –maar pas op voor box# bij modale logica Laad de juiste module(s) Controleer op consistentie