Nuprl Lemma : push-spread-into-ifthenelse

∀[a,X,Y,Z:Top].
  (let c,d = a 
   in if X[c;d] then Y[c;d] else Z[c;d] fi  ~ if let c,d = a 
                                                 in X[c;d]
  then let c,d = a 
       in Y[c;d]
  else let c,d = a 
       in Z[c;d]
  fi )


Proof




Definitions occuring in Statement :  ifthenelse: if b then t else f fi ,  uall: ∀[x:A]. B[x],  top: Top,  so_apply: x[s1;s2],  spread: spread def,  sqequal: s ~ t
Definitions unfolded in proof :  so_apply: x[s1;s2],  so_lambda: λ2x y.t[x; y],  squash: ↓T,  or: P ∨ Q,  prop: ℙ,  has-value: (a)↓,  ifthenelse: if b then t else f fi ,  implies: P ⇒ Q,  all: ∀x:A. B[x],  and: P ∧ Q,  strict4: strict4(F),  uimplies: b supposing a,  top: Top,  so_apply: x[s1;s2;s3;s4],  member: t ∈ T,  so_lambda: so_lambda(x,y,z,w.t[x; y; z; w]),  uall: ∀[x:A]. B[x]
Lemmas referenced :  istype-top,  is-exception_wf,  istype-base,  has-value_wf_base,  istype-void,  lifting-strict-spread
Rules used in proof :  axiomSqleEquality,  spreadExceptionCases,  productElimination,  callbyvalueSpread,  divergentSqle,  sqequalSqle,  Error :inlFormation_alt,  exceptionSqequal,  imageElimination,  imageMemberEquality,  because_Cache,  Error :inrFormation_alt,  decideExceptionCases,  closedConclusion,  baseApply,  Error :universeIsType,  independent_functionElimination,  dependent_functionElimination,  Error :equalityIstype,  sqleReflexivity,  unionElimination,  Error :inhabitedIsType,  equalitySymmetry,  equalityTransitivity,  hypothesisEquality,  callbyvalueDecide,  Error :lambdaFormation_alt,  independent_pairFormation,  independent_isectElimination,  hypothesis,  voidElimination,  Error :isect_memberEquality_alt,  baseClosed,  thin,  isectElimination,  sqequalHypSubstitution,  extract_by_obid,  introduction,  cut,  sqequalRule,  Error :isect_memberFormation_alt,  sqequalReflexivity,  computationStep,  sqequalTransitivity,  sqequalSubstitution

Latex:
\mforall{}[a,X,Y,Z:Top].
    (let  c,d  =  a 
      in  if  X[c;d]  then  Y[c;d]  else  Z[c;d]  fi    \msim{}  if  let  c,d  =  a 
                                                                                                  in  X[c;d]
    then  let  c,d  =  a 
              in  Y[c;d]
    else  let  c,d  =  a 
              in  Z[c;d]
    fi  )



Date html generated: 2019_06_20-AM-11_27_18
Last ObjectModification: 2019_06_19-PM-04_37_01

Theory : computation


Home Index