Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Abstrakte Algebra - Hilfe bei Uni Aufgabe » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Abstrakte Algebra - Hilfe bei Uni Aufgabe
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Wawuri
Grünschnabel


Dabei seit: 23.11.2018
Beiträge: 1

Abstrakte Algebra - Hilfe bei Uni Aufgabe Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Guten Abend,

in der Uni kommen langsam knifflige Aufgaben dran, wo ich nicht mehr richtig weiter weiss.

Gegeben ist:
Es ist die abstrakte Algebra Keller = (t, "SUM", Q) mit der Signatur "SUM" = (S, F) gegeben:
S = { Keller, Element, BOOL, Nat }
F = { createStack; -> Keller, (F1)
push ; Keller × Element -> Keller, (F2)
pop ; Keller -> Keller, (F3)
top ; Keller -> Element, (F4)
size ; Keller -> Nat, (F5)
empty ; Keller -> BOOL } (F6)

Für die Menge der Axiome Q seien k ein Term der Sorte Keller und t ein Term der Sorte
Element.
Q = {
Q1; empty(createStack) -> true,
Q2; empty(push(k, t)) -> f alse,
Q3; pop(push(k, t)) -> k,
Q4; top(push(k, t)) -> t,
Q5; size(createStack) -> null,
Q6 <, size(push(k, t)) -> succ(size(k))
}

In der erste Aufgabe sollen wir Terme von Keller vereinfachen bis nur noch Konstanten oder Variablen erhalten sind, dazu sollen wir angeben welche Axiome wir verwendet haben.
1.)
a) pop(push(pop(push(push(s, x1), x2)), x3))
b) empty(pop(pop(push(push(createStack, x1), x2))))
c) top(pop(push(push(pop(push(createStack, x1)), x2), x3)))
d) size(push(push(pop(push(createStack, x1)), x2), x3))

dabei komme ich auf folgendes:
a) pop(push(pop(push(push(s, x1), x2)), x3)) |Axiom Q3
pop(push(push(s,x1)),x3) |Axiom Q3
push(s,x1)

b) empty(pop(pop(push(push(createStack, x1), x2)))) |Axiom Q3
empty(pop(push(createStack,x1))) |Axiom Q3
empty(createStack)

c) top(pop(push(push(pop(push(createStack, x1)), x2), x3))) |Axiom Q3
top(pop(push(push(createStack,x2),x3))) |Axiom Q3
top(push(createStack,x2)) |Axiom Q4
x2

d) size(push(push(pop(push(createStack, x1)), x2), x3)) |Axiom Q3
size(push(push(createStack,x2)),x3) |Axiom Q6
succ(size(push(createStack,x2))) |Axiom Q6
succ(succ(createStack))

Ich hoffe das das so richtig ist?

Bei Aufgabe 2 weiss ich dann leider nicht weiter:
2.) Fügen Sie zu Keller eine Operation pushStack hinzu, die den Inhalt eines Stacks auf
einen anderen stapelt, so dass die Reihenfolge der Elemente beider Keller erhalten
bleibt. Erweitern Sie hierfür zunächst die Menge F der Operationen.
Hinweis: Das zweite Argument der Funktion soll auf das erste „gestapelt“ werden.

Ich brauche ja so etwas wie:
pushStack; Keller x Keller -> Keller

aber wie beschreibe ich denn das die Elemente beider Keller erhalten bleibt?

Bei Aufgabe 3 bin ich auch ratlos:
3.) Fügen Sie nun zur Menge der Axiome Q alle nötigen Axiome für die Operation
pushStack hinzu.
Hinweis: Es werden mindestens zwei neue Axiome benötigt.
24.11.2018 00:23 Wawuri ist offline Beiträge von Wawuri suchen Nehmen Sie Wawuri in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Abstrakte Algebra - Hilfe bei Uni Aufgabe