Step
*
1
of Lemma
identity-record+-update
1. T : Atom ⟶ 𝕌'
2. B : record(x.T[x]) ⟶ 𝕌'
3. z : Atom
4. r : self:record(x.T[x]) ⋂ x:Atom ⟶ if x =a z then B[self] else Top fi 
5. r ∈ record(x.T[x])
6. r ∈ x:Atom ⟶ if x =a z then B[r] else Top fi 
7. x : Atom
⊢ if z =a x then r.x else r z fi  = (r z) ∈ B[λz.if z =a x then r.x else r z fi ]
BY
{ ((BoolCase ⌜z =a x⌝⋅ THENA Auto)
   THEN Try ((RevHypSubst' (-1) 0 THEN Unfold `record-select` 0))
   THEN Fold `member` 0
   THEN Fold `record-update` 0
   THEN DoSubsume
   THEN (Subst' z =a z ~ tt 0 THENA Auto)
   THEN Reduce 0
   THEN Try ((Fold `record-select` 0 THEN RWO "identity-record-update" 0))
   THEN Auto) }
Latex:
Latex:
1.  T  :  Atom  {}\mrightarrow{}  \mBbbU{}'
2.  B  :  record(x.T[x])  {}\mrightarrow{}  \mBbbU{}'
3.  z  :  Atom
4.  r  :  self:record(x.T[x])  \mcap{}  x:Atom  {}\mrightarrow{}  if  x  =a  z  then  B[self]  else  Top  fi 
5.  r  \mmember{}  record(x.T[x])
6.  r  \mmember{}  x:Atom  {}\mrightarrow{}  if  x  =a  z  then  B[r]  else  Top  fi 
7.  x  :  Atom
\mvdash{}  if  z  =a  x  then  r.x  else  r  z  fi    =  (r  z)
By
Latex:
((BoolCase  \mkleeneopen{}z  =a  x\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  Try  ((RevHypSubst'  (-1)  0  THEN  Unfold  `record-select`  0))
  THEN  Fold  `member`  0
  THEN  Fold  `record-update`  0
  THEN  DoSubsume
  THEN  (Subst'  z  =a  z  \msim{}  tt  0  THENA  Auto)
  THEN  Reduce  0
  THEN  Try  ((Fold  `record-select`  0  THEN  RWO  "identity-record-update"  0))
  THEN  Auto)
Home
Index