• Keine Ergebnisse gefunden

Das Parametrizitäts-Theorem [Reynolds 1983, Wadler 1989]

N/A
N/A
Protected

Academic year: 2022

Aktie "Das Parametrizitäts-Theorem [Reynolds 1983, Wadler 1989]"

Copied!
64
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Polymorpher Lambda-Kalkül [Girard 1972, Reynolds 1974]

Typen: τ :=α |τ →τ | ∀α.τ

Terme: t:=x |λx :τ.t |t t |Λα.t |t τ

Γ,x :τ `x :τ [[x]]θ,σ = σ(x)

Γ,x :τ1 `t :τ2

Γ`(λx :τ1.t) :τ1→τ2

[[λx :τ1.t]]θ,σ a = [[t]]θ,σ[x7→a]

Γ`t :τ1→τ2 Γ`u :τ1

Γ`(t u) :τ2 [[t u]]θ,σ = [[t]]θ,σ [[u]]θ,σ α,Γ`t:τ

Γ`(Λα.t) :∀α.τ [[Λα.t]]θ,σ S = [[t]]θ[α7→S],σ Γ`t:∀α.τ

Γ`(t τ0) :τ[τ0/α] [[t τ0]]θ,σ = [[t]]θ,σ [[τ0]]θ

1

(2)

Das Parametrizitäts-Theorem [Reynolds 1983, Wadler 1989]

Gegebenτ und Environments θ1, θ2, ρmitρ(α)⊆θ1(α)×θ2(α), definiere∆τ,ρ ⊆[[τ]]θ1 ×[[τ]]θ2 wie folgt:

α,ρ = ρ(α)

τ1→τ2 = {(f1,f2) | ∀(a1,a2)∈∆τ1.(f1 a1,f2 a2)∈∆τ2}

∀α.τ,ρ = {(g1,g2) | ∀R ⊆S1×S2.(g1 S1,g2 S2)∈∆τ,ρ[α7→R]}

Dann gilt für jeden geschlossenen Termt geschlossenen Typsτ: ([[t]]∅,∅,[[t]]∅,∅)∈∆τ,∅.

(3)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

3

(4)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach.

In den anderen Fällen:

(5)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

Γ,x :τ1`t:τ2

Γ`(λx :τ1.t) :τ1 →τ2

3

(6)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

Γ,x :τ1`t:τ2

([[λx :τ1.t]]θ11,[[λx :τ1.t]]θ22)∈∆τ1→τ2

(7)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

∀(a1,a2)∈∆τ1.([[t]]θ11[x7→a1],[[t]]θ22[x7→a2])∈∆τ2

([[λx :τ1.t]]θ11,[[λx :τ1.t]]θ22)∈∆τ1→τ2

3

(8)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

∀(a1,a2)∈∆τ1.([[t]]θ11[x7→a1],[[t]]θ22[x7→a2])∈∆τ2

([[λx :τ1.t]]θ11,[[λx :τ1.t]]θ22)∈∆τ1→τ2

Γ`t:τ1 →τ2 Γ`u:τ1

Γ`(t u) :τ2

(9)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

∀(a1,a2)∈∆τ1.([[t]]θ11[x7→a1],[[t]]θ22[x7→a2])∈∆τ2

([[λx :τ1.t]]θ11,[[λx :τ1.t]]θ22)∈∆τ1→τ2

Γ`t:τ1 →τ2 Γ`u:τ1

([[t u]]θ11,[[t u]]θ22)∈∆τ2

3

(10)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

∀(a1,a2)∈∆τ1.([[t]]θ11[x7→a1],[[t]]θ22[x7→a2])∈∆τ2

([[λx :τ1.t]]θ11,[[λx :τ1.t]]θ22)∈∆τ1→τ2

([[t]]θ11,[[t]]θ22)∈∆τ1→τ2 ([[u]]θ11,[[u]]θ22)∈∆τ1

([[t u]]θ11,[[t u]]θ22)∈∆τ2

(11)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

∀(a1,a2)∈∆τ1.([[t]]θ11[x7→a1],[[t]]θ22[x7→a2])∈∆τ2

([[λx :τ1.t]]θ11,[[λx :τ1.t]]θ22)∈∆τ1→τ2

([[t]]θ11,[[t]]θ22)∈∆τ1→τ2 ([[u]]θ11,[[u]]θ22)∈∆τ1

([[t u]]θ11,[[t u]]θ22)∈∆τ2

α,Γ`t :τ Γ`(Λα.t) :∀α.τ

3

(12)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

∀(a1,a2)∈∆τ1.([[t]]θ11[x7→a1],[[t]]θ22[x7→a2])∈∆τ2

([[λx :τ1.t]]θ11,[[λx :τ1.t]]θ22)∈∆τ1→τ2

([[t]]θ11,[[t]]θ22)∈∆τ1→τ2 ([[u]]θ11,[[u]]θ22)∈∆τ1

([[t u]]θ11,[[t u]]θ22)∈∆τ2

α,Γ`t :τ

([[Λα.t]]θ11,[[Λα.t]]θ22)∈∆∀α.τ,ρ

(13)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

∀(a1,a2)∈∆τ1.([[t]]θ11[x7→a1],[[t]]θ22[x7→a2])∈∆τ2

([[λx :τ1.t]]θ11,[[λx :τ1.t]]θ22)∈∆τ1→τ2

([[t]]θ11,[[t]]θ22)∈∆τ1→τ2 ([[u]]θ11,[[u]]θ22)∈∆τ1

([[t u]]θ11,[[t u]]θ22)∈∆τ2

∀R ⊆S1×S2.([[t]]θ1[α7→S1],σ1,[[t]]θ2[α7→S2],σ2)∈∆τ,ρ[α7→R]

([[Λα.t]]θ11,[[Λα.t]]θ22)∈∆∀α.τ,ρ

3

(14)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

∀(a1,a2)∈∆τ1.([[t]]θ11[x7→a1],[[t]]θ22[x7→a2])∈∆τ2

([[λx :τ1.t]]θ11,[[λx :τ1.t]]θ22)∈∆τ1→τ2

([[t]]θ11,[[t]]θ22)∈∆τ1→τ2 ([[u]]θ11,[[u]]θ22)∈∆τ1

([[t u]]θ11,[[t u]]θ22)∈∆τ2

∀R ⊆S1×S2.([[t]]θ1[α7→S1],σ1,[[t]]θ2[α7→S2],σ2)∈∆τ,ρ[α7→R]

([[Λα.t]]θ11,[[Λα.t]]θ22)∈∆∀α.τ,ρ

Γ`t :∀α.τ Γ`(t τ0) :τ[τ0/α]

(15)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

∀(a1,a2)∈∆τ1.([[t]]θ11[x7→a1],[[t]]θ22[x7→a2])∈∆τ2

([[λx :τ1.t]]θ11,[[λx :τ1.t]]θ22)∈∆τ1→τ2

([[t]]θ11,[[t]]θ22)∈∆τ1→τ2 ([[u]]θ11,[[u]]θ22)∈∆τ1

([[t u]]θ11,[[t u]]θ22)∈∆τ2

∀R ⊆S1×S2.([[t]]θ1[α7→S1],σ1,[[t]]θ2[α7→S2],σ2)∈∆τ,ρ[α7→R]

([[Λα.t]]θ11,[[Λα.t]]θ22)∈∆∀α.τ,ρ

Γ`t :∀α.τ

([[t τ0]]θ11,[[t τ0]]θ22)∈∆τ[τ0/α],ρ

3

(16)

Beweis-Skizze

Beweise folgende allgemeinere Aussage:

Γ`t :τ impliziert ([[t]]θ11,[[t]]θ22)∈∆τ,ρ ,

vorausgesetzt(σ1(x), σ2(x))∈∆τ0 für jedesx :τ0 inΓ per Induktion über die Struktur von Typableitungen.

Der Basis-Fall is einfach. In den anderen Fällen:

∀(a1,a2)∈∆τ1.([[t]]θ11[x7→a1],[[t]]θ22[x7→a2])∈∆τ2

([[λx :τ1.t]]θ11,[[λx :τ1.t]]θ22)∈∆τ1→τ2

([[t]]θ11,[[t]]θ22)∈∆τ1→τ2 ([[u]]θ11,[[u]]θ22)∈∆τ1 ([[t u]]θ11,[[t u]]θ22)∈∆τ2

∀R ⊆S1×S2.([[t]]θ1[α7→S1],σ1,[[t]]θ2[α7→S2],σ2)∈∆τ,ρ[α7→R]

([[Λα.t]]θ11,[[Λα.t]]θ22)∈∆∀α.τ,ρ

([[t]]θ11,[[t]]θ22)∈∆∀α.τ,ρ

([[t τ0]]θ11,[[t τ0]]θ22)∈∆τ[τ0/α],ρ

(17)

Hinzufügen von Datentypen

Typen: τ := · · · |Bool |[τ]

Terme: t:= · · · | True|False|[ ]τ |t :t |caset of {· · · }

Γ`True:Bool , Γ`False:Bool , Γ`[ ]τ : [τ] Γ`t :τ Γ`u : [τ]

Γ`(t :u) : [τ]

Γ`t:Bool Γ`u :τ Γ`v :τ Γ`(caset of {True→u;False→v}) :τ Γ`t: [τ0] Γ`u:τ Γ,x10,x2 : [τ0]`v :τ

Γ`(caset of {[]→u; (x1 :x2)→v}) :τ Mit „offensichtlichen“ Erweiterungen der Semantik und mit

Bool,ρ = {(True,True),(False,False)}

[τ],ρ = {([x1, . . . ,xn],[y1, . . . ,yn]) |n≥0,(xi,yi)∈∆τ,ρ}, ist das Parametrizitäts-Theorem immer noch erfüllt.

4

(18)

Hinzufügen von Datentypen

Typen: τ := · · · |Bool |[τ]

Terme: t:= · · · | True|False|[ ]τ |t :t |caset of {· · · } Γ`True:Bool , Γ`False:Bool , Γ`[ ]τ : [τ]

Γ`t :τ Γ`u : [τ] Γ`(t :u) : [τ]

Γ`t:Bool Γ`u :τ Γ`v :τ Γ`(caset of {True→u;False→v}) :τ Γ`t: [τ0] Γ`u:τ Γ,x10,x2 : [τ0]`v :τ

Γ`(caset of {[]→u; (x1 :x2)→v}) :τ

Mit „offensichtlichen“ Erweiterungen der Semantik und mit

Bool,ρ = {(True,True),(False,False)}

[τ],ρ = {([x1, . . . ,xn],[y1, . . . ,yn]) |n≥0,(xi,yi)∈∆τ,ρ}, ist das Parametrizitäts-Theorem immer noch erfüllt.

(19)

Hinzufügen von Datentypen

Typen: τ := · · · |Bool |[τ]

Terme: t:= · · · | True|False|[ ]τ |t :t |caset of {· · · } Γ`True:Bool , Γ`False:Bool , Γ`[ ]τ : [τ]

Γ`t :τ Γ`u : [τ] Γ`(t :u) : [τ]

Γ`t:Bool Γ`u :τ Γ`v :τ Γ`(caset of {True→u;False→v}) :τ Γ`t: [τ0] Γ`u:τ Γ,x10,x2 : [τ0]`v :τ

Γ`(caset of {[]→u; (x1 :x2)→v}) :τ Mit „offensichtlichen“ Erweiterungen der Semantik und mit

Bool,ρ = {(True,True),(False,False)}

[τ],ρ = {([x1, . . . ,xn],[y1, . . . ,yn]) |n≥0,(xi,yi)∈∆τ,ρ}, ist das Parametrizitäts-Theorem immer noch erfüllt.

4

(20)

Typklassen

Für jedes

g:: [α]→[α]

hatten wir

g (mapf l) = map f (g l) für beliebigef undl.

Was ist mit

g::Eq α⇒[α]→[α] ? Obiges freies Theorem schlägt fehl!

Gegenbeispiel:g=nub,f =const1 undl = [1,2].

(21)

Typklassen

Für jedes

g:: [α]→[α]

hatten wir

g (mapf l) = map f (g l) für beliebigef undl.

Was ist mit

g::Eqα ⇒[α]→[α] ?

Obiges freies Theorem schlägt fehl!

Gegenbeispiel:g=nub,f =const1 undl = [1,2].

5

(22)

Typklassen

Für jedes

g:: [α]→[α]

hatten wir

g (mapf l) = map f (g l) für beliebigef undl.

Was ist mit

g::Eqα ⇒[α]→[α] ? Obiges freies Theorem schlägt fehl!

Gegenbeispiel:g=nub,f =const1 undl = [1,2].

(23)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g:: [α]→[α]muss für jede mögliche Instanziierung vonα einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

• Die Listen(mapf l) undl haben stets die selbe Länge.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Argumentation gelungen!

6

(24)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g::Eqα⇒[α]→[α]muss für jede mögliche Instanziierung von α einheitlicharbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

Falsch! Auch möglich: Elemente vonl auf Gleichheit testen.

• Die Listen(mapf l) undl haben stets die selbe Länge. Aber Gleichheitstests innerhalb beider Listen liefern nicht notwendigerweise immer das selbe Ergebnis!

Sie tun es, wennf „injektiv“ ist.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut,

außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Dies liefert ein verfeinertes freies Theorem!

(25)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g::Eqα⇒[α]→[α]muss für jede mögliche Instanziierung von α einheitlich arbeiten.

• Die Ausgabeliste kann nurElemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

Falsch! Auch möglich: Elemente vonl auf Gleichheit testen.

• Die Listen(mapf l) undl haben stets die selbe Länge. Aber Gleichheitstests innerhalb beider Listen liefern nicht notwendigerweise immer das selbe Ergebnis!

Sie tun es, wennf „injektiv“ ist.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut,

außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Dies liefert ein verfeinertes freies Theorem!

7

(26)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g::Eqα⇒[α]→[α]muss für jede mögliche Instanziierung von α einheitlich arbeiten.

• Die Ausgabeliste kann nurElemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglichvon l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

Falsch! Auch möglich: Elemente vonl auf Gleichheit testen.

• Die Listen(mapf l) undl haben stets die selbe Länge. Aber Gleichheitstests innerhalb beider Listen liefern nicht notwendigerweise immer das selbe Ergebnis!

Sie tun es, wennf „injektiv“ ist.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut,

außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Dies liefert ein verfeinertes freies Theorem!

(27)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g::Eqα⇒[α]→[α]muss für jede mögliche Instanziierung von α einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglichvon l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

Falsch! Auch möglich: Elemente vonl auf Gleichheit testen.

• Die Listen(mapf l) undl haben stets die selbe Länge. Aber Gleichheitstests innerhalb beider Listen liefern nicht notwendigerweise immer das selbe Ergebnis!

Sie tun es, wennf „injektiv“ ist.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut,

außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Dies liefert ein verfeinertes freies Theorem!

7

(28)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g::Eqα⇒[α]→[α]muss für jede mögliche Instanziierung von α einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglichvon l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

Falsch! Auch möglich: Elemente vonl auf Gleichheit testen.

• Die Listen(mapf l) undl haben stets die selbe Länge. Aber Gleichheitstests innerhalb beider Listen liefern nicht notwendigerweise immer das selbe Ergebnis!

Sie tun es, wennf „injektiv“ ist.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut,

außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Dies liefert ein verfeinertes freies Theorem!

(29)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g::Eqα⇒[α]→[α]muss für jede mögliche Instanziierung von α einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

Falsch! Auch möglich: Elemente vonl auf Gleichheit testen.

• Die Listen(mapf l) undl haben stets die selbe Länge.

Aber Gleichheitstests innerhalb beider Listen liefern nicht notwendigerweise immer das selbe Ergebnis!

Sie tun es, wennf „injektiv“ ist.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut,

außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Dies liefert ein verfeinertes freies Theorem!

7

(30)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g::Eqα⇒[α]→[α]muss für jede mögliche Instanziierung von α einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

Falsch! Auch möglich: Elemente vonl auf Gleichheit testen.

• Die Listen(mapf l) undl haben stets die selbe Länge.

Aber Gleichheitstests innerhalb beider Listen liefern nicht notwendigerweise immer das selbe Ergebnis!

Sie tun es, wennf „injektiv“ ist.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut,

außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Dies liefert ein verfeinertes freies Theorem!

(31)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g::Eqα⇒[α]→[α]muss für jede mögliche Instanziierung von α einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

Falsch! Auch möglich: Elemente vonl auf Gleichheit testen.

• Die Listen(mapf l) undl haben stets die selbe Länge.

Aber Gleichheitstests innerhalb beider Listen liefern nicht notwendigerweise immer das selbe Ergebnis!

Sie tun es, wennf „injektiv“ ist.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut,

außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Dies liefert ein verfeinertes freies Theorem!

7

(32)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g::Eqα⇒[α]→[α]muss für jede mögliche Instanziierung von α einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

Falsch! Auch möglich: Elemente vonl auf Gleichheit testen.

• Die Listen(mapf l) undl haben stets die selbe Länge.

Aber Gleichheitstests innerhalb beider Listen liefern nicht notwendigerweise immer das selbe Ergebnis!

Sie tun es,wennf „injektiv“ ist.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut,

außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Dies liefert ein verfeinertes freies Theorem!

(33)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g::Eqα⇒[α]→[α]muss für jede mögliche Instanziierung von α einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

Falsch! Auch möglich: Elemente vonl auf Gleichheit testen.

• Die Listen(mapf l) undl haben stets die selbe Länge.

Aber Gleichheitstests innerhalb beider Listen liefern nicht notwendigerweise immer das selbe Ergebnis!

Sie tun es,wennf „injektiv“ ist.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut,außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Dies liefert ein verfeinertes freies Theorem!

7

(34)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g::Eqα⇒[α]→[α]muss für jede mögliche Instanziierung von α einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

Falsch! Auch möglich: Elemente vonl auf Gleichheit testen.

• Die Listen(mapf l) undl haben stets die selbe Länge.

Aber Gleichheitstests innerhalb beider Listen liefern nicht notwendigerweise immer das selbe Ergebnis!

Sie tun es,wennf „injektiv“ ist.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Dies liefert ein verfeinertes freies Theorem!

(35)

Warum g (map f l ) = map f (g l ), intuitiv gesehen

• g::Eqα⇒[α]→[α]muss für jede mögliche Instanziierung von α einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l abhängen.

• Die einzig mögliche Grundlage zur Entscheidung ist die Länge vonl.

Falsch! Auch möglich: Elemente vonl auf Gleichheit testen.

• Die Listen(mapf l) undl haben stets die selbe Länge.

Aber Gleichheitstests innerhalb beider Listen liefern nicht notwendigerweise immer das selbe Ergebnis!

Sie tun es,wennf „injektiv“ ist.

• Also wählt gstets „die selben“ Elemente aus (map f l) wie es dies aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter f ausgegeben werden.

• Also ist (g (mapf l))gleich(mapf (g l)).

• Dies liefert ein verfeinertes freies Theorem! 7

(36)

Formaler: Dictionary Translation

Jedes

g::Eqα ⇒[α]→[α]

kann als ein

g0:: (α →α→Bool)→[α]→[α]

angesehen werden

, wobei für jeden Instanztyp τ von Eq, gτ = g0τ (==)τ

Das freie Theorem fürg0 besagt, dass

g0 p (mapf l) = map f (g0 q l),

vorausgesetzt, dass für allex undy,q x y =p (f x) (f y). Dies bedeutet, dass

g0 (==) (mapf l) = map f (g0 (==) l),

vorausgesetzt, dass für allex undy,x ==y gdw.(f x) == (f y).

(37)

Formaler: Dictionary Translation

Jedes

g::Eqα ⇒[α]→[α]

kann als ein

g0:: (α →α→Bool)→[α]→[α]

angesehen werden, wobei für jeden Instanztypτ von Eq, gτ = g0τ (==)τ

Das freie Theorem fürg0 besagt, dass

g0 p (mapf l) = map f (g0 q l),

vorausgesetzt, dass für allex undy,q x y =p (f x) (f y). Dies bedeutet, dass

g0 (==) (mapf l) = map f (g0 (==) l),

vorausgesetzt, dass für allex undy,x ==y gdw.(f x) == (f y).

8

(38)

Formaler: Dictionary Translation

Jedes

g::Eqα ⇒[α]→[α]

kann als ein

g0:: (α →α→Bool)→[α]→[α]

angesehen werden, wobei für jeden Instanztypτ von Eq, gτ = g0τ (==)τ

Das freie Theorem fürg0 besagt, dass

g0 p (mapf l) = map f (g0 q l),

vorausgesetzt, dass für allex undy,q x y =p (f x) (f y).

Dies bedeutet, dass

g0 (==) (mapf l) = map f (g0 (==) l),

vorausgesetzt, dass für allex undy,x ==y gdw.(f x) == (f y).

(39)

Formaler: Dictionary Translation

Jedes

g::Eqα ⇒[α]→[α]

kann als ein

g0:: (α →α→Bool)→[α]→[α]

angesehen werden, wobei für jeden Instanztypτ von Eq, gτ = g0τ (==)τ

Das freie Theorem fürg0 besagt, dass

g0 p (mapf l) = map f (g0 q l),

vorausgesetzt, dass für allex undy,q x y =p (f x) (f y).

Dies bedeutet, dass

g0 (==) (mapf l) = map f (g0 (==) l),

vorausgesetzt, dass für allex undy,x ==y gdw.(f x) == (f y).

8

(40)

Formaler: Dictionary Translation

Jedes

g::Eqα ⇒[α]→[α]

kann als ein

g0:: (α →α→Bool)→[α]→[α]

angesehen werden, wobei für jeden Instanztypτ von Eq, gτ = g0τ (==)τ

Das freie Theorem fürg0 besagt, dass

g0 p (mapf l) = map f (g0 q l),

vorausgesetzt, dass für allex undy,q x y =p (f x) (f y).

Dies bedeutet, dass

g (mapf l) = map f (g l),

vorausgesetzt, dass für allex undy,x ==y gdw.(f x) == (f y).

(41)

Weiteres wichtiges Konstrukt: Allgemeine Rekursion

Wir hatten für jedes

g:: (a→Bool)→[a]→[a]

behauptet, dass

g p (map h l) = map h (g (p◦h) l) für beliebigep,h undl.

Was ist mit

g:: (a→Bool)→[a]→[a] g p l = [head(g p l)] ? Obiges freies Theorem schlägt fehl!

Gegenbeispiel:p=id,h =constTrue und l = [ ].

9

(42)

Weiteres wichtiges Konstrukt: Allgemeine Rekursion

Wir hatten für jedes

g:: (a→Bool)→[a]→[a]

behauptet, dass

g p (map h l) = map h (g (p◦h) l) für beliebigep,h undl.

Was ist mit

g:: (a→Bool)→[a]→[a]

g p l = [head (g p l)] ?

Obiges freies Theorem schlägt fehl!

Gegenbeispiel:p=id,h =constTrue und l = [ ].

(43)

Weiteres wichtiges Konstrukt: Allgemeine Rekursion

Wir hatten für jedes

g:: (a→Bool)→[a]→[a]

behauptet, dass

g p (map h l) = map h (g (p◦h) l) für beliebigep,h undl.

Was ist mit

g:: (a→Bool)→[a]→[a]

g p l = [head (g p l)] ? Obiges freies Theorem schlägt fehl!

Gegenbeispiel:p=id,h=constTrue und l = [ ].

9

(44)

Versuch einer Argumentation

• g:: (a→Bool)→[a]→[a]muss für jede mögliche Instanziierung vona einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl.

• Aber, die Listen (map h l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

• Also wählt gmitp stets „die selben“ Elemente aus(maph l) wie es g mit(p◦h) aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)).

• Genau das wollten wir beweisen!

(45)

Versuch einer Argumentation

• g:: (a→Bool)→[a]→[a]muss für jede mögliche Instanziierung vona einheitlicharbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten. Falsch! Auch möglich:⊥.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl. Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (maph l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥, vorausgesetzt hist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(map h l) wie es g mit(p◦h) aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden. Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)), wennh strikt ist.

11

(46)

Versuch einer Argumentation

• g:: (a→Bool)→[a]→[a]muss für jede mögliche Instanziierung vona einheitlich arbeiten.

• Die Ausgabeliste kann nurElemente der Eingabe l enthalten.

Falsch! Auch möglich:⊥.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl. Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (maph l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥, vorausgesetzt hist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(map h l) wie es g mit(p◦h) aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden. Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)), wennh strikt ist.

(47)

Versuch einer Argumentation

• g:: (a→Bool)→[a]→[a]muss für jede mögliche Instanziierung vona einheitlich arbeiten.

• Die Ausgabeliste kann nurElemente der Eingabe l enthalten.

Falsch! Auch möglich:⊥.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl. Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (maph l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥, vorausgesetzt hist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(map h l) wie es g mit(p◦h) aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden. Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)), wennh strikt ist.

11

(48)

Versuch einer Argumentation

• g:: (a→Bool)→[a]→[a]muss für jede mögliche Instanziierung vona einheitlich arbeiten.

• Die Ausgabeliste kann nurElemente der Eingabe l enthalten.

Falsch! Auch möglich:⊥.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglichvon l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl. Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (maph l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥, vorausgesetzt hist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(map h l) wie es g mit(p◦h) aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden. Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)), wennh strikt ist.

(49)

Versuch einer Argumentation

• g:: (a→Bool)→[a]→[a]muss für jede mögliche Instanziierung vona einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

Falsch! Auch möglich:⊥.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglichvon l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl.

Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (maph l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥, vorausgesetzt hist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(map h l) wie es g mit(p◦h) aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden. Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)), wennh strikt ist.

11

(50)

Versuch einer Argumentation

• g:: (a→Bool)→[a]→[a]muss für jede mögliche Instanziierung vona einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

Falsch! Auch möglich:⊥.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl.

Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (maph l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥, vorausgesetzt hist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(map h l) wie es g mit(p◦h) aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden. Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)), wennh strikt ist.

(51)

Versuch einer Argumentation

• g:: (a→Bool)→[a]→[a]muss für jede mögliche Instanziierung vona einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

Falsch! Auch möglich:⊥.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl.

Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (map h l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥, vorausgesetzt hist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(map h l) wie es g mit(p◦h) aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden. Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)), wennh strikt ist.

11

(52)

Versuch einer Argumentation

• g:: (a→Bool)→[a]→[a]muss für jede mögliche Instanziierung vona einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

Falsch! Auch möglich:⊥.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl.

Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (map h l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥, vorausgesetzt hist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(map h l) wie es g mit(p◦h) aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden. Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)), wennh strikt ist.

(53)

Versuch einer Argumentation

• g:: (a→Bool)→[a]→[a]muss für jede mögliche Instanziierung vona einheitlich arbeiten.

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

Falsch! Auch möglich:⊥.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl.

Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (map h l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥, vorausgesetzt hist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(map h l) wie es g mit(p◦h) aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden. Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)), wennh strikt ist.

11

(54)

Versuch einer Argumentation

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

Falsch! Auch möglich:⊥.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl.

Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (map h l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥,vorausgesetzthist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(maph l) wie es g mit(p◦h) aus l tut,

außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden. Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)), wennh strikt ist.

(55)

Versuch einer Argumentation

• Die Ausgabeliste kann nur Elemente der Eingabe l enthalten.

Falsch! Auch möglich:⊥.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl.

Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (map h l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥,vorausgesetzthist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(maph l) wie es g mit(p◦h) aus l tut,außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden.

Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)), wennh strikt ist.

11

(56)

Versuch einer Argumentation

Falsch! Auch möglich:⊥.

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl.

Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (map h l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥,vorausgesetzthist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(maph l) wie es g mit(p◦h) aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden.

Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)), wennh strikt ist.

(57)

Versuch einer Argumentation

• Welche, und in welcher Reihenfolge/Vielfachheit, kann lediglich von l und dem Eingabeprädikatp abhängen.

• Die einzig möglichen Grundlagen zur Entscheidung sind die Länge vonl und die Ergebnisse vonp auf Elementen vonl.

Falsch! Weitere mögliche Grundlage: Ergebnis von p auf⊥.

• Aber, die Listen (map h l) undl haben stets die selbe Länge.

• Und Anwendung vonp auf ein Element von(maph l)hat stets das selbe Ergebnis wie Anwendung von(p◦h) auf das

entsprechende Element von l.

Und Anwendung vonp auf ⊥hat das selbe Ergebnis wie

Anwendung von(p◦h)auf ⊥,vorausgesetzthist strikt (h ⊥=⊥).

• Also wählt gmitp stets „die selben“ Elemente aus(maph l) wie es g mit(p◦h) aus l tut, außer dass im ersten Fall die entsprechenden Abbilder unter h ausgegeben werden.

Aber sie könnten auch, an gleichen Positionen,⊥ausgeben.

• Also ist (g p (map h l)) gleich(map h (g (p◦h)l)),

wennh strikt ist.

11

Referenzen

ÄHNLICHE DOKUMENTE

Wenn man die Graphen der trigonometrischen Funktionen aufzeichnen will, dann verwendet man auf der x-Achse zunächst das Gradmass, was aber mathematisch nicht präzise ist, denn auf

Wenn man sich das Bild räumlich vorstellt, kann man einen DNA-Strang

Die senkrechten Strecken sollen den räumlichen Eindruck

Jeder natürlichen Zahl werden ihre Teiler zugeordnet.. Jeder reellen Zahl wird ihr

Scheitel Nullstellen Schnittpunkte Extremwert Zeichnung... Den

Scheitel Nullstellen Schnittpunkte Extremwert Zeichnung... Den

Schreiben Sie auch eine rekursive Funktion, die die Quersumme zu einer gegebenen Zahl berechnet2.

Schreiben Sie ein C-Programm, das nach dieser Methode die Exponentialfunktion zu einer gegebenen Zahl x berechnet.. Beenden Sie das Aufsummieren, wenn ein Term kleiner als 10