advancedresearch / poi

a pragmatic point-free theorem prover assistant
Apache License 2.0
136 stars 7 forks source link

Handling inconsistency of function equality #1039

Open bvssvni opened 3 years ago

bvssvni commented 3 years ago

In Poi, since constants are defined as "function of something that returns the constant", e.g. \true, it is possible to prove:

true = id
(= true)(id)
idb(id)
id(id)
id

while the following is also provable due to the function inequalities:

true = id
id = true
false

This means that function equality is inconsistent.

For now, reductions rules are added to override into the second case, while (= true) <=> idb is an equivalence. This means that the inconsistency disappears when reductions are applied before equivalences.