LKToND introduces excluded middle for equality-left rule
gebner opened this issue · comments
Gabriel Ebner commented
val lk = ProofBuilder.
c( LogicalAxiom( hof"P(a)" ) ).
u( WeakeningLeftRule( _, hof"a=b" ) ).
u( EqualityLeftRule( _, hof"a=b", hof"P(a)", hof"P(b)" ) ).
qed
val nd = LKToND( lk )
Now nd
contains excluded middle (unnecessarily). We should probably handle this using the usual →
-introduction+elimination trick.
Matthias Schlaipfer commented
The same with DefinitionLeftRule. Both fixed in e76b24e.