Klausur Ws2009 Frage zu ADTs A8c)

A8c)

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Klausur Ws2009 Frage zu ADTs A8c)
Hier gehts erstmal zum Loesungsvorschlag der Frage 8c), den ich nicht ganz verstehe:

https://fsi.cs.fau.de/dw/pruefungen/bachelor/aud/loesungws09

Die Klaussurfrage dazu findet man auf StudOn unter AuD Organisatorisches, Fruehere Klausuren, 2010:
https://www.studon.fau.de/mep2365631.html

Meine Loesung zu der Aufgabe 8c) war folgende:

ops:

purge: String x MultiSet → MultiSet soweit noch alles gleich

axs:

purge (s, put(s, create)) = create //Hier unterscheidet sich mein Ansatz, im Loesungsvorschlag steht:
//purge(s, create) = create.
//Braucht man also drei axiome oder ist meins einfach unnoetig?

purge(s, put(x, m)) = { purge(s, m) falls s = x
{ put(x, purge(s, m)) sonst

Danke schonmal fuer Antworten


Irgendein Axiom, welches das create in sich hat, ist auf jeden Fall nötig, vor allem für den absoluten Basisfall ist dieses Axiom unverzichtbar.
purge(s, create()) = create()

Würde deine Lösung nun zB mit purge(“hallo”,create()) aufgerufen werden, passt kein Axiom. Du brauchst das gerade genannte also sicher.

Die Lösungen der FSI sind mMn die einzigen beiden komplett richtigen Wege, bei denen nichts zu viel ist, aber auch nichts vergessen wurde.

Ich mache es immer so, wenn ich mir unsicher bin ob ich zu viele Axiome habe, dass ich dieses Axiom einfach mal streiche und schaue, ob es immer noch funktioniert.