@@ -42,7 +42,7 @@ trace : (R : SRel A B) → SRel.State R → List A → List B → Type
4242trace R s [] [] = ⊤
4343trace R s [] (_ ∷ _) = ⊥
4444trace R s (_ ∷ _) [] = ⊥
45- trace R s (x ∷ xs) (y ∷ ys) = ∃[ s' ] SRel.rel R s x y s' × trace R s xs ys
45+ trace R s (x ∷ xs) (y ∷ ys) = ∃[ s' ] SRel.rel R s x y s' × trace R s' xs ys
4646
4747_≤ᵗ_ : SRel A B → SRel A B → Type
4848R₁ ≤ᵗ R₂ = ∀ s₁ → ∃[ s₂ ] ∀ a b → trace R₁ s₁ a b ⇔ trace R₂ s₂ a b
@@ -82,13 +82,14 @@ private variable R R₁ R₂ R₃ R₄ : SRel A B
8282 trace⇔₁ s [] [] = R.K-refl
8383 trace⇔₁ s [] (_ ∷ _) = R.K-refl
8484 trace⇔₁ s (_ ∷ _) [] = R.K-refl
85- trace⇔₁ s (a ∷ as) (b ∷ bs) = ∃-cong S₁↔S₂ ( rel₁⇔rel₂' ×-cong trace⇔₁ s as bs)
85+ trace⇔₁ s (a ∷ as) (b ∷ bs) = ∃-cong S₁↔S₂ λ {s'} → rel₁⇔rel₂' ×-cong trace⇔₁ s' as bs
8686
8787 trace⇔₂ : ∀ s as bs → trace R₂ s as bs ⇔ trace R₁ (from s) as bs
8888 trace⇔₂ s [] [] = R.K-refl
8989 trace⇔₂ s [] (_ ∷ _) = R.K-refl
9090 trace⇔₂ s (_ ∷ _) [] = R.K-refl
91- trace⇔₂ s (a ∷ as) (b ∷ bs) = R.SK-sym $ ∃-cong S₁↔S₂ (rel₁f⇔rel₂t ×-cong R.SK-sym (trace⇔₂ s as bs))
91+ trace⇔₂ s (a ∷ as) (b ∷ bs) = R.SK-sym $ ∃-cong S₁↔S₂ λ {s'} → rel₁f⇔rel₂t ×-cong
92+ R.SK-sym (subst (λ s → _ ⇔ trace _ s _ _) (strictlyInverseʳ s') (trace⇔₂ (to s') as bs))
9293
9394infix 4 _≡ᵗ_ _≡ⁱ_
9495
@@ -211,14 +212,14 @@ Monoidal-SRelC : Monoidal SRelC
211212Monoidal-SRelC = monoidalHelper SRelC record
212213 { ⊗ = record
213214 { F₀ = ⊗₀
214- ; F₁ = ⊗₁
215+ ; F₁ = ⊗. ₁
215216 ; identity = ≡ᵉ⇒≡ᵗ record
216217 { S₁↔S₂ = ×-identityʳ ℓ0 _
217218 ; rel₁⇔rel₂' = λ {_} {a} → mk⇔
218- (λ where (⊗₁₁ refl) → refl ; (⊗₁₂ refl) → refl)
219- (λ where refl → case a returning (λ a → ⊗-rel _ _ a a _) of λ where
220- (inj₁ x) → ⊗₁₁ refl
221- (inj₂ y) → ⊗₁₂ refl)
219+ (λ where (⊗.⊗ ₁₁ refl) → refl ; (⊗. ⊗₁₂ refl) → refl)
220+ (λ where refl → case a returning (λ a → ⊗.⊗ -rel _ _ a a _) of λ where
221+ (inj₁ x) → ⊗.⊗ ₁₁ refl
222+ (inj₂ y) → ⊗.⊗ ₁₂ refl)
222223 }
223224 ; homomorphism = {!!}
224225 ; F-resp-≈ = {!!}
@@ -230,19 +231,19 @@ Monoidal-SRelC = monoidalHelper SRelC record
230231 ; unitorˡ-commute = λ {_} {_} {f} → begin
231232 -- cannot lift this via `StatelessRel`, since `f` isn't stateless
232233 -- this is the only reason, for stateless `f`s this can be lifted
233- Functor.F₁ StatelessRel RelsMonoidal.λ⇒ SRelC.∘ (⊗₁ (SRelC.id , f))
234+ Functor.F₁ StatelessRel RelsMonoidal.λ⇒ SRelC.∘ (⊗. ₁ (SRelC.id , f))
234235 ≈⟨ {!!} ⟩
235236 f SRelC.∘ Functor.F₁ StatelessRel RelsMonoidal.λ⇒ ∎
236237 ; unitorʳ-commute = {!!}
237238 ; assoc-commute = {!!}
238239 ; triangle = begin
239- ⊗₁ (SRelC.id , Functor.F₁ StatelessRel RelsMonoidal.λ⇒) SRelC.∘ Functor.F₁ StatelessRel RelsMonoidal.α⇒
240+ ⊗. ₁ (SRelC.id , Functor.F₁ StatelessRel RelsMonoidal.λ⇒) SRelC.∘ Functor.F₁ StatelessRel RelsMonoidal.α⇒
240241 ≈⟨ {!!} ⟩ -- by functor laws
241242 Functor.F₁ StatelessRel (RelsMonoidal.id RelsMonoidal.⊗₁ RelsMonoidal.λ⇒ RelsMonoidal.∘ RelsMonoidal.α⇒)
242243 ≈⟨ Functor.F-resp-≈ StatelessRel RelsMonoidal.triangle ⟩
243244 Functor.F₁ StatelessRel (RelsMonoidal.ρ⇒ RelsMonoidal.⊗₁ RelsMonoidal.id)
244245 ≈⟨ {!!} ⟩ -- by functor laws
245- ⊗₁ (Functor.F₁ StatelessRel RelsMonoidal.ρ⇒ , SRelC.id) ∎
246+ ⊗. ₁ (Functor.F₁ StatelessRel RelsMonoidal.ρ⇒ , SRelC.id) ∎
246247 ; pentagon = {!!} -- same proof as triangle
247248 }
248249 where open Category.HomReasoning SRelC
0 commit comments