Module lambda_calculus:let Builds on lambda_calculus:host e ::= ... | let(string, e, e) -------------------------------------------- [Proj-Let] |{e}- let(X, E1, E2) ~~> app(abs(X, E2), E1) eval E1 E11 subst X E11 E2 E eval E V --------------------- [E-Let] eval let(X, E1, E2) V X != Y subst X R E1 S1 subst X R E2 S2 -------------------------------------------- [S-Let-NEq] subst X R let(Y, E1, E2) app(abs(Y, S2), S1) subst X R E1 S1 -------------------------------------------- [S-Let-Eq] subst X R let(X, E1, E2) app(abs(X, E2), S1)
Click on a command or tactic to see a detailed view of its use.
Module lambda_calculus:let. 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]