Praktikum 3 - MATCH-Funktion

mister_tt
Kernelcompilierer
Kernelcompilierer
Beiträge: 502
Registriert: 29. Sep 2008 15:54

Praktikum 3 - MATCH-Funktion

Beitrag von mister_tt »

Hallo zusammen,

Meine Gruppe und ich stehen gerade auf dem Schlauch... Warum führt der Aufruf MATCH(var(variable(0)) :: apply(func(0), ø) :: ø, var(variable(0)) :: apply(func(0), ø) :: ø) zu einem Blitz!? In unserer Kalkül-Darstellung wäre das doch \(\lbrace \lbrace v_0 \doteq v_0 ; f_0() \doteq f_0() \rbrace , \lbrace \rbrace \rbrace\) und das können wir doch mit Eliminate und anschließendem Decompose (was mit leerer Parameterliste doch ebenfalls ein Eliminate ist) auflösen... :?:

Viele Grüße,
Simon, Christian, Nadine und Ini

pigbird
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 28. Apr 2008 23:34

Re: Praktikum 3 - MATCH-Funktion

Beitrag von pigbird »

Hallo, ich habe die MATCH-Funktion nicht im Kopf, aber ich glaube die MATCH Funktion liefert uns eine Substitution (Result) nur wenn die zweite Liste saemtlich Grundterme enthaelt, was in deinem Beispiel nicht der Fall ist, und fuehrt zu einem Blitz.

_Peter_
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 170
Registriert: 1. Okt 2007 19:56

Re: Praktikum 3 - MATCH-Funktion

Beitrag von _Peter_ »

hmmm, das gleiche wollt ich auch grad fragen, sogar extra ne schöne Grafik erstellt gehabt:

Bild

Edit: Ach, da warn Fehler drin, man merkt, dass ich schon zu lang dran sitze, 5,6 und 7 müssten apply(func(), ø) sein.
Dann spuckt er Matcher aus...

Manolis
Mausschubser
Mausschubser
Beiträge: 61
Registriert: 29. Sep 2008 21:41
Wohnort: Frankfurt
Kontaktdaten:

Re: Praktikum 3 - MATCH-Funktion

Beitrag von Manolis »

Selbes Problem, keine Lösung. Die einzige Eingabe, die keinen ↯ ausgibt ist MATCH(ø, ø). Da kommt - wie zu erwarten war - return(ø) raus...
Hat noch jemand eine gültige Eingabe gefunden? Oder muss man bei den Eingaben etwas beachten?

edit: Ok, hat sich geklärt! Ganz dummer Fehler!!!
IT Consultant der msg systems ag und Hochschulpate (Alumnus) der TU Darmstadt

> Bei Fragen und Interesse kommt gerne auf mich zu: Manolis.Pavlakis@msg.group

pigbird
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 28. Apr 2008 23:34

Re: Praktikum 3 - MATCH-Funktion

Beitrag von pigbird »

wie gesagt, die zweite Liste, die MATCH-Funktion bekommt, darf nur Grundterme enthalten. Das Beispiel von mister_tt wird mit einer kleinen Änderung funktionieren:

Code: Alles auswählen

MATCH(var(variable(0)) :: apply(func(0), ø) :: ø, apply(func(0), ø) :: apply(func(0), ø) :: ø)

Manolis
Mausschubser
Mausschubser
Beiträge: 61
Registriert: 29. Sep 2008 21:41
Wohnort: Frankfurt
Kontaktdaten:

Re: Praktikum 3 - MATCH-Funktion

Beitrag von Manolis »

JA, zu beachten ist bei dem Problem Folie 31 aus Foliensatz 4. Das hab ich auch zuerst übersehen.
Das Matchingproblem
• Gegeben:
– Term t ∈ T (Σ, V) (genannt Pattern) sowie
– Grundterm q ∈ T (Σ) (genannt Target)
Auszug aus Beispiel 1:
Für t = h(g(x), y) und q = h(g(f (a)), h(a, f (b)))
(mit x, y ∈ V und f, g, h, a, b ∈ Σ)...
alle "Variablen" aus dem Target sind also aus Σ!

Hoffe, das hilft weiter :mrgreen:

und @ _Peter_:

Code: Alles auswählen

MATCH(
apply(func(4), apply(func(3), var(variable(0)) :: ø) :: var(variable(1)) :: ø) ,
apply(func(4), apply(func(3), apply(func(2), apply(func(0), ø) :: ø) :: ø) ::
      apply(func(4), apply(func(0), ø) :: apply(func(2), apply(func(1), ø) :: ø) :: ø) :: ø))
Bild

das sollte dein Problem lösen ;)
IT Consultant der msg systems ag und Hochschulpate (Alumnus) der TU Darmstadt

> Bei Fragen und Interesse kommt gerne auf mich zu: Manolis.Pavlakis@msg.group

Antworten

Zurück zu „Archiv“