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]