=========================
= =
= §3.4 Bar recursion =
= =
=========================
Chuangjie Xu, February 2020
updated in May 2020
Schwichtenberg [2] shows that the terms of Gödel's System T are closed
under the rule of Spector's bar recursion of types 0 and 1. Oliva and
Steila [1] provide a more direct proof of Schwichtenberg's theorem via
their notion of general bar recursion whose termination condition is
given by decidable monotone predicates on finite sequences. We present
their construction general-bar-recursion functionals [1, Def. 3.1&3.3]
as an instance of our translation, and then prove its correctness using
the fundamental theorem of logical relation.
References
[1] P. Oliva and S. Steila. A direct proof of Schwichtenberg's bar
recursion closure theorem. Accepted by The Journal of Symbolic
Logic, 2017.
[2] H. Schwichtenberg. On bar recursion of types 0 and 1. The
Journal of Symbolic Logic, vol. 44, no. 3, pp. 325–329, 1979.
\begin{code}
{-# OPTIONS --without-K --safe #-}
open import Preliminaries
open import T
open import TAuxiliaries hiding (Φ ; Φ-spec)
module BarRecursion (σ : Ty) where
\end{code}
■ Function extensionality
We will need function extensionality in the proofs of
1. Ψ k is a bar recursion functional of λα.k [1, Lemma 2.1], and
2. κ preserves the logical relation.
\begin{code}
FunExt : Set₁
FunExt = {A B : Set} {f g : A → B} → (∀ x → f x ≡ g x) → f ≡ g
\end{code}
■ Preliminaries
\begin{code}
ℕ* : Set
ℕ* = ℕᴺ × ℕ
infixl 10 _✦_
_✦_ : ℕ* → ℕ → ℕ*
(α , l) ✦ n = rec (λ _ v → rec v (λ _ _ → 0) , 1)
(λ n z f v → rec (f 0) (λ i g → pr₁ (z (f ∘ suc) v) i) , suc (suc n))
l α n
_∋_ : ℕ* → ℕᴺ → Set
(α , l) ∋ β = ∀ i → i < l → α i ≡ β i
_^ : ℕ* → ℕᴺ
_^ = pr₁
s∋sn^ : (s : ℕ*) {n : ℕ} → s ∋ ((s ✦ n) ^)
s∋sn^ (α , suc l) 0 _ = refl
s∋sn^ (α , suc l) (suc i) (≤suc i<l) = s∋sn^ (α ∘ suc , l) i i<l
len : ℕ* → ℕ
len = pr₂
len✦-suc : {s : ℕ*} {n : ℕ} → suc (len s) ≡ len (s ✦ n)
len✦-suc {α , 0} {n} = refl
len✦-suc {α , suc l} {n} = refl
infix 2 _∈_ _∉_
_∉_ _∈_ : {A : Set} → A → (A → ℕ) → Set
a ∈ Q = ¬ (Q a ≡ 0)
a ∉ Q = Q a ≡ 0
∈-dec : {A : Set} {a : A} (Q : A → ℕ) → (a ∈ Q) + (a ∉ Q)
∈-dec {_} {a} Q with Q a
... | 0 = inr refl
... | suc n = inl (λ ())
monotone : (ℕ* → ℕ) → Set
monotone S = ∀ s n → s ∈ S → (s ✦ n) ∈ S
_secures_ : (ℕ* → ℕ) → (ℕᴺ → ℕ) → Set
S secures Y = ∀ (s : ℕ*) → s ∈ S → ∀ (α : ℕᴺ) → s ∋ α → Y (s ^) ≡ Y α
\end{code}
■ General bar recursion
\begin{code}
gBR : {A : Set}
→ (ℕ* → ℕ)
→ ((ℕ* → A) → (ℕ* → (ℕ → A) → A) → ℕ* → A)
→ Set
gBR {A} S ξ = ∀ (G : ℕ* → A) (H : ℕ* → (ℕ → A) → A) (s : ℕ*) →
(s ∈ S → ξ G H s ≡ G s)
× (s ∉ S → ξ G H s ≡ H s (λ n → ξ G H (s ✦ n)))
\end{code}
■ A nucleus for general bar recursion
\begin{code}
Jι : Ty
Jι = (ιᶥ ⇾ ι) ⊠ (ι* ⇾ ι) ⊠ ((ι* ⇾ σ) ⇾ (ι* ⇾ (ι ⇾ σ) ⇾ σ) ⇾ ι* ⇾ σ)
private
⟨_,_,_⟩ : {Γ : Cxt}
→ T Γ (ιᶥ ⇾ ι)
→ T Γ (ι* ⇾ ι)
→ T Γ ((ι* ⇾ σ) ⇾ (ι* ⇾ (ι ⇾ σ) ⇾ σ) ⇾ ι* ⇾ σ)
→ T Γ Jι
⟨ t₀ , t₁ , t₂ ⟩ = Pair · t₀ · (Pair · t₁ · t₂)
V : {Γ : Cxt}
→ T Γ Jι
→ T Γ (ιᶥ ⇾ ι)
V w = Pr1 · w
𝑉 : ⟦ Jι ⟧ʸ → ℕᴺ → ℕ
𝑉 = pr₁
S : {Γ : Cxt}
→ T Γ Jι
→ T Γ (ι* ⇾ ι)
S w = Pr1 · (Pr2 · w)
𝑆 : ⟦ Jι ⟧ʸ → ℕ* → ℕ
𝑆 = pr₁ ∘ pr₂
B : {Γ : Cxt}
→ T Γ Jι
→ T Γ ((ι* ⇾ σ) ⇾ (ι* ⇾ (ι ⇾ σ) ⇾ σ) ⇾ ι* ⇾ σ)
B w = Pr2 · (Pr2 · w)
𝐵 : ⟦ Jι ⟧ʸ → (ℕ* → ⟦ σ ⟧ʸ) → (ℕ* → (ℕ → ⟦ σ ⟧ʸ) → ⟦ σ ⟧ʸ) → ℕ* → ⟦ σ ⟧ʸ
𝐵 = pr₂ ∘ pr₂
η : {Γ : Cxt} → T Γ (ι ⇾ Jι)
η = Lam ⟨ Lam ν₁ , Lam 𝟏 , Lam (Lam ν₁) ⟩
κ : {Γ : Cxt} → T Γ ((ι ⇾ Jι) ⇾ Jι ⇾ Jι)
κ = Lam (Lam ⟨ Lam (V (ν₂ · (V ν₁ · ν₀)) · ν₀)
, Lam (Min · (S ν₁ · ν₀) · (S (ν₂ · (V ν₁ · ^ ν₀ ^)) · ν₀))
, Lam (Lam (B ν₂ · Lam (B (ν₄ · (V ν₃ · ^ ν₀ ^)) · ν₂ · ν₁ · ν₀) · ν₀)) ⟩)
open import GentzenTranslation Jι η κ public
\end{code}
■ The generic element Ω
\begin{code}
φ : {Γ : Cxt}
→ T Γ (ι ⇾ (ι* ⇾ σ) ⇾ (ι* ⇾ (ι ⇾ σ) ⇾ σ) ⇾ ι* ⇾ σ)
φ = Rec · Lam (Lam ν₁)
· Lam (Lam (Lam (Lam (Lam (ν₁ · ν₀ · Lam (ν₄ · ν₃ · ν₂ · (ν₁ ★ ν₀)))))))
Ψ : {Γ : Cxt}
→ T Γ (ι ⇾ (ι* ⇾ σ) ⇾ (ι* ⇾ (ι ⇾ σ) ⇾ σ) ⇾ ι* ⇾ σ)
Ψ = Lam (Lam (Lam (Lam (If · (Lt · ν₃ · Len ν₀)
· (ν₂ · ν₀)
· (φ · (Minus · (Suc · ν₃) · Len ν₀) · ν₂ · ν₁ · ν₀)))))
Ψ-gBR : FunExt
→ (k : ℕ) → gBR (λ s → lt k (len s)) (⟦ Ψ ⟧ k)
Α : {Γ : Cxt} → T Γ (ι ⇾ Jι)
Α = Lam ⟨ Lam (ν₀ · ν₁)
, Lam (Lt · ν₁ · Len ν₀)
, Ψ · ν₀ ⟩
Ω : {Γ : Cxt} → T Γ (Jι ⇾ Jι)
Ω = κ · Α
\end{code}
■ A parametrized logical relation for general bar recursion
\begin{code}
Rι : ℕᴺ → ⟦ ι ⟧ʸ → ⟦ Jι ⟧ʸ → Set
Rι α n (Y , S , B) = n ≡ Y α × monotone S × S secures Y × gBR S B
Rη : (α : ℕᴺ)
→ {Γ : Cxt} (γ : ⟦ Γ ⟧ˣ) (n : ⟦ ι ⟧ʸ) → Rι α n (⟦ η ⟧ᵐ γ n)
Rη α γ n = refl , (λ _ _ z → z) , (λ _ _ _ _ → refl) , (λ _ _ _ → (λ _ → refl) , λ ())
Rκ : FunExt
→ (α : ℕᴺ)
→ {Γ : Cxt} (γ : ⟦ Γ ⟧ˣ) {f : ⟦ ι ⇾ ι ⟧ʸ} {g : ⟦ ι ⇾ Jι ⟧ʸ}
→ (∀ i → Rι α (f i) (g i))
→ ∀ {n w} → Rι α n w → Rι α (f n) (⟦ κ ⟧ᵐ γ g w)
RΩ : FunExt
→ (α : ℕᴺ)
→ ∀{n w} → Rι α n w → Rι α (α n) (⟦ Ω ⟧ w)
RΩ funExt α {n} {w} = Rκ funExt α ⋆ claim {n} {w}
where
mSΑ : (k : ℕ) → monotone (𝑆 (⟦ Α ⟧ k))
mSΑ k s m r = <→Lt k<|sm|
where
k<|s| : k < len s
k<|s| = Lt→< r
k<|sm| : k < len (s ✦ m)
k<|sm| = ≤trans k<|s| (≤trans (≤suc' ≤refl) (≤refl' len✦-suc))
SΑsVΑ : (k : ℕ) → 𝑆 (⟦ Α ⟧ k) secures 𝑉 (⟦ Α ⟧ k)
SΑsVΑ k s k<|s| α sα = sα k (Lt→< k<|s|)
claim : ∀ i → Rι α (α i) (⟦ Α ⟧ i)
claim i = refl , mSΑ i , SΑsVΑ i , Ψ-gBR funExt i
\end{code}
■ Theorem 11. For any closed term Y : ℕᴺ → ℕ of T,
1. S(YᴶΩ) is a monotone predicate securing Y, and
2. B(YᴶΩ) is a functional of general bar recursion.
\begin{code}
Thm[gBR] : FunExt
→ (Y : T ε (ιᶥ ⇾ ι))
→ monotone (𝑆 ⟦ Y ᴶ · Ω ⟧)
× 𝑆 ⟦ Y ᴶ · Ω ⟧ secures ⟦ Y ⟧
× gBR (𝑆 ⟦ Y ᴶ · Ω ⟧) (𝐵 ⟦ Y ᴶ · Ω ⟧)
Thm[gBR] funExt Y = mS , SsY , gbr
where
R : ℕᴺ → {ρ : Ty} → ⟦ ρ ⟧ʸ → ⟦ ⟨ ρ ⟩ᴶ ⟧ʸ → Set
R α = LR._R_
where
import LogicalRelation Jι η κ (Rι α) (Rη α) (Rκ funExt α) as LR
fact : ∀ α → Rι α (⟦ Y ⟧ α) ⟦ Y ᴶ · Ω ⟧
fact α = LR.FTLR Y ⋆ (RΩ funExt α)
where
import LogicalRelation Jι η κ (Rι α) (Rη α) (Rκ funExt α) as LR
mS : monotone (𝑆 ⟦ Y ᴶ · Ω ⟧)
mS = pr₁ (pr₂ (fact 0ʷ))
SsY : 𝑆 ⟦ Y ᴶ · Ω ⟧ secures ⟦ Y ⟧
SsY s sS α sα = begin
⟦ Y ⟧ (s ^)
≡⟨ pr₁ (fact (s ^)) ⟩
𝑉 ⟦ Y ᴶ · Ω ⟧ (s ^)
≡⟨ pr₁ (pr₂ (pr₂ (fact 0ʷ))) s sS α sα ⟩
𝑉 ⟦ Y ᴶ · Ω ⟧ α
≡⟨ sym (pr₁ (fact α)) ⟩
⟦ Y ⟧ α
∎
gbr : gBR (𝑆 ⟦ Y ᴶ · Ω ⟧) (𝐵 ⟦ Y ᴶ · Ω ⟧)
gbr = pr₂ (pr₂ (pr₂ (fact 0ʷ)))
GBF : T ε (ιᶥ ⇾ ι)
→ (ℕ* → ⟦ σ ⟧ʸ) → (ℕ* → (ℕ → ⟦ σ ⟧ʸ) → ⟦ σ ⟧ʸ) → ℕ* → ⟦ σ ⟧ʸ
GBF t = ⟦ B (t ᴶ · Ω) ⟧
\end{code}
■ Spector's Bar-recursion functionals
\begin{code}
private
H : {Γ : Cxt}
→ T Γ ((ιᶥ ⇾ ι)
⇾ (ι* ⇾ σ)
⇾ (ι* ⇾ (ι ⇾ σ) ⇾ σ)
⇾ ι* ⇾ (ι ⇾ σ) ⇾ σ)
H = Lam (Lam (Lam (Lam (Lam (If · (Minus · Len ν₁ · (ν₄ · ^ ν₁ ^))
· (ν₃ · ν₁)
· (ν₂ · ν₁ · ν₀))))))
Φ : {Γ : Cxt}
→ T Γ ((ιᶥ ⇾ ι)
⇾ ((ι* ⇾ σ) ⇾ (ι* ⇾ (ι ⇾ σ) ⇾ σ) ⇾ ι* ⇾ σ)
⇾ ((ι* ⇾ σ) ⇾ (ι* ⇾ (ι ⇾ σ) ⇾ σ) ⇾ ι* ⇾ σ))
Φ = Lam (Lam (Lam (Lam (ν₂ · Lam (Ψ · (ν₄ · ^ ν₀ ^) · ν₂ · ν₁ · ν₀) · (H · ν₃ · ν₁ · ν₀)))))
SBF : T ε (ιᶥ ⇾ ι)
→ (ℕ* → ⟦ σ ⟧ʸ) → (ℕ* → (ℕ → ⟦ σ ⟧ʸ) → ⟦ σ ⟧ʸ) → ℕ* → ⟦ σ ⟧ʸ
SBF t = ⟦ Φ · t · B (t ᴶ · Ω) ⟧
\end{code}
■ Appendix : Proofs of
1. Ψ-gBR : Ψ k is a bar recursion functional for λα.k
2. Rκ : κ preserves the logical relation
\begin{code}
Ψ-gBR funExt k G H s = base , step
where
base : ¬ (lt k (len s) ≡ 0)
→ ⟦ Ψ ⟧ k G H s ≡ G s
base = If-spec₁
step : lt k (len s) ≡ 0
→ ⟦ Ψ ⟧ k G H s ≡ H s (λ m → ⟦ Ψ ⟧ k G H (s ✦ m))
step k≮|s| = case claim₀ claim₁ (≤-cases (Lt→≤ k≮|s|))
where
E4 : ⟦ Ψ ⟧ k G H s ≡ ⟦ φ ⟧ (suc k - len s) G H s
E4 = If-spec₀ k≮|s|
claim₀ : len s ≡ k
→ ⟦ Ψ ⟧ k G H s ≡ H s (λ m → ⟦ Ψ ⟧ k G H (s ✦ m))
claim₀ |s|≡n = begin
⟦ Ψ ⟧ k G H s ≡⟨ E4 ⟩ ⟦ φ ⟧ (suc k - len s) G H s
≡⟨ † ⟩ ⟦ φ ⟧ 1 G H s
≡⟨ E4' ⟩ H s (λ m → ⟦ Ψ ⟧ k G H (s ✦ m)) ∎
where
† : ⟦ φ ⟧ (suc k - len s) G H s ≡ ⟦ φ ⟧ 1 G H s
† = ap (λ x → ⟦ φ ⟧ x G H s)
(trans (ap (suc k -_) |s|≡n) (Lm[n+1-n≡1] k))
k+1≡|sm| : {m : ℕ} → suc k ≡ len (s ✦ m)
k+1≡|sm| = trans (sym (ap suc |s|≡n)) len✦-suc
k<|sm| : {m : ℕ} → ¬ (lt k (len (s ✦ m)) ≡ 0)
k<|sm| {m} = <→Lt (≤refl' k+1≡|sm|)
fact : (m : ℕ) → ⟦ Ψ ⟧ k G H (s ✦ m) ≡ G (s ✦ m)
fact _ = If-spec₁ k<|sm|
E4' : H s (λ m → G (s ✦ m)) ≡ H s (λ m → ⟦ Ψ ⟧ k G H (s ✦ m))
E4' = ap (H s) (sym (funExt fact))
claim₁ : len s < k
→ ⟦ Ψ ⟧ k G H s ≡ H s (λ m → ⟦ Ψ ⟧ k G H (s ✦ m))
claim₁ |s|<k = begin
⟦ Ψ ⟧ k G H s ≡⟨ E4 ⟩ ⟦ φ ⟧ (suc k - len s) G H s
≡⟨ E3 ⟩ H s (λ m → ⟦ φ ⟧ (k+1-|s|-1) G H (s ✦ m))
≡⟨ □ ⟩ H s (λ m → ⟦ φ ⟧ (suc k - len (s ✦ m)) G H (s ✦ m))
≡⟨ E4' ⟩ H s (λ m → ⟦ Ψ ⟧ k G H (s ✦ m)) ∎
where
|s|<k+1 : len s < suc k
|s|<k+1 = ≤suc' |s|<k
k+1-|s|-1 : ℕ
k+1-|s|-1 = pr₁ (Lm[n<m→k+1=m-n] |s|<k+1)
k+1-|s|-1-spec : suc k+1-|s|-1 ≡ suc k - len s
k+1-|s|-1-spec = pr₂ (Lm[n<m→k+1=m-n] |s|<k+1)
E3 : ⟦ φ ⟧ (suc k - len s) G H s ≡ H s (λ m → ⟦ φ ⟧ (k+1-|s|-1) G H (s ✦ m))
E3 = ap (λ x → ⟦ φ ⟧ x G H s) (sym k+1-|s|-1-spec)
ex : (m : ℕ)
→ ⟦ φ ⟧ (k+1-|s|-1) G H (s ✦ m) ≡ ⟦ φ ⟧ (suc k - len (s ✦ m)) G H (s ✦ m)
ex m = ap (λ x → ⟦ φ ⟧ x G H (s ✦ m))
(trans (Lm[k+1=n+1-m→k=n-m] k k+1-|s|-1-spec)
(ap (suc k -_) (len✦-suc {s})))
□ : H s (λ m → ⟦ φ ⟧ (k+1-|s|-1) G H (s ✦ m))
≡ H s (λ m → ⟦ φ ⟧ (suc k - len (s ✦ m)) G H (s ✦ m))
□ = ap (H s) (funExt ex)
n≮|sm| : {m : ℕ} → lt k (len (s ✦ m)) ≡ 0
n≮|sm| = transport (λ x → lt k x ≡ 0) len✦-suc (≤→Lt |s|<k)
ex' : (m : ℕ)
→ ⟦ Ψ ⟧ k G H (s ✦ m) ≡ ⟦ φ ⟧ (suc k - len (s ✦ m)) G H (s ✦ m)
ex' m = If-spec₀ n≮|sm|
E4' : H s (λ m → ⟦ φ ⟧ (suc k - len (s ✦ m)) G H (s ✦ m))
≡ H s (λ m → ⟦ Ψ ⟧ k G H (s ✦ m))
E4' = sym (ap (H s) (funExt ex'))
Rκ funExt α γ {f} {g} ζ {n} {Y , S , B} (n≡Yα , mS , SsY , gbr) = e , mSκ , SκsVκ , gbrκ
where
e₀ : f n ≡ pr₁ (g n) α
e₀ = pr₁ (ζ n)
e₁ : pr₁ (g n) α ≡ pr₁ (g (Y α)) α
e₁ = ap (λ x → pr₁ (g x) α) n≡Yα
e : f n ≡ pr₁ (g (Y α)) α
e = trans e₀ e₁
mSκ : monotone (𝑆 (⟦ κ ⟧ᵐ γ g (Y , S , B)))
mSκ s n sSκ = Min-nonzero' _ _ snS snSg
where
sS : s ∈ S
sS = pr₁ (Min-nonzero _ _ sSκ)
snS : (s ✦ n) ∈ S
snS = mS s n sS
Ys≡Ysn : Y (s ^) ≡ Y ((s ✦ n) ^)
Ys≡Ysn = SsY s sS ((s ✦ n) ^) (s∋sn^ s)
sSg : s ∈ 𝑆 (g (Y (s ^)))
sSg = pr₂ (Min-nonzero (S s) _ sSκ)
snSgs : (s ✦ n) ∈ 𝑆 (g (Y (s ^)))
snSgs = pr₁ (pr₂ (ζ (Y (s ^)))) s n sSg
snSg : (s ✦ n) ∈ 𝑆 (g (Y ((s ✦ n) ^)))
snSg = transport (λ x → (s ✦ n) ∈ 𝑆 (g x)) Ys≡Ysn snSgs
SκsVκ : (𝑆 (⟦ κ ⟧ᵐ γ g (Y , S , B))) secures (𝑉 (⟦ κ ⟧ᵐ γ g (Y , S , B)))
SκsVκ s sSκ α sα = begin
𝑉 (g (Y (s ^))) (s ^)
≡⟨ ap (λ x → 𝑉 (g x) (s ^)) Ys≡Yα ⟩
𝑉 (g (Y α)) (s ^)
≡⟨ pr₁ (pr₂ (pr₂ (ζ (Y α)))) s sSgα α sα ⟩
𝑉 (g (Y α)) α
∎
where
sS : s ∈ S
sS = pr₁ (Min-nonzero _ _ sSκ)
Ys≡Yα : Y (s ^) ≡ Y α
Ys≡Yα = SsY s sS α sα
sSg : s ∈ 𝑆 (g (Y (s ^)))
sSg = pr₂ (Min-nonzero (S s) _ sSκ)
sSgα : s ∈ 𝑆 (g (Y α))
sSgα = transport (λ x → s ∈ 𝑆 (g x)) Ys≡Yα sSg
gbrκ : gBR (𝑆 (⟦ κ ⟧ᵐ γ g (Y , S , B))) (𝐵 (⟦ κ ⟧ᵐ γ g (Y , S , B)))
gbrκ G H s = base , step
where
base : s ∈ 𝑆 (⟦ κ ⟧ᵐ γ g (Y , S , B))
→ 𝐵 (⟦ κ ⟧ᵐ γ g (Y , S , B)) G H s ≡ G s
base sSκ = begin
B (λ s' → 𝐵 (g (Y (s' ^))) G H s') H s
≡⟨ pr₁ (gbr _ H s) sS ⟩
𝐵 (g (Y (s ^))) G H s
≡⟨ pr₁ (pr₂ (pr₂ (pr₂ (ζ (Y (s ^))))) G H s) sSg ⟩
G s
∎
where
sS : s ∈ S
sS = pr₁ (Min-nonzero _ _ sSκ)
sSg : s ∈ 𝑆 (g (Y (s ^)))
sSg = pr₂ (Min-nonzero (S s) _ sSκ)
step : s ∉ 𝑆 (⟦ κ ⟧ᵐ γ g (Y , S , B))
→ 𝐵 (⟦ κ ⟧ᵐ γ g (Y , S , B)) G H s
≡ H s (λ m → 𝐵 (⟦ κ ⟧ᵐ γ g (Y , S , B)) G H (s ✦ m))
step ¬sSκ = case claim₀ claim₁ (∈-dec S)
where
claim₀ : s ∈ S
→ 𝐵 (⟦ κ ⟧ᵐ γ g (Y , S , B)) G H s
≡ H s (λ m → 𝐵 (⟦ κ ⟧ᵐ γ g (Y , S , B)) G H (s ✦ m))
claim₀ sS = begin
B (λ s' → 𝐵 (g (Y (s' ^))) G H s') H s
≡⟨ pr₁ (gbr _ H s) sS ⟩
𝐵 (g (Y (s ^))) G H s
≡⟨ pr₂ (pr₂ (pr₂ (pr₂ (ζ (Y (s ^))))) G H s) ¬sSg ⟩
H s (λ m → 𝐵 (g (Y (s ^))) G H (s ✦ m))
≡⟨ ap (H s) (funExt ex) ⟩
H s (λ m → 𝐵 (⟦ κ ⟧ᵐ γ g (Y , S , B)) G H (s ✦ m))
∎
where
¬sSg : s ∉ 𝑆 (g (Y (s ^)))
¬sSg = Min-zero-cases _ _ ¬sSκ sS
Ys≡Ysm : {m : ℕ} → Y (s ^) ≡ Y ((s ✦ m) ^)
Ys≡Ysm {m} = SsY s sS ((s ✦ m) ^) (s∋sn^ s)
ex : (m : ℕ)
→ 𝐵 (g (Y (s ^))) G H (s ✦ m)
≡ B (λ s' → 𝐵 (g (Y (s' ^))) G H s') H (s ✦ m)
ex m = begin
𝐵 (g (Y (s ^))) G H (s ✦ m)
≡⟨ ap (λ x → 𝐵 (g x) G H (s ✦ m)) Ys≡Ysm ⟩
𝐵 (g (Y ((s ✦ m) ^))) G H (s ✦ m)
≡⟨ sym (pr₁ (gbr _ H (s ✦ m)) (mS s m sS)) ⟩
B (λ s' → 𝐵 (g (Y (s' ^))) G H s') H (s ✦ m)
∎
claim₁ : s ∉ S
→ 𝐵 (⟦ κ ⟧ᵐ γ g (Y , S , B)) G H s
≡ H s (λ m → 𝐵 (⟦ κ ⟧ᵐ γ g (Y , S , B)) G H (s ✦ m))
claim₁ = pr₂ (gbr _ H s)
\end{code}