Gut, dann begrüße ich sie zum Wochenende, aber für sie bald
auch tatsächliches Wochenende. Heute allerdings noch einmal ein bisschen arbeiten.
Was ist das Thema heute? Das Thema hier in der Vorlesung,
zumindest Theoreme, Zugleichheit, Lammende Ausdrücke mit dem zweiten,
fangen wir an und suchen,
das sind noch so ein paar Dinge,
die ich einfach mit ihm besprechen will,
weil sie die,
wenn sie mit Cock umgehen wollen und werden,
So, also der Fahrplan sieht entsprechend aus.
Und ich spreche jetzt, wie gesagt, zunächst über Lamda-Ausdrücke.
Und ich muss sagen, was ich jetzt sage,
ist alles nicht die ganz, die Wahrheit.
Das ist eigentlich nicht mal die halbe Wahrheit. Wir haben da Ausdrücke,
sind noch für viel, viel, viel,
viel mehr gut als das, was ich Ihnen jetzt sage.
Ich versuche es wirklich auf das runterzubrechen, was wir hier
in dieser Veranstaltung brauchen. Wenn Sie also irgendwann merken,
das kann ja viel mehr und warum hat er
denn davon nichts gesagt,
man muss irgendwo Auswahlen treffen
Für uns sind Lamme Ausdrücke in erster Weise eine alternative Schreibweise für Funktionen.
Und zwar derart, dass wir ihnen keine expliziten Namen geben müssen.
Also normalerweise haben wir eine Schreibweise von Funktionen wie folgt,
F-Doppelpunkt, also 11, eine Funktion von A nach B, mit F von Klein A gleich B.
Und als Lamme Ausdruck sieht das dann wie folgt aus,
die Funktion, Lamna A, Doppelpunkt A, FA.
So können wir die Funktion angeben. Nehmen wir mal ein weiteres Beispiel,
folgende Funktion F von den natürlichen Zahlen, in die natürlichen Zahlen mit,
oder ich hätte es vielleicht F und N genannt, aber ist egal,
F von A gleich 2A. Wir schreiben es als Lamnatherr,
Lamna A aus dem Typ der natürlichen Zahlen,
zweimal A. Sie schreiben eigentlich auch hier wieder so eine kleine Geschichte.
Sie schreiben eigentlich einen Punkt und keinen Komma. Aber jetzt
in Bezug auf Cock wieder mit dem Punkt kann er nicht umgehen,
weil der Punkt, Ende des nächsten Befehls bedeutet,
also machen wir hier einen Komma.
Und was auch wichtig ist und was so ein bisschen auch in
den Übungen schon immer mal irgendwie als Rückfrage in der einen oder anderen Form dran kam,
ist die Frage, wie mache ich das eigentlich
Mit mehreren Argumenten, wenn ich mehrere Argumente reinbekomme.
Und es ist üblich, in funktionaler Programmierung, das,
was wir hier machen, ist recht nah daran.
Das sogenannte Currying zu benutzen. Das heißt also,
anstatt ein Endtupel reinzubekommen,
nehmen wir immer nur einen Wert herein und was wir rausgeben,
ist dann wieder eine Funktion,
die die restlichen Argumente erwartet
Also, anstatt, dass wir eine Funktion haben,
11 von der 1, Kreuz A2,
Kreuz und so weiter, bis Kreuz AN, nach B,
machen wir daraus eine Funktion auf Strich, die sagt,
du kriegst nur ein Argument, nämlich aus A1.
Und das, wohin die Funktion dann abbildet, ist dann jeder eine Funktion,
der ein Argument aus A2 bekommt. Und das,
wohin diese Funktion abbildet, ist dann wieder eine Funktion,
so weiter, so weiter, bis am Ende eine Funktion herauskommt,
die, wenn sie ein Argument aus AN reinbekommt,
Ein Argument aus B herausgibt.
Schauen wir uns das hier mal am Beispiel an.
Wir haben hier F, eine zweistellige Funktion,
Ancreuz N, nach Ellen, mit F von AB,
gleich Amal, wie also eigentlich einfach die Multiplikation.
Ja. Und wie können wir das jetzt mit Lande ausdrücken
, handhaben? Das sehen wir hier. Wir schreiben,
Lande A vom Typen
Lamna B vom Typen N. Und dann A mal B.
So, und jetzt sind wir noch mal was passiert,
wenn wir das schrittweise anwenden. Wir wollen also diese Funktion,
die wir jetzt in Lamnaform haben, anwenden auf drei und auf fünf,
wir wollen also drei mal fünf erhalten.
Was tun wir? Wir schreiben die Funktion hin, Das ist jetzt unsere Funktion.
Und wir werden sie auf drei an, hier ist eine Lehrstelle.
Hätte etwas größer vielleicht sein können. Und hier ist eine
Fünf. So, und was jetzt passiert,
ich zeige Ihnen das jetzt mal, ist Folgendes. Diese Funktion hier,
wenn wir jetzt nicht direkt auf das Tupel an,
wie das hier der Fall wäre, sondern gemäß dem Curring,
wir werden es erst mal auf diese drei hier an,
was herauskommt, ist wieder eine Funktion.
Aber jetzt seine Funktion, die nur noch ein Argument erwartet,
Und, je nachdem, welches B ich hier eingebe, immer dreimal B ausrechnet.
Und nun, nachdem ich diese Teilauswertung gemacht habe,
kann ich den Therm weiter auswerten,
indem ich jetzt für dieses B hier die fünf Einsätze,
also das habe ich nicht explizit gesagt,
das sage ich vielleicht auch noch mal,
hier haben wir diese drei für dieses A eingesetzt und es
bleibt der restliche Therm übrig,
wo wir für das A
eben die drei einsetzen
Das ist das, was hier passiert ist.
Wenn wir das jetzt hier machen, dann erwarten wir,
dass 3 mal 5 übrig bleibt und genau so ist es auch.
Klammern können wir dann auch weglassen. Gut. Gibt es erstmal soweit Fragen?
Also wir schreiben diese Landeausdrücke auf für Funktionen. Sie sehen,
während ich hier irgendwie sagen musste, F ist eine Funktion von tatatatatata,
kann ich hier einfach die Funktion hinschreiben, ohne deren Namen geben zu müssen.
Das ist praktisch, wenn man eine Funktion,
sogenannte anonyme Funktion innerhalb von irgendwelchen Beweisen braucht.
Das werden wir gleich auch, glaube ich,
noch einmal in Anwendung sehen, wo man das benötigen kann.
Und das Einsetzen in diese Funktion passiert,
indem wir eben so ein, immer das vorderste Lamna nehmen,
den ersten Wert hier hinten einsetzen,
dann dieses Lamna streichen und dieses, also die zugehörige Abstraktion,
die Variable, über die hier abstrahiert wird mit dem Lamna,
durch das drei hier setzen,
durch diese drei ersetzen
Du, das machst du, das ist doch immer alles so.
Ja, das ist ja funktionale Promium, genau, Funktionalprogrammierung allgemein.
So, dann brauche ich mal den Stuhl.
Das nächste Thema sind Theorien zur Gleichheit. Schierig. Und
ich zeige Ihnen jetzt mal, wie das in Cork bewiesen werden kann.
Wir haben hier also unser erstes Theorie,
was wir beweisen wollen und vielleicht nochmal ganz kurz,
Wenn Sie Reflexivität beweisen wollen, dann müssen Sie jetzt hier halt,
achso, das kannst du halt,
ich kann jetzt natürlich hier nicht markieren, jetzt mache ich lieber einen Cock.
Wenn Sie Reflexivität beweisen wollen, dann denken Sie,
ah, es muss ja immer x gleich x gelten.
Und dann denken Sie, okay, vielleicht hoffentlich,
woher kommt denn dieses x? Dann sagen wir,
das x hat irgendeinen Typen, ah,
dann müssen Sie aber auch sagen, woher kommt das A und das,
weil Sie sagen wollen, es ist irgendein Typ,
schreiben Sie hier, A ist vom Typen Großtype,
das ist sozusagen der Typ aller Typen,
wenn Sie so wollen
Okay, und dann können wir jetzt diese,
diese Aussage soll uns sicherstellen, dass wir immer haben,
dass X gleich X ist, wo auch immer es auftaucht.
So, und das wollen wir jetzt beweisen. Nun,
wie tun wir das? Wir haben eine Eilquantifizierte Aussage zu beweisen.
Sie kennen das jetzt inzwischen, sei Dings, beliebig aber fest.
Und wir tun das in Cock durch Proof All.
Das heißt also, A vom Typen Type ist beliebig,
aber fest gewählt.
Und es ist der Rest
zu zeigen
Der Rest ist wieder eine Allquantifikation,
die wir zu zeigen haben. Also sagen wir wieder,
sei, dass x beliebig aber fest aus A,
das ist was Cork jetzt an der Stelle gemacht hat,
wo ich jetzt grün bin, ist das X jetzt konkret gegeben.
Wir können jetzt mit dem X arbeiten,
wir haben es jetzt in der Hand.
So, und nun ist X gleich X zu zeigen.
Und wie zeigen wir X gleich X Rückfrage ins Publikum
Ja. Puff, proof equality, genau.
Also proof, eco. Also eco, uh.
Sehr schön. Dann haben wir das nämlich bereits bewiesen.
Und das ist so ein charakteristisches Theorien für Gleiche.
Es gibt aber noch mehrere. Das Nächste, was wir
haben, das ist die Symmetrie. Machen wir uns,
das hatten wir schon mal besprochen, aber es schadet nichts,
wenn wir jetzt nochmal drüber gehen und das in Cork beweisen.
Machen wir das mal
Also, Theorien, Equality ist symmetrisch.
Für alle A in Type, was haben wir dann?
Für alle XNA, für alle YA. Das können wir auch
so schreiben. Gilt X gleich Y. Daraus folgt Y gleich X.
Machen wir vielleicht das Ganze mal in eine neue Zeile.
Haben wir keine Probleme mit irgendwelchen Umbrüchen.
So. Das ist jetzt also zu zeigen
Naja, und wir zeigen für das wieder,
es ist eine Allquantifizierte Aussage, die zu zeigen ist,
also sei A, beliebe ich aber fest.
Wieder eine Allquantifizierte Aussage, also sei x-beliebig,
aber fest, wieder eine Allquantifizierte Aussage,
sei also Y beliebig, aber fest.
Und nun haben wir eine Implikation zu zeigen.
Sehr ähnlich. Ja. Proof In, genau.
Wir nehmen die Prämisse an und haben die Konklusion
Zu zeigen. Gut, und wie konnten wir jetzt nochmal weitermachen?
Wer erinnert sich? Sehr schön. Also was passiert ist,
wir benutzen die Gleichheit, die uns Haar bereitstellt und setzen,
also er setzen das X durch das Y überall,
wo X im Ziel vorkommt.
Und das ist jetzt erstmal hier unten rechts,
wo sich mein Mauszeiger gerade befindet
Heißt, jetzt haben wir nur noch Y, gleich Y zu zeigen.
Und das kennen sie bereits. Das hatten wir vorhin.
Das ist Proof Equality. Und damit ist auch der Beweis dann abgeschlossen.
Das ist die Symmetrie gewesen. Dann weitere wichtige Eigenschaft,
Transitivität. Sie merken hoffentlich, dass wir gerade,
wenn wir jetzt die Transitivität dann auch noch gezeigt haben werden,
dass wir dann gezeigt haben,
dass wir eine Äquivalenzrelation haben,
also dass die Gleichheit
eine Äquivalenzrelation ist
Also, Equality ist transitiv. Und jetzt müssen wir sagen,
für alle Typen A,
für alle XY und Z kann ich gleich zusammenpacken,
XY und Z, in A. Obs, sorry.
Haben wir das aus X gleich Y und Y gleich Z
, folgt das X gleich Z ist.
Also wie so eine Brücke über
Gut. Ja, und ich hoffe,
Sie können das jetzt alle im Schlaf,
was ich jedes machen muss, proof all, proof all,
proof all,
proof all.
Und jetzt wieder Proof
So, jetzt haben wir eine Konjunktion in der Hand.
Was machen wir damit nochmal?
Ja. Use and Haar, genau so ist es.
Heißt, wir holen uns jetzt das Wissen,
dass wir sowohl das eine als auch das andere haben.
Und weiter, was kann ich jetzt noch tun?
Jetzt habe ich
die beiden Sachen
Jörg, dann haben wir erst mal H0. Das heißt also,
jetzt wird das X unten durch Y ersetzt.
Schwupps. Ja, und jetzt brauchen wir sogar das,
also kurz, ich kann jetzt natürlich noch mal machen,
Use Equality H, eine Möglichkeit.
Und hier abschließend, aber es ist natürlich auch nicht nötig.
Ich kann an der Stelle auch direkt abschließen mit, was?
So, ja. Usa, genauso ist es.
Und dann bin ich fertig. Also,
die Transitivität haben wir
auch gezeigt
So, und dann haben wir noch eine wichtige Eigenschaft und die ist,
wenn Sie sich jetzt wirklich mal nur auf den Teil hier,
Primim Maus eigentlich sicher, können Sie sehen.
Wenn Sie sich hier nun mal auf den Teil von hier an konzentrieren,
dann steht da aus X gleich Y,
können wir F von X gleich F von Y folgern.
Anders ausgedrückt, wenn ich mit gleichen Dingen Gleiches mache,
kommt das Gleiche dabei raus.
Okay. Das müssen wir
auch nochmal zeigen
Gut. Serial. Quality Function nennen wir das mal.
So. Für alle A in Type, für alle,
was brauche ich, ich brauche XY erstmal, XY aus A,
für alle F von A nach P fehlt was.
In dem roten Kasten, das, genau,
wir brauchen noch,
dass das B
auch ein Typ ist
Für all ihr haben wir dann,
dass aus X gleich Y folgt F von X
gleich von Y. Ich breche das hier nochmal um.
So. Und das ist jetzt zu beweisen. Gut,
das ist jetzt wieder eine Menge Ei-Quantifikation, die wir erledigen können.
Und ich ver... Was? Schon mal Copy on Face
benutzt, das geht schneller. Ja, ich verrate jetzt
noch einen anderen Trick. Es gibt auch eine Taktik,
die in diesen Selfmade-Strategies implementiert ist, die heißt Use Aproof All im Star.
Also alle Allquantifikationen und Implikationen werden dann direkt aufgelöst.
Das mache ich jetzt einmal und dann sehen sie,
es wird alles reingeholt, was wir an Allquantifikationen und Implikationen haben,
damit wir uns nicht die Fingerwunsch schreiben müssen,
weil es ist ja wirklich immer der gleiche Schritt, okay?
Weil das sowohl bei Allquantifikationen als auch bei Implikationen funktioniert,
dass sie sagen, wir nehmen das an,
haben den Rest zu zeigen,
können wir das eben so lange durchführen,
wie es gerade geht
Gut. Jetzt ist die Frage, wie beweisen wir das?
Bist du eine Meldung? Ja. You was equality
h. Ja, genau so ist es.
Wir machen einfach aus dem X dort unten ein Y und
auf einmal kann uns eigentlich egal sein,
was das F ist
Denn FY ist auf jeden Fall gleich FY.
Das ist sind taktisch das Gleiche auf beiden Seiten.
Und wir können abschließend deswegen mit Proofy Quality. Also ein
paar wichtige Eigenschaften. Und hier, auch wenn jetzt hier
das B fehlt an der Stelle, was trotzdem mal in der Folie.
Das ist natürlich hier eine ganz schicke Geschichte. Weil sie,
wenn sie irgendeine Gleichheit haben, nur noch eine Funktion angeben müssen,
Und dann diese Gleichheit benutzen,
also die Funktion auf diese Gleichheit anwenden können und dadurch neue Gleichheiten erhalten,
was sie oft brauchen werden.
Und diese Funktion, die sie angeben, das sind oft Funktionen,
die sie nicht vorher groß definiert haben,
wie Plus oder Mal, sondern irgendwie Funktionen,
die sie dieses eine Mal in dem Theorien brauchen.
Irgendwie sowas wie Adire 5 oder so. Da wollen sie
ja nicht eine extra Funktion groß in die Cock-Datei schreiben.
Das heißt, sie wollen eigentlich mit einer anonymen Funktion das
Ganze beweisen, die sie nur in den Theorien benutzen.
Und das können sie dann eben sehr gut tun mit Lamna
Das heißt, die Funktion, die sie hier dann angeben,
wenn sie das konkret einsetzen, wir das konkret benutzen,
dieses F hier,
da würden sie einen Landerausausdruck hinschreiben und damit arbeiten.
Gut, ach so, ein Theorium haben wir noch.
Dann hole ich eine Stuhlnummer ran. So,
was haben wir hier?
WXYXYZ, okay
Äh, was weiß ich, Example vielleicht? So,
für alle, ob's A in Zeit, XY, ne,
W XYZ, wenn du das nicht von der Fully-Kapitel willst,
ja.
W XYZ vom Typen A. Weglich
X und X
Y gleich Z. Und, daraus folgen wir, da hat er
uns voll. Ich habe einen Punkt gemacht, nein,
noch nicht. So, das stimmt ja. Gott,
dann schauen wir mal, ob wir es bewiesen bekommen.
Also das erste ist jetzt wieder,
wir haben hier diverse Altquantifikationen und Implikationen und wir können sie
jetzt durch Proof All im Star einführen
Vielleicht zur Erklärung, warum mache ich das Proof All Imp
genannt, ist, glaube ich, recht klar.
Und das Star soll suggerieren, dass es endlich oft wiederholt werden kann.
Ja, also so oft, wie es gerade geht.
Gut. Was tun wir als erstes?
Use and H. Das ist richtig.
Was erwarten Sie
Mistrufen. Ne? Deswegen habe ich nochmal gefragt.
Also, das ist hier noch implizit geklammert.
Sie haben hier W gleich X und der ganze Rest.
Und deswegen teilt er das auf in Weg gleich X und
den ganzen Rest. Und den ganzen Rest,
da müssen wir jetzt einfach das Ganze dann nochmal machen,
ne? Ist ja gar kein Problem. Und jetzt haben
wir die drei Gleichungen. So, was können wir machen
Jo, das ist alles bei dir. Jo, womit fangen wir
an? Ist egal, dann machen wir mal Hallo.
Mit H1? Nee, H1 ist nicht gut.
H1 geht mit H1 gerechnet nicht. Und H bringt auch nicht
so viel, nee, wir sollten tatsächlich mit der Null.
Also den Haar anzufangen bringt nichts, weil nur Y
nicht Z,
also nicht Zeit durch
Ja, ich mache es einmal, was passiert,
ist nichts, ja.
Weil nur alle vorkommen von Y-Z ersetzt werden und nicht andersrum.
Also fangen wir hier mit H0 an. Schwupps. Tja,
wie machen wir weiter jetzt? Was ist das nächste?
Frage ans Publikum wieder. Du. Genau so ist
es.
Was machen wir jetzt? Händen, ja. Direkt,
dass du jetzt eine Theorien benutzt.
Ja, das wäre die Alternative. Also hier wurde jetzt
das Y und Z umgewandelt und in dem Fall können,
wir können das gleich mal uns anschauen und das auch machen.
Und jetzt in dem Fall erstmal, war richtig,
können wir abschließen mit Proof Equality,
dann sind wir durch
Schauen wir mal, ob wir das Theorien benutzen können.
Also machen wir, wo war das jetzt hier an der Stelle?
Facts. Equality symmetrisch. Jetzt müssen wir ein paar Dinge eingeben.
Use all, also wirklich kürzer wird es im Moment noch nicht dadurch.
Use all hat zwei A. Use all hart 3 X,
nehme ich mal an, X, nee,
was wollen wir wollen?
Y gleich Zeug,
kurz gucken
Wir wollen haben Y gleich Z. Ros folgt Z, gleich
Y. Das heißt X0 muss Y sein. So. Was
muss ich jetzt für Y ein, Y0 einsetzen?
So ist es. Und jetzt habe ich Y gleich Zeit,
daraus folgt Z, gleich Y. News im mit Genau so ist es.
Denken Sie dann, Modus Ponens, ja?
Wenn das Wetter schön ist, mache ich Sport,
das Wetter ist schön, also mache ich Sport.
Okay. Ich habe den Punkt vergessen, ja.
So. Seid gleich Y und das ist, haben wir jetzt,
das heißt, wir können abschließen mit Use Huffins.
Ob das jetzt in dem Fall kürzer war,
ist die andere Frage, aber es ist ganz nett zu wissen,
dass man auch mal ein Theorie, was man bereits hergeleitet hat, benutzen kann.
Ich werde ihn später auch noch,
aber noch nicht an dieser Stelle, ähnlich wie das Youth,
Entschuldigung, wie das Proof All im Star Dinge etwas kürzer macht,
gibt es auch Möglichkeiten, diese mehrfache Anwendung dann kürzer zu gestalten.
Gut, das war ja sogar das letzte Beispiel,
glaube ich, genauso ist es, kann ich jetzt den Stuhl tatsächlich wieder wegpacken.
Dann möchte ich mit Ihnen noch über das Suchen in Cock sprechen,
da haben wir einmal Search about,
Und wenn wir da Gänsefüßchen eingeben und dann irgendwie von einem Lämmer teilnahmen,
also wenn wir irgendwie wissen, das war doch irgendwie ein Lämmer,
das hieß irgendwas mit und, mit End.
Ich weiß aber nicht mehr,
dann können wir halt hier jetzt Boulema Teilnahme steht,
End eintippen und dann spuckt er uns den entsprechenden Suchbegriff,
nicht den Suchbegriff, sondern spuckt er uns entsprechende Theoreme aus,
die wir zur Verfügung haben, die eben diesen Teilnahmen enthalten.
Wenn wir das Ganze ohne Gänsefüßchen machen, Dann gibt er
uns Theoreme oder auch Definitionen aus, in denen der Begriff vorkommt.
Und zwar jetzt nicht im Namen des Theorems,
sondern im Theorien selbst, in dem, was es aussagt.
Das ist der Unterschied zwischen Gänsefüßchen und keine. Da ist
noch mal ein Beispiel. Es ist ein bisschen verwirrend.
Also wenn ich hier jetzt Search about, plus ist das Beispiel.
Und erstmal Sie sehen, aber hier sehen sie es.
Also hier könnten sie jetzt irgendwie denken, das liegt an
dem Namen. Okay. Aber sie sehen hier,
hier taucht das Plus als Name überhaupt nicht auf.
Okay. Trotzdem will uns diese Funktion unten rechts im Kasten,
also in Cock, unten rechts, ausgegeben.
Woran liegt das? Das liegt daran,
dass wir hier dieses Additionszeichen haben,
und das ist nur eine Notation in Cock für die Funktion,
die dort Plus heißt
Die ist in Cork Plus genannt.
Und deswegen findet er bei Search About Plus diese Funktion.
Haben wir noch mal ein weiteres Beispiel? Search About True?
Dann sehen Sie, das hat jetzt auch wieder hier,
hier ist wieder ein Beispiel, wo True nicht auftaucht.
Trotzdem gibt er uns die Geschichte aus,
weil hier und True steht
Dann haben wir eine Möglichkeit, Locate,
also wenn wir eben wie dir das Plus hatten,
ja, wir hatten dieses Plus, dann können wir sagen,
wir haben nur dir das Zeichen und wir wissen nicht,
wie heißt das eigentlich in Cock, was dahinter steht,
dann können wir sagen, Locate, Plus, und ich glaube,
es ist in Anführungszeichen, das müssten sie nochmal prüfen,
was wirklich in Anführungszeichen ist, und dann gibt er ihnen aus,
oder ich kann es auch hier mal machen,
im Cock, ich bin ja gerade drin, Lucate,
wenn ich jetzt Fluss mache, genau, dann sehen sie,
dass er mir verschiedene Dinge ausgebusst definiert,
ist insbesondere dieses Plus von den natürlichen Zahlen.
Und übrigens auch noch andere Dinge,
die uns hier jetzt nicht weiter kümmern müssen an der Stelle.
Die sehen diese Notation ist überladen und wird in den verschiedenen Kontexten
unterschiedlich genutzt. Aber wenn wir über natürliche Zahlen sprechen,
das bedeutet es Natsgo, ja,
dann ist es als Plus-NM
zu verstehen
Ja. Zwei Spieler hatten wir gerade. Gut,
dann ganz wichtig, also das andere ist auch ganz nett,
aber das hier ist wirklich sehr, sehr hilfreich,
gerade wenn sie größere Dateien schon erstellt haben,
mit vielen Theorien und wirklich den Überblick nicht mehr gut bewahren können,
ist das folgende sehr hilfreich, Search pattern,
mit einem Suchenmuster und zwar, sie geben ein Suchmuster an,
ich suche ein Theoret, wo aus Fragezeichen,
ich zeige Ihnen das mal, wo irgendwie was steht,
plus irgendwas.
Und dann soll hier dieses hier rauskommt. Noch sowas suchen
sie dann. Weil sie überhaupt keine Ahnung mehr haben,
wie die das Theorie heißen könnte beispielsweise.
Und weil sie so viele Sachen über Additionen bewiesen haben,
dass sie nicht einfach nach Additionen suchen wollen,
weil ihnen dann Seiten von Theoreten gibt, sondern wollen speziell dieses Theorien finden.
Ja, also Kommutativität, der Addition.
Und dann sollte er ihnen den entsprechenden Namen ausgeben.
Kommt hier
ein Beispiel
Also erst mal, wir haben, dass dieses Fragezeichen X,
was ich hier habe, ist ein Platzhalter für eine beliebige Variable.
Wenn ich hier nur einschreiben würde, dann müsste in
den Theorien da tatsächlich ein N stehen und beispielsweise kein K.
Aber ich will nicht davon abhängig sein, ob jetzt der Benutzer,
das N und M oder X und Y genannt hat und
deswegen schreiben wir ein Fragezeichen davor und das heißt dann,
nur ein Pattern,
das kann also auch irgendwie ein X sein in den Theorien.
Hauptsache, es hat die folgende Form
Wir können auch sagen, mich interessiert der Teil gar nicht. Vielleicht,
wenn ich zum Beispiel, machen wir was anderes,
wenn ich irgendwie vielleicht solche Theorien mir suche, wo ich sage,
Fragezeichen, N ist gleich null und dann soll irgendwas daraus folgen.
Dann kann ich das mit so einem Unterstrich machen.
Der Unterstrich heißt, da kann jetzt irgendwas stehen,
das interessiert mich nicht. Das ist jetzt nicht eine einzelne Variable,
sondern es kann ein ganzer Ausdruck sein,
ganze Aussage,
die dort steht
Schauen wir uns das mal ein Beispiel an.
Wenn wir zum Beispiel machen, Search-Pattern, Fragezeichen X,
gleich Fragezeichen X, dann gebt uns Cork hier.
Einmal tatsächlich was, wo X gleich X steht.
Nämlich Equality Reflection. Ja, also nicht Reflection.
Also, dass die Gleichheit reflexiv ist.
Hier haben sie aber zum Beispiel das Ganze auch mit N
gleich N
am Ende
Das gibt er uns auch aus. Warum? Weil wir hier
nicht nur x, gleich x geschrieben haben, sondern Fragezeichen,
ist gleich Fragezeichen x. Kann also irgendeine Variable stehen,
solange was links und rechts steht, dasselbe ist?
Deswegen werden hier auch von x verschiedenen Geschichten ausgegeben.
Was die aber auch sehen ist, dass diese Gleichheiten immer
nur ganz hinten auftauchen. Und das ist auch immer so,
wenn sie das Search Pattern machen,
dann suchen sie immer nach dem Ende eines Theorems
Wenn es da noch irgendwie weitergehen soll,
wenn also irgendwo X gleich X vorkommen soll, ja,
und dann soll es weitergehen,
dann machen sie stattdessen eben Fragezeichen X,
Fragezeichen X und danach geht es irgendwie weiter.
Deswegen ist dieser Unterstrich manchmal sehr hilfreich. Das ist eine
Frage, ja. Kann man auch Theorien in externen Dateien
ausweiten, miteinander auch zugreifen? Ja,
ja, wenn sie jetzt zum Beispiel Self-Mated Strategies ist ja
auch nur eine Cock-Datei und sie benutzen die Taktiken,
die dort definiert sind
Sie können jetzt aber auch irgendeine andere Datei schreiben und dann
dementsprechend die Theorien importieren, genauso wie sie Self-Mitstrategies importieren.
Und dann stehen ihnen die ganzen Theoreten dieser Datei zur Verfügung.
Und wenn sie dann eine Suche machen,
dann finden sie die auch in der anderen Datei,
die die Datei entsprechende Datei importiert.
Also diese Möglichkeit haben sie da. Genau. Aufgaben aus Platt 3
konnte ich ja nicht mehr in Platz 4 dabei laufen.
Ja, wenn sie es importiert haben,
genau,
Weil wir diesen Vater passiert haben und wir alle vielleicht ein paar.
Sie müssen eigentlich das Require, also was Sie haben in
Ihrer Lessis, Require Import, self-made Strategies.
Und das müssten Sie eigentlich auch mit der Datei machen,
die Sie von dem Übungsplatz 3 dann aus benutzen.
Würde mich wundern, wenn es uns auch funktioniert. Falls doch,
können Sie es mir nachher gerne in der Übung zeigen.
So, wir haben noch ein Beispiel hier.
Ja, hier sehen Sie das
Fragezeichen X, gleich Fragezeichen Y. Daraus folgt,
das ist jetzt hier wieder typisch gecurry.
Irgendwo kommt Fragezeichen X, gleich Fragezeichen Y,
als ein Argument vor, ein anderes ist Fragezeichen Z.
Gleich Fragezeichen W, was aber direkt dahinter kommen muss.
Und dann, das können Sie ganz schlecht erkennen, hier ist ein Unterstrich.
Danach folgt irgendwas. Jetzt sehen Sie, da gibt es
irgendwie einige Geschichten hier. Zum Beispiel haben wir hier,
dass das getroffen wird, obwohl das Also das hintere Ausdauer aussieht.
Haben wir irgendwo was, wo es hinten nicht passt?
Das ist alles über Gleichheiten. Ah, nee,
das ist alles mit Gleichheiten. Aber grundsätzlich sehen Sie,
dass jetzt hier, dadurch, dass bereits vorne dieser Treffer ist,
die Theoreten aufgezählt werden, doppelt werden Sie natürlich nicht aufgezählt,
wenn es mehrere Treffer gibt.
Frage, ja? Ja, ich meine...
Der Unterstrich hier
Den kann man auch vorne setzen. Also, die können ihn
selten an jeder Stelle. Ja. Es bringt ja nichts,
wenn dann noch in Zeichen der Welten geblieben wird, oder?
Naja, vorne, also, was sie sparen könnten, wäre folgendes. Also,
wenn sie sowas haben, und hier schreiben wir sie um was Konkretes hin,
ja, dann könnten sich den Teil eigentlich sparen, das bräuchten sie nicht.
Ist nicht falsch, aber sie brauchen es nicht. Aber was tatsächlich hilfreich sein kann,
ist, wenn sie irgendwie was in der Mitte haben,
wo sie das nicht genauer haben wollen, dann können sie sowas sagen,
naja, irgendwo soll vielleicht Fragezeichen X gleich Fragezeichen Y sein,
dann soll irgendwas kommen, dann noch irgendwie,
weiß ich nicht, Fragezeichen, Y, gleich Fragezeichen,
Z. Und dann kommt wieder irgendwas zum Beispiel.
Das geht auch. Wobei, jetzt muss hier tatsächlich auch
irgendwas kommen. Also er sagt jetzt nicht so eine Suche
nach dem Motto, oder es geht hier direkt weiter.
Also er sucht jetzt nach irgendwas,
aber es muss hier auch irgendwas stehen in den gesprächenden Theorien
Das ist eine gute Frage. Doch, doch, also können
auch drin sein. Also hier kann selbst wieder in diesem Unterstrich,
es kann wieder gematcht werden mit etwas, was aus mehreren Implikationen besteht.
Das ist möglich, ja. Gut, dann war es das erstmal.
Sie haben jetzt also nochmal ein paar Dinge kennengelernt,
die jetzt fürs weitere Arbeiten hilfreich sind.
Wir gehen jetzt wieder runter, gleich kommt noch eine Frage,
danach gehen wir runter. Und besprechen, nein,
sie machen dann erst nochmal die Beweise,
die sie gestern angefangen haben, in Kork fertig.
Und achten bitte darauf, dass sie dabei die natürlich sprachlichen
Stücke als Kommentare im Beweis mit einsetzen.
Wir werden das besprechen und dann auch die Aufgaben von heute angehen.
Aus X, gleich Y, Typ von X,
gleich Typ von Y und könnte man das beweisen als Theorie
Okay, also die Typen müssen gleich sein. Und der Punkt ist,
sie können, also zumindest in der, also mit dem,
was wir machen, muss es gleich sein.
Und wenn sie X gleich Y überhaupt hinschreiben können,
dann ist immer die Voraussetzung dafür,
dass er was damit anfangen kann, dass irgendwo steht,
X hat den Typen so und Y hat den Typen Naja,
es muss halt A sein.
Wenn es nämlich irgendwie ein B ist, einfach was anderes.
Wir kennen ja nichts von, gell. Dann sagt er
an der Stelle Fehler, die haben nicht denselben Typen.
Es gibt eine andere Gleichheit und dann gibt es andere Induktionsprinzipien.
Da kenne ich mich aber nicht aus.
Also da gibt es was. Das können sie nachlesen.
Das kommt auf jeden Fall vor in dem Buch von
Eve Berto
Was eine Einführung in Cock ist, da finden Sie das an einer Stelle.
Aber genauer mehr kann ich Ihnen da im Moment nicht sagen,
oder hinten ist noch ein Cocktail.
Ja, so ein Untertyp von Avia,
so was wie Menschen und solche Lieder und so.
Das akzeptiert er nicht. Ich muss genau derselbe Typ sein
. Ja. Gut