Nuprl Lemma : indexed-coinduction-principle

[I:Type]. ∀[F:Type ⟶ Type].
  ∀[R:(I ⟶ corec(T.F[T])) ⟶ (I ⟶ corec(T.F[T])) ⟶ ℙ]
    ∀[x,y:I ⟶ corec(T.F[T])].  y ∈ (I ⟶ corec(T.F[T])) supposing R[x;y] 
    supposing x,y.R[x;y] is an T.F[T]-bisimulation (indexed I) 
  supposing ContinuousMonotone(T.F[T])


Proof




Definitions occuring in Statement :  indexed-F-bisimulation: x,y.R[x; y] is an T.F[T]-bisimulation (indexed I) corec: corec(T.F[T]) continuous-monotone: ContinuousMonotone(T.F[T]) uimplies: supposing a uall: [x:A]. B[x] prop: so_apply: x[s1;s2] so_apply: x[s] function: x:A ⟶ B[x] universe: Type equal: t ∈ T
Definitions unfolded in proof :  continuous-monotone: ContinuousMonotone(T.F[T]) type-monotone: Monotone(T.F[T]) type-continuous: Continuous(T.F[T]) corec: corec(T.F[T]) indexed-F-bisimulation: x,y.R[x; y] is an T.F[T]-bisimulation (indexed I) less_than: a < b squash: T cand: c∧ B decidable: Dec(P) subtract: m bool: 𝔹 unit: Unit it: btrue: tt uiff: uiff(P;Q) and: P ∧ Q ifthenelse: if then else fi  le: A ≤ B not: ¬A less_than': less_than'(a;b) true: True bfalse: ff exists: x:A. B[x] or: P ∨ Q sq_type: SQType(T) bnot: ¬bb assert: b rev_implies:  Q iff: ⇐⇒ Q all: x:A. B[x] nat: implies:  Q false: False ge: i ≥  guard: {T} top: Top subtype_rel: A ⊆B uall: [x:A]. B[x] member: t ∈ T uimplies: supposing a so_lambda: λ2x.t[x] so_apply: x[s] so_lambda: λ2y.t[x; y] so_apply: x[s1;s2] prop:
Lemmas referenced :  nat_wf equal_wf and_wf le_weakening2 primrec_wf subtract_wf decidable__le istype-false not-le-2 condition-implies-le minus-one-mul zero-add minus-one-mul-top minus-add minus-minus add-swap le-add-cancel istype-le top_wf int_seg_wf primrec-unroll lt_int_wf eqtt_to_assert assert_of_lt_int less-iff-le add_functionality_wrt_le add-associates istype-int add-zero add-commutes le-add-cancel2 eqff_to_assert bool_cases_sqequal subtype_base_sq bool_wf bool_subtype_base assert-bnot iff_weakening_uiff assert_wf less_than_wf nat_properties less_than_transitivity1 less_than_irreflexivity ge_wf istype-less_than primrec0_lemma istype-void subtype_rel_self subtract-1-ge-0 istype-nat indexed-F-bisimulation_wf corec_wf continuous-monotone_wf istype-universe
Rules used in proof :  lambdaEquality functionEquality dependent_set_memberEquality isect_memberEquality functionExtensionality isect_memberFormation independent_pairEquality Error :isectIsType,  closedConclusion Error :dependent_set_memberEquality_alt,  independent_pairFormation imageElimination minusEquality Error :productIsType,  applyLambdaEquality unionElimination equalityElimination equalityTransitivity equalitySymmetry productElimination addEquality Error :dependent_pairFormation_alt,  Error :equalityIstype,  promote_hyp cumulativity Error :lambdaFormation_alt,  setElimination rename intWeakElimination natural_numberEquality independent_functionElimination voidElimination dependent_functionElimination Error :functionIsTypeImplies,  Error :functionExtensionality_alt,  sqequalSubstitution sqequalTransitivity computationStep sqequalReflexivity Error :isect_memberFormation_alt,  introduction cut sqequalRule sqequalHypSubstitution Error :isect_memberEquality_alt,  isectElimination thin hypothesisEquality axiomEquality hypothesis Error :isectIsTypeImplies,  Error :inhabitedIsType,  Error :universeIsType,  extract_by_obid Error :lambdaEquality_alt,  applyEquality because_Cache Error :functionIsType,  independent_isectElimination universeEquality instantiate

Latex:
\mforall{}[I:Type].  \mforall{}[F:Type  {}\mrightarrow{}  Type].
    \mforall{}[R:(I  {}\mrightarrow{}  corec(T.F[T]))  {}\mrightarrow{}  (I  {}\mrightarrow{}  corec(T.F[T]))  {}\mrightarrow{}  \mBbbP{}]
        \mforall{}[x,y:I  {}\mrightarrow{}  corec(T.F[T])].    x  =  y  supposing  R[x;y] 
        supposing  x,y.R[x;y]  is  an  T.F[T]-bisimulation  (indexed  I) 
    supposing  ContinuousMonotone(T.F[T])



Date html generated: 2019_06_20-PM-01_05_24
Last ObjectModification: 2019_06_20-PM-00_59_24

Theory : co-recursion


Home Index