Step
*
of Lemma
Form-definition
∀[C,A:Type]. ∀[R:A ⟶ Form(C) ⟶ ℙ].
((∀name:Atom. {x:A| R[x;Vname]} )
⇒ (∀value:C. {x:A| R[x;Const(value)]} )
⇒ (∀var:Atom. ∀phi:Form(C). ({x:A| R[x;phi]}
⇒ {x:A| R[x;{var | phi}]} ))
⇒ (∀left,right:Form(C). ({x:A| R[x;left]}
⇒ {x:A| R[x;right]}
⇒ {x:A| R[x;left = right]} ))
⇒ (∀element,set:Form(C). ({x:A| R[x;element]}
⇒ {x:A| R[x;set]}
⇒ {x:A| R[x;element ∈ set]} ))
⇒ (∀left,right:Form(C). ({x:A| R[x;left]}
⇒ {x:A| R[x;right]}
⇒ {x:A| R[x;left ∧ right)]} ))
⇒ (∀left,right:Form(C). ({x:A| R[x;left]}
⇒ {x:A| R[x;right]}
⇒ {x:A| R[x;left ∨ right]} ))
⇒ (∀body:Form(C). ({x:A| R[x;body]}
⇒ {x:A| R[x;¬(body)]} ))
⇒ (∀var:Atom. ∀body:Form(C). ({x:A| R[x;body]}
⇒ {x:A| R[x;∀var. body]} ))
⇒ (∀var:Atom. ∀body:Form(C). ({x:A| R[x;body]}
⇒ {x:A| R[x;∃var. body]} ))
⇒ {∀v:Form(C). {x:A| R[x;v]} })
BY
{ ProveDatatypeDefinition `Form-induction` }
Latex:
Latex:
\mforall{}[C,A:Type]. \mforall{}[R:A {}\mrightarrow{} Form(C) {}\mrightarrow{} \mBbbP{}].
((\mforall{}name:Atom. \{x:A| R[x;Vname]\} )
{}\mRightarrow{} (\mforall{}value:C. \{x:A| R[x;Const(value)]\} )
{}\mRightarrow{} (\mforall{}var:Atom. \mforall{}phi:Form(C). (\{x:A| R[x;phi]\} {}\mRightarrow{} \{x:A| R[x;\{var | phi\}]\} ))
{}\mRightarrow{} (\mforall{}left,right:Form(C). (\{x:A| R[x;left]\} {}\mRightarrow{} \{x:A| R[x;right]\} {}\mRightarrow{} \{x:A| R[x;left = right]\} ))
{}\mRightarrow{} (\mforall{}element,set:Form(C). (\{x:A| R[x;element]\} {}\mRightarrow{} \{x:A| R[x;set]\} {}\mRightarrow{} \{x:A| R[x;element \mmember{} set]\} \000C))
{}\mRightarrow{} (\mforall{}left,right:Form(C). (\{x:A| R[x;left]\} {}\mRightarrow{} \{x:A| R[x;right]\} {}\mRightarrow{} \{x:A| R[x;left \mwedge{} right)]\} ))
{}\mRightarrow{} (\mforall{}left,right:Form(C). (\{x:A| R[x;left]\} {}\mRightarrow{} \{x:A| R[x;right]\} {}\mRightarrow{} \{x:A| R[x;left \mvee{} right]\} ))
{}\mRightarrow{} (\mforall{}body:Form(C). (\{x:A| R[x;body]\} {}\mRightarrow{} \{x:A| R[x;\mneg{}(body)]\} ))
{}\mRightarrow{} (\mforall{}var:Atom. \mforall{}body:Form(C). (\{x:A| R[x;body]\} {}\mRightarrow{} \{x:A| R[x;\mforall{}var. body]\} ))
{}\mRightarrow{} (\mforall{}var:Atom. \mforall{}body:Form(C). (\{x:A| R[x;body]\} {}\mRightarrow{} \{x:A| R[x;\mexists{}var. body]\} ))
{}\mRightarrow{} \{\mforall{}v:Form(C). \{x:A| R[x;v]\} \})
By
Latex:
ProveDatatypeDefinition `Form-induction`
Home
Index