{-

Please do not move this file. Changes should only be made if necessary.

This file contains pointers to the code examples and main results from
the paper:

Symmetric Monoidal Smash Products in Homotopy Type Theory,
Axel Ljungström, 2024

-}

-- The "--safe" flag ensures that there are no postulates or unfinished goals
{-# OPTIONS --safe #-}
module Cubical.Papers.SmashProducts where
-- Section 2
import Cubical.WildCat.Base                        as WCat1
import Cubical.WildCat.Instances.Pointed           as WCat2
import Cubical.WildCat.BraidedSymmetricMonoidal    as WCat3
import Cubical.HITs.SmashProduct.Base              as Smash

-- Section 3
import Cubical.Foundations.Pointed.Homogeneous     as Hom

-- Section 5
import Cubical.HITs.SmashProduct.SymmetricMonoidalCat as SM

-- Section 6
import Cubical.HITs.SmashProduct.Induction         as SmashInduction

---- 2 Background ----
--- 2.1 Symmetric monoidal wild categories

-- Definition 1 (Wild categories)
open WCat1 using (WildCat)

-- Proposition 2 (Pointed types form a wild cat)
open WCat2 using (PointedCat)

-- Definition 3 (Monoidal wild categories)
open WCat3 using (isMonoidalWildCat)

-- Definition 4 (Symmetric Monoidal wild categories)
open WCat3 using (SymmetricMonoidalPrecat)

--- 2.2 Smash Products
-- Definition 5 (Smash products -- note: defined as a coproduct in the
-- library. E.g. the ⟨ x , y ⟩ constructor here is simply
-- inr(x,y). Also note that pushₗ and pushᵣ are inverted with this
-- definition.)
open Smash using (_⋀_)

-- Definition 6 (Functorial action of ⋀)
open Smash using (_⋀→_)
-- Proposition 7 (Commutativity of ⋀)
-- Postponed -- stated as part of Theorem 21

---- 3 Associativity ----
-- Definition 8 (Double smash product)
open Smash using (⋀×2)

-- Equivalence between smash product and double smash
open Smash using (Iso-⋀-⋀×2)

-- Proposition 9 (Associativity of ⋀)
-- Postponed -- stated as part of Theorem 21

---- 4 The Heuristic ----
-- Lemma 10 (first induction principle for smash products)
open Smash using (⋀-fun≡)

-- Definition 10
open Smash using (⋀-fun≡)

-- Definition 11 (version using ≡ instead of ≃⋆ is used here)
open Hom using (isHomogeneous)

-- Lemma 12 (Evan's trick)
open Hom using (→∙Homogeneous≡)

-- Lemma 13 (Evan's trick for smash products)
open Smash using (⋀→∙Homogeneous≡)

-- Lemma 14 (Evan's trick smash products, v2)
open Smash using (⋀→Homogeneous≡)

-- Definition 15
open Smash.⋀-fun≡' renaming (Fₗ to L ; Fᵣ to R)

-- Lemma 16
open Smash.⋀-fun≡' using (main)

-- Lemmas 17/18
-- Omitted (used implicitly in formalisation)


---- 5 The symmetric monoidal structure ----
-- Proposition 19/20 (Hexagon and pentagon)
-- Postponed - stated as part of Theorem 21

-- Theorem 21 (Symmetric monoidal structure)
open SM using (⋀Symm)

--- 5.1 Back to Brunerie's thesis
-- This section is only meant to be an informal discussion and has not
-- been formalised, as stated in the paper.

-- 6. A formal statement of the heuristic
-- Definition 25 (FS)
open SmashInduction using (FS)

-- Definition 26 (⋀̃)
open SmashInduction using (⋀̃)

-- Theorem 27 (⋀̃→⋀ induction with coherences)
open SmashInduction using (⋀̃→⋀-ind ; ⋀̃→⋀-ind-coh)

-- Corollary 28 (⋀̃→⋀ induction without)
open SmashInduction using (⋀̃→⋀-ind)

-- Corollary 29 (⋀̃→⋀ induction for pointed maps)
open SmashInduction using (⋀̃→⋀-ind∙)