The source code is available on github .
[ x ] . x ≡ I
[ x ] . U V = C ([ x ] . U ) V if x ∈ F V ( U ) , x ∈ / F V ( V )
[ x ] . U V = B U ([ x ] . V ) if x ∈ / F V ( U ) , x ∈ F V ( V )
B ( BI ) I = I i.e. [ x ] . BI x = [ x ] . x
Why ?
[ v ] . X = [ v ] . I U = BI ([ v ] . U ) = ([ x ] . BI x ) ([ v ] . U ) = ([ x ] . x ) ([ v ] . U ) = [ v ] . U = [ v ] . Y def of abstractions eval th (todo) I-axiom eval th (todo)
C ( BC ( B ( BB ) ( B ( BC ) ( C ( BB ( BC ( B ( BB ) I ))) I )))) I = C ( BB ( BB ( BCI ))) ( C ( BBI ) I ) i.e. [ x , V , Z ] . C ( C ( BB x ) V ) Z = [ x , V , Z ] . C x ( V Z )
C ( BC ( B ( BB ) ( B ( BC ) ( B ( C ( BB ( BBI ))) I )))) I = B ( C ( BB ( BBI ))) ( C ( BB ( BCI )) I ) i.e. [ x , U , Z ] . C ( B ( B U ) x ) Z = [ x , U , Z ] . B U ( C x Z )
B ( C ( BC ( B ( BB ) ( C ( BB ( BBI )) I )))) I = B ( C ( BB ( BBI ))) ( B ( C ( BBI )) I ) i.e. [ x , U , V ] . B ( B U V ) x = [ x , U , V ] . B U ( B V x )
Why ?
Here, we have X = Y with X = B U V Z and Y = U ( V Z ) . We want to show that [ v ] . X = [ v ] . Y . Let’s detail the first case, where v ∈ F V ( U ) and v ∈ / F V ( V ) nor v ∈ / F V ( Z ) .
[ v ] . X = [ v ] . B U V Z = C ([ v ] . B U V ) Z = C ( C ([ v ] . B U ) V ) Z = C ( C ( BB ([ v ] . U )) V ) Z = ([ x , y , t ] . C ( C ( BB x ) y ) t ) ([ v ] . U ) V Z = ([ x , y , t ] . C x ( y t )) ([ v ] . U ) V Z = C ([ v ] . U ) ( V Z ) = [ v ] . U ( V Z ) = [ v ] . Y abstraction def (denoted by ad later on) ad ad eval th (todo) B -axiom 1 eval th (todo) ad
Similar reasonings can be made to find the other axioms.
C ( BC ( B ( BB ) ( B ( BC ) ( C ( BB ( BC ( B ( BC ) I ))) I )))) I = C ( BB ( BC ( B ( BC ) ( C ( BB ( BCI )) I )))) I i.e. [ x , V , Z ] . C ( C ( BC x ) V ) Z = [ x , V , Z ] . C ( C x Z ) V
C ( BC ( B ( BB ) ( B ( BC ) ( B ( C ( BB ( BCI ))) I )))) I = B ( C ( BC ( B ( BB ) ( C ( BBI ) I )))) I i.e. [ x , U , Z ] . C ( B ( C U ) x ) Z = [ x , U , Z ] . B ( U Z ) x
B ( C ( BC ( B ( BB ) ( C ( BB ( BCI )) I )))) I = C ( BC ( B ( BB ) ( B ( BC ) ( B ( C ( BBI )) I )))) I i.e. [ x , U , V ] . B ( C U V ) x = [ x , U , V ] . C ( B Ux ) V
Similar reasonings to the one above.
Justification :
η -rule : for all terms U , [ x ] . Ux = U
as specified above, the rule is an axiom-scheme representing an infinite number of axioms
let’s close it, our closed η -rule is [ u , x ] . ux = [ u ] . u
[ u ] . u = I
[ u , x ] . ux = [ u ] . B u I = C ( BBI ) I
Example : deriving BI = I from ( I + η ) -axioms
C ( BBI ) I ( BI ) Thus BI = I ( BI ) = BI = BBI ( BI ) I = B ( I ( BI )) I = B ( BI ) I = I = I using η -axiom on one hand on the other hand, applying C applying B applying I using I -axiom