Call-by-Value Combinatory Logic and the Lambda-Value Calculus

Since it is unsound to reason about call-by-value languages using call-by name equational theories, we present two by-value combinatory logics and translations from the λ-value (λv) calculus to the logics. The first by-value logic is constructed in a manner similar to the λv-calculus: it is based on the byname combinatory logic, but the combinators are strict. The translation is non-standard to account for the strictness of the input program. The second by-value logic introduces laziness to K terms so that the translation can preserve the structure of functions that do not use their argument. Both logics include constants and delta rules, and we prove their equivalence with the λv-calculus.