Step
*
2
1
of Lemma
apply_larger_list
1. B : Type
2. n : ℕ
3. A : ℕn ⟶ Type
4. p : ℤ
5. 0 < p
6. 0 ≤ (n - p)
7. n - p < n + 1
8. q : ℕ(n - p) + 1
9. lst : k:{q..n-} ⟶ (A k)
10. r : ℕn - p
11. a : A r
12. f : funtype(p;λx.(A (x + (n - p)));B)
13. ∀q:ℕ((n - p) + 1) + 1. ∀lst:k:{q..n-} ⟶ (A k). ∀r:ℕ(n - p) + 1. ∀a:A r. ∀f:funtype(n - (n - p) + 1;λx.(A
(x
+ (n - p)
+ 1));B).
((apply_gen(n;λx.if (x =z r) then a else lst x fi ) ((n - p) + 1) f) = (apply_gen(n;lst) ((n - p) + 1) f) ∈ B)
14. ¬((n - p) = r ∈ ℤ)
⊢ (apply_gen(n;λx.if (x =z r) then a else lst x fi ) ((n - p) + 1) (f (lst (n - p))))
= (apply_gen(n;lst) ((n - p) + 1) (f (lst (n - p))))
∈ B
BY
{ ((BHyp (-2) THENA Auto)
THEN (Subst ⌜n - (n - p) + 1 ~ p - 1⌝ 0⋅ THENA Auto)
THEN Unfold `funtype` (-3)
THEN (RWO "primrec-unroll" (-3) THENA Auto)
THEN (SplitOnHypITE -3 THENA Auto)
THEN Auto'
THEN All Reduce
THEN DoSubsume
THEN Auto'
THEN BLemma `subtype_rel-equal`
THEN Try ((Unfold `funtype` 0 THEN Reduce 0 THEN EqCD THEN Auto'))
THEN Auto')⋅ }
Latex:
Latex:
1. B : Type
2. n : \mBbbN{}
3. A : \mBbbN{}n {}\mrightarrow{} Type
4. p : \mBbbZ{}
5. 0 < p
6. 0 \mleq{} (n - p)
7. n - p < n + 1
8. q : \mBbbN{}(n - p) + 1
9. lst : k:\{q..n\msupminus{}\} {}\mrightarrow{} (A k)
10. r : \mBbbN{}n - p
11. a : A r
12. f : funtype(p;\mlambda{}x.(A (x + (n - p)));B)
13. \mforall{}q:\mBbbN{}((n - p) + 1) + 1. \mforall{}lst:k:\{q..n\msupminus{}\} {}\mrightarrow{} (A k). \mforall{}r:\mBbbN{}(n - p) + 1. \mforall{}a:A r. \mforall{}f:funtype(n - (n - p)
+ 1;\mlambda{}x.(A
(x
+ (n - p)
+ 1));B).
((apply\_gen(n;\mlambda{}x.if (x =\msubz{} r) then a else lst x fi ) ((n - p) + 1) f)
= (apply\_gen(n;lst) ((n - p) + 1) f))
14. \mneg{}((n - p) = r)
\mvdash{} (apply\_gen(n;\mlambda{}x.if (x =\msubz{} r) then a else lst x fi ) ((n - p) + 1) (f (lst (n - p))))
= (apply\_gen(n;lst) ((n - p) + 1) (f (lst (n - p))))
By
Latex:
((BHyp (-2) THENA Auto)
THEN (Subst \mkleeneopen{}n - (n - p) + 1 \msim{} p - 1\mkleeneclose{} 0\mcdot{} THENA Auto)
THEN Unfold `funtype` (-3)
THEN (RWO "primrec-unroll" (-3) THENA Auto)
THEN (SplitOnHypITE -3 THENA Auto)
THEN Auto'
THEN All Reduce
THEN DoSubsume
THEN Auto'
THEN BLemma `subtype\_rel-equal`
THEN Try ((Unfold `funtype` 0 THEN Reduce 0 THEN EqCD THEN Auto'))
THEN Auto')\mcdot{}
Home
Index