Module lambda_calculus:bool Builds on lambda_calculus:host e ::= ... | trueE | falseE | if(e, e, e) -------------------------------------------- [Proj-True] |{e}- trueE ~~> abs("a", abs("b", var("a"))) --------------------------------------------- [Proj-False] |{e}- falseE ~~> abs("a", abs("b", var("b"))) --------------------------------------------- [Proj-If] |{e}- if(Cond, T, F) ~~> app(app(Cond, T), F)
Module lambda_calculus:bool --------------------------------------- [E-True] eval trueE abs("a", abs("b", var("a"))) ---------------------------------------- [E-False] eval falseE abs("a", abs("b", var("b"))) eval app(app(Cond, T), F) V --------------------------- [E-If] eval if(Cond, T, F) V -------------------------------------------- [S-True] subst X R trueE abs("a", abs("b", var("a"))) --------------------------------------------- [S-False] subst X R falseE abs("a", abs("b", var("b"))) subst X R Cond CS subst X R T TS subst X R F FS --------------------------------------------- [S-If] subst X R if(Cond, T, F) app(app(CS, TS), FS)
Click on a command or tactic to see a detailed view of its use.
Module lambda_calculus:bool. Prove_Constraint lambda_calculus:host:proj_is. [Show Proof] Add_Proj_Rel lambda_calculus:host:is_e. Prove_Ext_Ind lambda_calculus:host:is_e. [Show Proof] Prove_Constraint lambda_calculus:host:proj_same. [Show Proof] Prove lambda_calculus:host:subst_exists. [Show Proof] Prove lambda_calculus:host:subst_is. [Show Proof] Prove lambda_calculus:host:eval_is. [Show Proof] Prove lambda_calculus:host:subst_unique. [Show Proof] Prove lambda_calculus:host:eval_unique. [Show Proof] Prove_Constraint lambda_calculus:host:proj_subst. [Show Proof] Prove_Constraint lambda_calculus:host:proj_subst_same. [Show Proof] Prove_Constraint lambda_calculus:host:proj_eval. [Show Proof] Prove_Constraint lambda_calculus:host:proj_eval_same. [Show Proof] Add_Ext_Size lambda_calculus:host:eval. Add_Proj_Rel lambda_calculus:host:eval. Prove_Ext_Ind lambda_calculus:host:eval. [Show Proof]