import Adam.Metadata Game "Adam" World "Implication" Level 6 Title "Genau dann wenn" Introduction " Als erstes kommt ihr in einen kleinen Raum mit ganz vielen Bildschirmen. Ein junges Wesen dreht sich auf dem Stuhl um, und sagt: **Mitarbeiter**: Oh hallo! Schaut euch mal das hier an! " Statement (A B : Prop) (mp : A → B) (mpr : B → A) : A ↔ B := by Hint "**Robo**: Das ist ein genau-dann-wenn Pfeil: `\\iff`. Er besteht aus zwei Teilen: `A ↔ B` ist als `⟨A → B, B → A⟩` definiert. **Du**: Also ganz ähnlich wie das UND, `A ∧ B`? **Robo**: Genau. Entsprechend kannst du hier auch mit `constructor` anfangen." constructor Hint "**Du**: Ah und die beiden hab ich schon in den Annahmen." assumption assumption Conclusion " **Robo**: Übrigens, bei `(h : A ∧ B)` haben die beiden Teile `h.left` und `h.right` geheissen, hier bei `(h : A ↔ B)` heissen sie `h.mp` und `h.mpr`. **Du**: Also `h.mp` ist `A → B`? Wieso `mp`? **Operationsleiter**: \"Modulo Ponens\" ist ein lokaler Begriff hier, aber das ist doch nicht wichtig. **Robo**: Und das \"r\" in `mpr` stünde für \"reverse\" weil's die Rückrichtung ist. " NewTactic constructor DisabledTactic tauto rw -- TODO : `case mpr =>` ist mathematisch noch sinnvoll.