import TestGame.Metadata Game "TestGame" World "TestWorld" Level 10 Title "Genau dann wenn" Introduction " Als nächstes will man oft ein Iff-Statement `A ↔ B` wie zwei einzelne Implikationen `A → B` und `B → A` behandeln. Wenn das Goal `A ↔ B` ist, kann man mit der `constructor` Taktik, dieses in die Einzelteile `A → B` und `B → A` zerlegen. " Statement " Zeige dass `B ↔ C`. " (A B : Prop) (mp : A → B) (mpr : B → A) : A ↔ B := by constructor assumption assumption Conclusion " Die Taktik `constructor` heisst so, weil `↔` als \"Struktur\" definiert ist, die aus mehreren Einzelteilen besteht: `⟨A → B, B → A⟩`. Man sagt also Lean, es soll versuchen, ob das Goal aus solchen Einzelteilen \"konstruiert\" werden kann. " Tactics constructor Tactics assumption -- TODO : `case mpr =>` ist mathematisch noch sinnvoll.