Kann ich einen "abhängigen Nebenprodukttyp" haben?

14

Ich lese das HoTT-Buch durch und habe eine (wahrscheinlich sehr naive) Frage zu den Inhalten in Kapitel 1.

In diesem Kapitel wird der Funktionstyp und anschließend verallgemeinert, indem B von x abhängig gemacht wird : A B : A U ,

f:EINB
Bx:EIN und das wirdabhängiger Funktionstyp genannt.
B:EINU,G:x:EINB(x)

Im Folgenden wird der Produkttyp und anschließend verallgemeinert, indem B von x : A B abhängig gemacht wird

f:EIN×B
Bx:EIN und das wirdabhängiger Paartyp genannt.
B:EINU,G:x:EINB(x)

Ich kann hier definitiv ein Muster sehen.

Anschließend wird in diesem Kapitel der Coprodukttyp und ... Combobreaker ... vorgestellt. Abhängige Versionen dieses Typs werden nicht behandelt.

f:EIN+B

Gibt es eine grundsätzliche Einschränkung oder ist sie für das Thema des Buches irrelevant? In jedem Fall kann mir jemand mit Intuition helfen, warum Funktion und Produkttypen? Was macht diese beiden so besonders, dass sie zu abhängigen Typen verallgemeinert und dann verwendet werden, um alles andere aufzubauen?

Kostya
quelle

Antworten:

18

Die abhängige Summe ist eine gemeinsame Verallgemeinerung der sowohl das kartesische Produkt und dem Co - Produkt A + B . Es ist einfach so, dass das HoTT-Buch eine abhängige Summe durch Verallgemeinern von A × B einführtEIN×B EIN+BEIN×B , da der Boolesche Typ nicht zuerst definiert werden muss.

Das Nebenprodukt ist ein Sonderfall der abhängigen Summe. Gegebene Typen EINBetrachten Sie für die und die Typfamilie P : b o o lU, die durch P ( f a l s e ) = A und P ( t r u e ) = B definiert ist . Die abhängige Summe Σ b : B o o l P ( b ) ist äquivalent zu A + BBP:bÖÖlUP(feinlse)=EINP(true)=Bb:bÖÖlP(b)EIN+B. Übrigens können Sie auch als abhängiges Produkt b : b o o l P ( b ) erhalten .EIN×Bb:bÖÖlP(b)

Sie fragen, was an Produkten und Funktionsarten besonders ist. Es gibt viele, viele Gründe, warum und "notwendig" sind. In Bezug auf die Logik, sind sie notwendig , weil sie entsprechen und durch die Sätze-as-Typen Korrespondenz (aber das verschiebt sich nur die Frage : „Warum sind und notwendig?“). In Bezug auf die Kategorientheorie sind und notwendig, da sie links und rechts neben der Substitution stehen. Stellen Sie eine sicherere Frage, wenn Sie mehr wissen möchten.

Andrej Bauer
quelle
Hallo. Darf ich fragen, wie Sie zeigen können, dass " und links und rechts neben Substitution stehen"? Welche Kategorien würden verwendet?
ChoMedit
Ich vermute, dass die Substitution so etwas wie eine Diagonale ist und als Indexkategorie fungiert. Dann ist die vermutete Kategorie möglicherweise die Kategorie der Typen. EIN
ChoMedit
1

Ich werde darüber mehr softwaretechnisch sprechen.

Sprechen Sie von einem Koprodukttyp, dessen letztere Konstruktoren auf frühere verweisen können (der einem Produkt ziemlich ähnlich sieht, dessen letztere Felder auf frühere verweisen können)? Dies ist in Agda nach der Einführung von HIT (in Version 2.6.0) möglich:

-- Auxiliary definition: Nat
data Nat : Set where
  zero : Nat
  succ : Nat -> Nat

-- The HIT I was talking about
data Int : Set where
  positive : Nat -> Int
  negative : Nat -> Int
  -- Note this constructor uses `positive` and `negative`.
  zeroPath : positive zero ≡ negative zero

Durch Anschluss an dieses Papier , wenn Ihre Typ-Checker prüfen Definitionen in Abbildung dargestellt mit der Syntax definiert „(26)“ Ich glaube , dass es ganz einfach ist „abhängig Koprodukte“ zu unterstützen.

ice1000
quelle