Hausaufgabe 2.2

Benutzeravatar
itportal2
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 236
Registriert: 25. Jan 2008 15:34
Wohnort: Darmstadt

Hausaufgabe 2.2

Beitrag von itportal2 »

Hallo,

\(eval_p(a) \in C(P)\). Wie kann ich es sicherstellen, dass \(eval_p(a)\) nicht einfach ein belibiger Konstruktor ist, sondern entweder \(true\), oder \(false\). Weil \(succ(0) \in C(P)\) geht prinzipiel auch, aber ist nicht in einem if als Bedingung zulässig. Und die Herleitungsregeln sagen nirgendwo explizit, dass bei \(if\{a, b, c\}\) \(eval_p(a)\) boolean sein soll.

Christoph-D
Computerversteher
Computerversteher
Beiträge: 325
Registriert: 11. Dez 2005 13:14
Wohnort: Darmstadt

Re: Hausaufgabe 2.2

Beitrag von Christoph-D »

Ihr dürft davon ausgehen, dass der Ausdruck korrekt typisiert ist. Es gilt also \(\mathit{eval}_P(a) \in \{\mathit{true, false}\}\).

Die Forderung steht tatsächlich nicht in der Aufgabe oder ich seh sie zumindest gerade nicht. Jedenfalls kann man den Berechnungskalkül nicht sinnvoll anwenden, wenn Typ-Fehler vorliegen.
"I believe in the fundamental interconnectedness of all things." (Dirk Gently)

Christoph Walther
Dozentin/Dozent
Beiträge: 86
Registriert: 1. Nov 2005 18:51

Re: Hausaufgabe 2.2

Beitrag von Christoph Walther »

itportal2 hat geschrieben:... die Herleitungsregeln sagen nirgendwo explizit, dass bei \(if\{a, b, c\}\) \(eval_p(a)\) boolean sein soll.
Da die Sprache des kalküls grundterme sind, muß man davon ausgehen, daß diese syntaktisch korrekt sind. Also gilt insbesondere, daß die typen der argumente einer funktionsanwendung instanzen der typen sind, die für das funktionssymbol angegeben wurden. Damit ist dann klar, daß "a" den typ "bool" besitzt, wenn "if{a, b, c}" ein grundterm ist.

cw.

Antworten

Zurück zu „Archiv“