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