Abstrakte Algebra - Hilfe bei Uni Aufgabe

Neue Frage »

Auf diesen Beitrag antworten »
Wawuri Abstrakte Algebra - Hilfe bei Uni Aufgabe

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.
 
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »