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