aboutsummaryrefslogtreecommitdiffhomepage
path: root/plugins/cc
diff options
context:
space:
mode:
authorGravatar Hugo Herbelin <Hugo.Herbelin@inria.fr>2014-10-15 15:48:16 +0200
committerGravatar Hugo Herbelin <Hugo.Herbelin@inria.fr>2014-10-17 12:41:14 +0200
commit251218905daea0838a3738466afa1c278bb3e81b (patch)
tree88170ea32c1b36b4e0ab5a4c0e47f34930421b90 /plugins/cc
parenta53b44aa042cfded28c34205074f194de7e2e4ee (diff)
Fixing a loop in proof reconstruction for congruence (#2447).
Proofs of C t1..tn+1 = C t1..tn+1, even when the terms were syntactically the same, were built by composition of a proof of C t1..tn = C t1..tn with a proof of reflexivity of tn+1. The latter was reduced to showing C t1..tn = C u1..un for C u1..un the canonical representant of C t1..tn in its congruence class. But if some pair ti=ui was derivable by injectivity of the constructor C, it might go back to find a proof of C t1..tn+1 = C t1..tn+1 again, while a simple reflexivity proof was enough here. Not sure that the fix prevents any further loop in this part of the code though.
Diffstat (limited to 'plugins/cc')
-rw-r--r--plugins/cc/ccproof.ml2
1 files changed, 1 insertions, 1 deletions
diff --git a/plugins/cc/ccproof.ml b/plugins/cc/ccproof.ml
index 6177f22f3..ba449e76d 100644
--- a/plugins/cc/ccproof.ml
+++ b/plugins/cc/ccproof.ml
@@ -116,7 +116,7 @@ let build_proof uf=
in ptrans (ptrans pi pij) pj
and constr_proof i t ipac=
- if ipac.args=[] then
+ if ipac.args=[] || i=t then
equal_proof i t
else
let npac=tail_pac ipac in