Step
*
1
1
of Lemma
canonicalizable-function
.....equality.....
1. T : Type
2. T ⊆r Base
3. value-type(T)
4. B : T ⟶ Type
5. ∀x:T. (B[x] ⊆r Base)
6. f : Base
7. ∀x:T. ((f x) = x ∈ T)
8. ∀x:Base. ((f x)↓
⇒ (x ∈ T))
9. a : Base
10. b : Base
11. c : a = b ∈ (x:T ⟶ B[x])
⊢ λx.eval z = f x in
a z ~ λx.eval z = f x in
b z
BY
{ (SqEqCD
THEN SqequalSqle⋅
THEN AssumeHasValue
THEN (HasValueD (-1) ORELSE (ExceptionCases (-1) THEN Try (SameException)))
THEN Try ((CallByValueReduce 0 THENA Auto))
THEN (FHyp 8 [-1] THENA Auto)
THEN (InstHyp [⌜x⌝] 7⋅ THENA Auto)
THEN (Assert ⌜∀a,b:x:T ⟶ B[x]. ((a = b ∈ (x:T ⟶ B[x]))
⇒ ((a (f x)) = (b (f x)) ∈ B[x]))⌝⋅ THENA Auto)
THEN (FHyp (-1) [11] THENA Auto)
THEN HypSubst' (-1) 0
THEN Auto) }
Latex:
Latex:
.....equality.....
1. T : Type
2. T \msubseteq{}r Base
3. value-type(T)
4. B : T {}\mrightarrow{} Type
5. \mforall{}x:T. (B[x] \msubseteq{}r Base)
6. f : Base
7. \mforall{}x:T. ((f x) = x)
8. \mforall{}x:Base. ((f x)\mdownarrow{} {}\mRightarrow{} (x \mmember{} T))
9. a : Base
10. b : Base
11. c : a = b
\mvdash{} \mlambda{}x.eval z = f x in
a z \msim{} \mlambda{}x.eval z = f x in
b z
By
Latex:
(SqEqCD
THEN SqequalSqle\mcdot{}
THEN AssumeHasValue
THEN (HasValueD (-1) ORELSE (ExceptionCases (-1) THEN Try (SameException)))
THEN Try ((CallByValueReduce 0 THENA Auto))
THEN (FHyp 8 [-1] THENA Auto)
THEN (InstHyp [\mkleeneopen{}x\mkleeneclose{}] 7\mcdot{} THENA Auto)
THEN (Assert \mkleeneopen{}\mforall{}a,b:x:T {}\mrightarrow{} B[x]. ((a = b) {}\mRightarrow{} ((a (f x)) = (b (f x))))\mkleeneclose{}\mcdot{} THENA Auto)
THEN (FHyp (-1) [11] THENA Auto)
THEN HypSubst' (-1) 0
THEN Auto)
Home
Index