import TestGame.Metadata

import Mathlib

set_option tactic.hygienic false

Game "TestGame"
World "Lean"
Level 2

Title "Universen"

Introduction
"**Du**: Aber wenn alles Typen sind, welcher Typ hat dann `Type`?

**Robo**: `Type 1` und dieser hat Typ `Type 2`, etc.

**Robo**: Die Zahl nennt man *Universum*. Manchmal führt man Universen explizit
mit `universum u` ein, öfter siehst du `(R : Type _)`, was einfach ein Platzhalter
für irgend ein Universum ist.

**Du**: Das klingt ein bisschen nach Mengentheoretische Probleme, die man normalerweise
ignoriert.

**Robo**: Genau! Deshalb schreibt man eigentlich immer einfach `Type _` und ist glücklich.
Spezifischer muss man erst werden wenn man sowas wie Kategorientheorie anschaut, wo
man die Universen tatsächlich kontrollieren muss.

**Du**: Oke, hier rein, da raus. Aber hast du mir noch eine Aufgabe?
"

universe u

Statement
    (R : Type u) [CommRing R] (a b : R) : a + b = b + a := by
  Hint "**Robo**: Naja, Aufgaben zu Universen sind nicht so natürlich,
  aber vorige Aufgabe würde man eigentlich besser so schreiben, da
  kannst du mindestens das Uniersum beobachten."
  ring

Conclusion "**Du**: Na dann. Aber gut dass ich's mal gesehen hab."

-- Hint (R : Type) (h : CommRing R) (a : R) (b : R) : a + b = b + a =>
-- ""
