Skip to content

Commit c3088c3

Browse files
committed
Only expand foldl in the FST proofs where necessary
1 parent add47fb commit c3088c3

1 file changed

Lines changed: 35 additions & 25 deletions

File tree

src/Lang/FST.agda

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -516,15 +516,15 @@ module Impose (AtomSet : 𝔸) where
516516
foldl _⊙_ (xs ⊙ z) (y ∷ ys)
517517
≡⟨⟩
518518
foldl _⊙_ ((xs ⊙ z) ⊙ y) ys
519-
≡⟨ Eq.cong (λ x foldl _⊙_ x ys) (reorder-⊙ xs y z (≉-sym z≉y) z∈xs) ⟩
520-
foldl _⊙_ ((xs ⊙ y) ⊙ z) ys
521519
≡⟨⟩
522-
foldl _⊙_ (xs ⊙ y) (z ∷ ys)
523-
≡⟨ reorder-after-⊕ (xs ⊙ y) ys z (∈-⊙ˡ z xs y z∈xs) z∉ys ⟩
524-
foldl _⊙_ xs (y ∷ (ys ⊙ z))
525-
≡⟨ Eq.cong (foldl _⊙_ xs) (compute-⊙-excludes y ys z z≉y) ⟨
526-
foldl _⊙_ xs ((y ∷ ys) ⊙ z)
520+
((xs ⊙ z) ⊙ y) ⊕ ys
521+
≡⟨ Eq.cong (_⊕ ys) (reorder-⊙ xs y z (≉-sym z≉y) z∈xs) ⟩
522+
((xs ⊙ y) ⊙ z) ⊕ ys
527523
≡⟨⟩
524+
(xs ⊙ y) ⊕ (z ∷ ys)
525+
≡⟨ reorder-after-⊕ (xs ⊙ y) ys z (∈-⊙ˡ z xs y z∈xs) z∉ys ⟩
526+
xs ⊕ (y ∷ (ys ⊙ z))
527+
≡⟨ Eq.cong (xs ⊕_) (compute-⊙-excludes y ys z z≉y) ⟨
528528
xs ⊕ ((y ∷ ys) ⊙ z)
529529
530530

@@ -575,16 +575,20 @@ module Impose (AtomSet : 𝔸) where
575575
foldl _⊙_ xs (z -< cs₁ ⊕ cs₂ >- ∷ ys)
576576
≡⟨⟩
577577
foldl _⊙_ (xs ⊙ (z -< cs₁ ⊕ cs₂ >-)) ys
578+
≡⟨⟩
579+
(xs ⊙ (z -< cs₁ ⊕ cs₂ >-)) ⊕ ys
578580
≡⟨ Eq.cong (λ x foldl _⊙_ x ys) (⊙-⊕-distrib xs z cs₁ cs₂ xs-wf cs₁-wf z-wf) ⟩
579-
foldl _⊙_ ((xs ⊙ z -< cs₁ >-) ⊙ (z -< cs₂ >-)) ys
581+
((xs ⊙ z -< cs₁ >-) ⊙ (z -< cs₂ >-)) ys
580582
≡⟨⟩
581-
foldl _⊙_ (xs ⊙ z -< cs₁ >-) (z -< cs₂ >- ∷ ys)
583+
(xs ⊙ z -< cs₁ >-) (z -< cs₂ >- ∷ ys)
582584
≡⟨ reorder-after-⊕ (xs ⊙ z -< cs₁ >-) ys (z -< cs₂ >-) (∈-⊙ʳ (z -< cs₂ >-) xs (z -< cs₁ >-) refl) z∉ys ⟩
583-
foldl _⊙_ (xs ⊙ z -< cs₁ >-) (ys ⊙ z -< cs₂ >-)
585+
(xs ⊙ z -< cs₁ >-) (ys ⊙ z -< cs₂ >-)
584586
≡⟨ ⊕-⊙-assoc-excludes (xs ⊙ z -< cs₁ >-) ys (z -< cs₂ >-) z∉ys ⟩
585-
foldl _⊙_ (xs ⊙ z -< cs₁ >-) ys ⊙ (z -< cs₂ >-)
587+
((xs ⊙ z -< cs₁ >-) ⊕ ys) ⊙ (z -< cs₂ >-)
586588
≡⟨⟩
587-
foldl _⊙_ xs (z -< cs₁ >- ∷ ys) ⊙ (z -< cs₂ >-)
589+
(foldl _⊙_ (xs ⊙ z -< cs₁ >-) ys) ⊙ (z -< cs₂ >-)
590+
≡⟨⟩
591+
(foldl _⊙_ xs (z -< cs₁ >- ∷ ys)) ⊙ (z -< cs₂ >-)
588592
≡⟨⟩
589593
(xs ⊕ (z -< cs₁ >- ∷ ys)) ⊙ (z -< cs₂ >-)
590594
@@ -612,15 +616,19 @@ module Impose (AtomSet : 𝔸) where
612616
⊕-assoc xs ys (z ∷ zs) xs-wf ys-wf (_ ∷ zs-unique , z-wf ∷ zs-wf) =
613617
xs ⊕ (ys ⊕ (z ∷ zs))
614618
≡⟨⟩
615-
foldl _⊙_ xs (foldl _⊙_ ys (z ∷ zs))
619+
xs ⊕ foldl _⊙_ ys (z ∷ zs)
620+
≡⟨⟩
621+
xs ⊕ foldl _⊙_ (ys ⊙ z) zs
616622
≡⟨⟩
617-
foldl _⊙_ xs (foldl _⊙_ (ys ⊙ z) zs)
623+
xs ⊕ ((ys ⊙ z) zs)
618624
≡⟨ ⊕-assoc xs (ys ⊙ z) zs xs-wf (⊙-wf ys-wf z-wf) (zs-unique , zs-wf) ⟩
619-
foldl _⊙_ (foldl _⊙_ xs (ys ⊙ z)) zs
625+
(xs (ys ⊙ z)) zs
620626
≡⟨ Eq.cong (λ x foldl _⊙_ x zs) (⊕-⊙-assoc xs ys z xs-wf ys-wf z-wf) ⟩
621-
foldl _⊙_ (foldl _⊙_ xs ys ⊙ z) zs
627+
((xs ⊕ ys) ⊙ z) zs
622628
≡⟨⟩
623-
foldl _⊙_ (foldl _⊙_ xs ys) (z ∷ zs)
629+
foldl _⊙_ ((xs ⊕ ys) ⊙ z) zs
630+
≡⟨⟩
631+
foldl _⊙_ (xs ⊕ ys) (z ∷ zs)
624632
≡⟨⟩
625633
(xs ⊕ ys) ⊕ (z ∷ zs)
626634
@@ -697,18 +705,20 @@ module Impose (AtomSet : 𝔸) where
697705
⊕-++-idem xs₁ (x ∷ xs₂) ys (xs-unique , xs-wf) ys-wf =
698706
(xs₁ ++ (x ∷ xs₂)) ⊕ (ys ⊕ (x ∷ xs₂))
699707
≡⟨⟩
700-
foldl _⊙_ (xs₁ ++ (x ∷ xs₂)) (foldl _⊙_ ys (x ∷ xs₂))
708+
(xs₁ ++ (x ∷ xs₂)) ⊕ foldl _⊙_ ys (x ∷ xs₂)
709+
≡⟨⟩
710+
(xs₁ ++ (x ∷ xs₂)) ⊕ foldl _⊙_ (ys ⊙ x) xs₂
701711
≡⟨⟩
702712
foldl _⊙_ (xs₁ ++ (x ∷ xs₂)) (foldl _⊙_ (ys ⊙ x) xs₂)
703-
≡⟨ Eq.cong (λ p foldl _⊙_ p (foldl _⊙_ (ys ⊙ x) xs₂)) (List.∷ʳ-++ xs₁ x xs₂) ⟨
704-
foldl _⊙_ ((xs₁ ∷ʳ x) ++ xs₂) (foldl _⊙_ (ys ⊙ x) xs₂)
713+
≡⟨⟩
714+
(xs₁ ++ (x ∷ xs₂)) ⊕ ((ys ⊙ x) ⊕ xs₂)
715+
≡⟨ Eq.cong (_⊕ ((ys ⊙ x) ⊕ xs₂)) (List.∷ʳ-++ xs₁ x xs₂) ⟨
716+
((xs₁ ∷ʳ x) ++ xs₂) ⊕ ((ys ⊙ x) ⊕ xs₂)
705717
≡⟨ ⊕-++-idem (xs₁ ∷ʳ x) xs₂ (ys ⊙ x) (Eq.subst AllWellFormed (Eq.sym (List.∷ʳ-++ xs₁ x xs₂)) (xs-unique , xs-wf)) (⊙-wf ys-wf (All.head (All.++⁻ʳ xs₁ xs-wf))) ⟩
706-
foldl _⊙_ ((xs₁ ∷ʳ x) ++ xs₂) (ys ⊙ x)
707-
≡⟨ Eq.cong (λ p foldl _⊙_ p (ys ⊙ x)) (List.∷ʳ-++ xs₁ x xs₂) ⟩
708-
foldl _⊙_ (xs₁ ++ (x ∷ xs₂)) (ys ⊙ x)
718+
((xs₁ ∷ʳ x) ++ xs₂) (ys ⊙ x)
719+
≡⟨ Eq.cong (_⊕ (ys ⊙ x)) (List.∷ʳ-++ xs₁ x xs₂) ⟩
720+
(xs₁ ++ (x ∷ xs₂)) (ys ⊙ x)
709721
≡⟨ ⊙-distant-idempotence (xs₁ ++ (x ∷ xs₂)) ys x (xs-unique , xs-wf) ys-wf (All.head (All.++⁻ʳ xs₁ xs-wf)) (Any.++⁺ʳ xs₁ (here refl)) ⟩
710-
foldl _⊙_ (xs₁ ++ (x ∷ xs₂)) ys
711-
≡⟨⟩
712722
(xs₁ ++ (x ∷ xs₂)) ⊕ ys
713723
714724

0 commit comments

Comments
 (0)